我在GLSL中为Unity编写着色器,而且我遇到了一个我无法找到解释的怪癖:
在ShaderLab SubShader Pass中,我在GLSLPROGAM ENDPROGRAM中声明了vec3s并且在主函数之外
mLoader.DisplayImage(mylink + ArrayListComment.get(position).getImage(), holder.imageView);
}
if(ArrayListComment.get(position).getImage().contains(".png") {
mLoader.DisplayImage(ArrayListComment.get(position).getImage(), holder.imageView);
}
编译好。 但是,当我用制服替换const时,例如:
const vec3 binomial_offsets = vec3(0.0, 1.3846153846, 3.2307692308);
const vec3 binomial_weights = vec3(0.2270270270, 0.3162162162, 0.0702702703);
Unity抱怨:
uniform vec3 binomial_offsets = vec3(0.0, 1.3846153846, 3.2307692308);
uniform vec3 binomial_weights = vec3(0.2270270270, 0.3162162162, 0.0702702703);
有人可以告诉我,在GLSL的背景下,uniform和const之间的区别是什么(我熟悉C / C ++中的const限定符)
如果有人有兴趣的话,我试图实现高斯模糊
答案 0 :(得分:-1)
你不能在GLSL中初始化制服。制服与const不同。统一必须从你的c ++ / unity程序中获取值