【问题标题】:Do WebGL fragment shaders support outerProduct?WebGL 片段着色器是否支持 outerProduct?
【发布时间】:2012-10-01 23:21:58
【问题描述】:

在 Chrome 22 和 Firefox 15 中编译此 WebGL 片段着色器时:

precision mediump float;
uniform vec2 u_resolution;
uniform sampler2D u_tex;
void main() {
    vec2 texCoord = gl_FragCoord.xy / u_resolution;
    vec4 floatColor = texture2D(u_tex, texCoord);
    mat3 outerMat = outerProduct(floatColor.rgb,floatColor.rgb);
    gl_FragColor = vec4(outerMat[0], 1);  
}

我收到此错误:

ERROR: 0:8: 'outerProduct' : no matching overloaded function found
ERROR: 0:8: '=' :  cannot convert from 'const mediump float' to '3X3 matrix of float'

OpenGL ES 2.0 GLSL 规范表明支持 mat3 outerProduct(vec3,vec3),而 WebGL 规范说它接受 ES 着色器,所以我不确定出了什么问题。 WebGL 片段着色器不支持 outerProduct,还是我做错了什么?

【问题讨论】:

    标签: matrix opengl-es-2.0 webgl fragment-shader


    【解决方案1】:

    OpenGL ES 2.0 GLSL 中没有outerProduct 函数。你在哪里读到的? (还是我错过了?)

    这是规格 http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf

    【讨论】:

    【解决方案2】:

    试试mat3 outerMat = outerProduct(vec3(floatColor.rgb),vec3(floatColor.rgb));

    为了扩展,也许给它一个显式类型比使用 .rgb 更好。

    【讨论】:

      【解决方案3】:

      它现在可用于 webGL2。 在此处检查您的系统:https://webglreport.com/?v=2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多