WebGL片段着色器是否支持outerProduct?

问题描述 投票:1回答:3

[同时在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片段着色器不支持externalProduct,还是我做错了?

matrix opengl-es-2.0 webgl fragment-shader
3个回答
2
投票

[OpenGL ES 2.0 GLSL中没有outerProduct函数。你在哪里读的? (还是我想念它?)

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


0
投票

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

展开,也许给它一个显式类型比使用.rgb好。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.