glslsandbox.com 中的 surfacePosition 是什么变化

what is surfacePosition varying in glslsandbox.com

vUv 和 surfacePosition varying 有什么区别?

在 GLSL 沙盒中,varying vec2 surfacePosition 是可滚动、可缩放表面上的一个位置。在其默认位置,y 坐标范围从 -1.01.0x 坐标具有类似的范围,已根据 window 缩放的宽高比。

这在分形渲染器中很有用,允许用户平移和缩放分形。这是一个简单的 Mandelbrot 集。单击左上角的 "hide code" 按钮,然后使用鼠标左键平移和鼠标右键缩放。

http://glslsandbox.com/e#30483.0

uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;

varying vec2 surfacePosition;

const float max_its = 100.;

float mandelbrot(vec2 z){
    vec2 c = z;
    for(float i=0.;i<max_its;i++){
        if(dot(z,z)>4.) return i;
        z = vec2(z.x*z.x-z.y*z.y,2.*z.x*z.y)+c;
    }
    return max_its;
}


void main( void ) {
    vec2 p = surfacePosition;
    gl_FragColor = vec4(mandelbrot(p)/max_its);
}

可以滥用相同的技术来提供 3D 平移和缩放。例如,这是 Mandelbulb。它在您的 GPU 上较重,但隐藏了代码,您也可以平移和缩放它。

http://glslsandbox.com/e#1893.0