[0]layabox / LayaAir提交记录b753ecb68a6c34f62401b1f19e669e5bfc9ccb2a疑问

https://github.com/layabox/Lay ... 618b6
修改记录提交的说明如下:
DefineDatas.ts 修复了宏定义的mask宏定义标签造成的shader编译bug
ShaderPass.ts 修复了shader字符串不根据宏定义做裁剪的bug
匹配编译剔除:shader中自定义的宏不可用ifdef 必须改成if defined
粒子删除没有用到的灯光函数,增加粒子shader编译速度
将所有的shader中都添加shader精度设置 避免数据精度不匹配问题
匹配编译剔除:shader中自定义的宏不可用ifdef 必须改成if defined

对于这条存在疑问,
以下为提交代码
片段1
#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理,而我们的解析是不认内置宏的,导致被删掉,所以改成 if defined 了 
片段2
#if defined(CALCULATE_SPOTSHADOWS)//shader中自定义的宏不可用ifdef 必须改成if defined
 
片段3
#ifdef SPOTLIGHT
#ifdef CALCULATE_SPOTSHADOWS
等#ifdef
  
关于片段1中提取的信息为"内置宏,需用if defined"
片段2中提取到"自定义宏,需用if defined"
 问题:
1.如何知道某个宏是否是"自定义宏"或者"内置宏"?
2.“SPOTLIGHT”为Scene3D中Scene3DShaderDeclaration.SHADERDEFINE_SPOTLIGHT = Shader3D.getDefineByName("SPOTLIGHT");所加的宏,这个应该属于自定义宏,为什么不需要用if defined,反而是用#ifdef?
已邀请:

要回复问题请先

商务合作
商务合作