首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >vec3复杂错误:从vec4到GLSL的隐式转换

vec3复杂错误:从vec4到GLSL的隐式转换
EN

Stack Overflow用户
提问于 2018-12-12 20:57:08
回答 1查看 626关注 0票数 0

不必要的vec4() vec3()只是为了调试问题。

完全错误:

0(36):错误C7011:从"vec4“隐式强制转换为"vec3”

0(36):错误C1035:分配不兼容的类型

代码:

代码语言:javascript
复制
#version 330

in vec2 pass_textureCoords;
in vec3 surfaceNormal;
in vec3 toLightVector;
in vec3 toCameraVector;
in vec3 visibility;

out vec4 out_Color;

uniform sampler2D textureSampler;
uniform vec3 lightColor;
uniform float shineDamper;
uniform float reflectivity;
uniform vec3 skyColor;

void main(void) {

    vec3 unitNormal = normalize(surfaceNormal);
    vec3 unitLightVector = normalize(toLightVector);

    float nDotl = dot(unitNormal, unitLightVector);
    float brightness = max(nDotl, 0.2);
    vec3 diffuse = brightness * lightColor;

    vec3 unitVectorCameraVector = normalize(toCameraVector);
    vec3 lightDirection = -unitLightVector;
    vec3 reflectedLightDirection = reflect(lightDirection, unitNormal);

    float specularFactor = dot(reflectedLightDirection, unitVectorCameraVector);
    specularFactor = max(specularFactor, 0.0);
    float dampedFactor = pow(specularFactor, shineDamper);
    vec3 finalSpecular = dampedFactor * reflectivity *lightColor;

    out_Color = vec4(diffuse, 1.0) * texture(textureSampler, pass_textureCoords) + vec4(finalSpecular, 1.0);
    out_Color = mix(vec4(skyColor, 1.0), vec4(out_Color), visibility);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-12 21:14:31

问题是您正在使用vec3作为mix()的第三个参数。这是不正确的,因为它只能与其他参数的类型相同:vec4()或use primitive类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53743550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档