在着色器中裁剪 sampler2D
Clipping a sampler2D in shader
在 return texture2D 之前,我试图在着色器中从加载的 sampler2D 纹理中剪裁或剪切左侧。
目前我在传递给着色器之前进行纹理编辑,但这种情况在一帧中发生多次,这会降低性能。纹理编辑可以在着色器中完成吗?
我先传递纹理:
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas);
然后在着色器中将其用作制服..
我会在片段着色器或顶点着色器中剪辑它吗?
clip the texture
是什么意思?你不剪辑纹理。你从纹理中读取数据并决定你想用这些数据做什么。例子
// don't draw anything if the texture coords reference the right half
// of the texture.
if (someTexCoords.x > 0.5) {
discard;
}
gl_FragCoord = texture2D(someSampler, someTexCoords);
或者
// Draw red if texture coords access the right half of the texture
vec4 texColor = texture2D(someSampler, someTexCoords);
gl_FragCoord = mix(texColor, vec4(1,0,0,1), step(0.5, someTexCoords.x));
等..
在 return texture2D 之前,我试图在着色器中从加载的 sampler2D 纹理中剪裁或剪切左侧。
目前我在传递给着色器之前进行纹理编辑,但这种情况在一帧中发生多次,这会降低性能。纹理编辑可以在着色器中完成吗?
我先传递纹理:
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas);
然后在着色器中将其用作制服.. 我会在片段着色器或顶点着色器中剪辑它吗?
clip the texture
是什么意思?你不剪辑纹理。你从纹理中读取数据并决定你想用这些数据做什么。例子
// don't draw anything if the texture coords reference the right half
// of the texture.
if (someTexCoords.x > 0.5) {
discard;
}
gl_FragCoord = texture2D(someSampler, someTexCoords);
或者
// Draw red if texture coords access the right half of the texture
vec4 texColor = texture2D(someSampler, someTexCoords);
gl_FragCoord = mix(texColor, vec4(1,0,0,1), step(0.5, someTexCoords.x));
等..