我寫在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