我正在尝试将片段着色器转换为顶点着色器(以进行移动端优化)。
如下图所示,中心和右侧边缘的顶点存在问题。(这是一个具有11 x 11个顶点平面)
UV目前从右侧映射,并绕中心旋转。我猜测中间一半的多个顶点具有相同的值,这可能会创建一个洞?
然后右侧会将第一个UV值淡化到最终值,从而创建拉伸效果。
问题是如何覆盖或修复它们。(它们可能是2个不同的问题?)
如下图所示,中心和右侧边缘的顶点存在问题。(这是一个具有11 x 11个顶点平面)
UV目前从右侧映射,并绕中心旋转。我猜测中间一半的多个顶点具有相同的值,这可能会创建一个洞?
然后右侧会将第一个UV值淡化到最终值,从而创建拉伸效果。
问题是如何覆盖或修复它们。(它们可能是2个不同的问题?)
![kaleidoscope vertex shader](https://istack.dev59.com/TuVDy.webp)
uniform vec2 _Offset;
uniform float _Multiply;
varying vec4 position;
varying vec4 vert;
varying vec2 tex;
varying vec2 uv;
varying float ar;
#ifdef VERTEX
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vec2 p = -1.0 + 2.0 * tex.xy;
float a = atan(p.y,p.x) ;
float r = sqrt(dot(p,p));
uv.x = _Multiply*a/3.1416 * 2.0 + 0.1;
float sx = sin(_Multiply*r+_Offset.x);
float sy = _Multiply*.1*cos(_Offset.y+_Multiply*a);
uv.y = -_Offset.x + sx + sy;
}
#endif
#ifdef FRAGMENT
uniform sampler2D _MainTex;
void main(void)
{
gl_FragColor = texture2D(_MainTex,uv*.5);
}
#endif
ENDGLSL