我正在制作一款游戏,我正在编写一个着色器来反映来自对象的光线,并且我不断收到错误消息:
错误:0:25:' - '不适用于' vec3'和' vec4'
fragmentShader文件:
vec3 unitVectorToCamera = normalize(toCameraVector);
vec3 lightDirection = -unitLightVector;
vertexShader文件:
toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition;
版本:
#version 400 core
非常感谢任何帮助。
答案 0 :(得分:3)
(inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz
返回vec3(x,y,z) - 并尝试减去worldPosition
,类型为vec4。
您可以将其更改为:
toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition.xyz;
答案 1 :(得分:0)
toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition;
worldPosition
是vec4,vec4(0.0, 0.0, 0.0, 1.0)).xyz
是vec3。不允许从vec3中减去vec4。