GLSL中的均匀和常量; Unity Shader

时间:2015-05-28 13:12:07

标签: opengl unity3d glsl

我在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限定符)

如果有人有兴趣的话,我试图实现高斯模糊

1 个答案:

答案 0 :(得分:-1)

你不能在GLSL中初始化制服。制服与const不同。统一必须从你的c ++ / unity程序中获取值