我写在GLSL着色器的团结和我遇到,我无法找到一个解释一个怪癖:GLSL中的统一和常量;统一着色器
在ShaderLab SubShader通行证,我宣布GLSLPROGAM ENDPROGRAM外内vec3s主要功能
const vec3 binomial_offsets = vec3(0.0, 1.3846153846, 3.2307692308);
const vec3 binomial_weights = vec3(0.2270270270, 0.3162162162, 0.0702702703);
这个编译好。 然而,当我与统一更换常量,例如:
uniform vec3 binomial_offsets = vec3(0.0, 1.3846153846, 3.2307692308);
uniform vec3 binomial_weights = vec3(0.2270270270, 0.3162162162, 0.0702702703);
统一抱怨有:
GLSL shader load error (stage 1 shader 40):
ERROR: 0.40: Initializer not allowed
有人能告诉我什么统一和const的区别是GLSL的情况下(我熟悉C/C++)
我想实现的方式高斯模糊,如果有人有兴趣const限定符
你正在使用哪种版本的GLSL?制服的初始化程序从GLSL 1.20(http://ogltotd.blogspot.co.uk/2007/12/default-uniform-values.html) – GuyRT
不知道。无论哪种版本是我猜想的默认值。我从来没有试过玩过一些版本宏 – Lancophone
@GuyRT我试过版本规范,但Unity抱怨:'GLSL着色器加载错误(阶段1着色器43):错误:0.108:“:#version必须发生在任何其他语句之前在程序中,我只是在GLSLPROGRAM下,所以我不太确定程序中'第一条语句'的位置是什么? – Lancophone