最新的3.5.1
我要写shader的溶解效果,现在实现了两种溶解算法,DissolveFunction, DoubleDissolveFunction。
为了特效同学的方便,我做成了选择标签
#pragma define-meta DissolveModeFunc options([DissolveFunction, DoubleDissolveFunction])
定义了两个方法
vec4 DissolveFunction(vec4 c, float dissolveTex, float dissolve, float hardness, float width, vec4 WidthColor) {}
vec4 DoubleDissolveFunction(vec4 c, float dissolveTex, float dissolve,float hardness,float width, vec4 WidthColor) {}
// 后面用这个宏去选择方法
DissolveModeFunc(finalColor, dissolveT, dissolveParams.y, dissolveParams.z, dissolveParams.w, dissolveWidthColor);
效果长这个样子
结果编辑器报错
ERROR: 0:68: ‘DissolveFunction’ : no matching overloaded function found
我翻了下编辑器给的报错详情,发现编译出来的shader中,宏定义确实有,但DissolveFunction和DoubleDissolveFunction这两个方法确实没有。
我理解这些方法被裁切的原因,一堆#include,不裁切整个shader就巨大,这是合理的。
所以现在的问题是,我要怎么做才能让我写的这两个方法不被编译裁切掉?还是说现阶段做不到
@panda
