glslsandbox.com 中的 surfacePosition 是什么变化
what is surfacePosition varying in glslsandbox.com
vUv 和 surfacePosition varying 有什么区别?
在 GLSL 沙盒中,varying vec2 surfacePosition
是可滚动、可缩放表面上的一个位置。在其默认位置,y
坐标范围从 -1.0
到 1.0
,x
坐标具有类似的范围,已根据 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 上较重,但隐藏了代码,您也可以平移和缩放它。
vUv 和 surfacePosition varying 有什么区别?
在 GLSL 沙盒中,varying vec2 surfacePosition
是可滚动、可缩放表面上的一个位置。在其默认位置,y
坐标范围从 -1.0
到 1.0
,x
坐标具有类似的范围,已根据 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 上较重,但隐藏了代码,您也可以平移和缩放它。