vUv与surfacePosition有何不同?
答案 0 :(得分:1)
在GLSL Sandbox中,varying vec2 surfacePosition
是可滚动,可缩放曲面上的位置。在默认位置,y
坐标范围从-1.0
到1.0
,x
坐标的范围类似于根据窗口的宽高比进行缩放。< / 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上比较重,但隐藏代码你可以平移和放大放大这个。