Voltar aos presets
Signed distance field density source
Fixed upper-bound ray-marching loop
Adaptive step size based on local density
Camera-space aspect correction with u_resolution

Esfera de névoa

Em Esfera de névoa Volume Shader, a seção “Preset overview” foca em: Orbiting fog around a sphere via simple raymarch.. Ela ajuda a entender complexidade do shader, caminho gráfico do navegador e estabilidade da GPU.

Em testes reais, fixe navegador, preset, tamanho da janela, energia e estado térmico. Se o dispositivo aquecer ou travar, reduza a complexidade ou pare o teste.

Fatores de desempenho

Ray steps

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Adaptive stepping

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Resolution

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Parâmetros editáveis

Sphere radius

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Density multiplier

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Step distance

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

#version 300 es
precision highp float;

out vec4 outColor;
in vec2 v_uv;

uniform float u_time;
uniform vec2 u_resolution;

// Simple fake volumetric fog via raymarch toward a sphere
float sdSphere(vec3 p, float r) { return length(p) - r; }

float map(vec3 p) {
  // Central sphere as density source
  float d = sdSphere(p, 0.7);
  return d;
}

vec3 rayDir(vec2 uv, float fov) {
  vec2 xy = uv * 2.0 - 1.0;
  xy.x *= u_resolution.x / u_resolution.y;
  float z = 1.0 / tan(radians(fov) * 0.5);
  return normalize(vec3(xy, z));
}