什么是surfacePosition在glslsandbox.com中有所不同

时间:2016-02-25 03:49:26

标签: glsl shader

vUv与surfacePosition有何不同?

1 个答案:

答案 0 :(得分:1)

在GLSL Sandbox中,varying vec2 surfacePosition是可滚动,可缩放曲面上的位置。在默认位置,y坐标范围从-1.01.0x坐标的范围类似于根据窗口的宽高比进行缩放。< / p>

这在分形渲染器中很有用,允许用户平移和播放。缩放分形。这是一个简单的Mandelbrot Set。单击左上角的“隐藏代码”按钮,然后使用鼠标左键平移和右键鼠标进行缩放。

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);
}

可以滥用相同的技术来提供pan&amp;放大3D。例如,这是Mandelbulb。它在你的GPU上比较重,但隐藏代码你可以平移和放大放大这个。

http://glslsandbox.com/e#1893.0