GPU Effects
Height-map displacement (vertex/tessellation shaders), procedural fBm terrain, slope/height-based texture splatting with blend maps, triplanar mapping for cliffs, LOD (geomipmapping, CDLOD, clipmaps), atmospheric scattering for the sky.
31.1 GPU particle systems
Store particles in SSBOs; a compute shader updates position/velocity/life; emit new particles via an atomic counter; render with instancing or point sprites (gl_PointCoord for round particles); sort for alpha blending (bitonic sort in compute) or use additive blending.
Forces: gravity, curl noise for turbulence, attractors, collisions with depth buffer or SDFs.
31.2 Water
Vertex displacement with sums of Gerstner waves, or FFT ocean (Tessendorf) computed in compute shaders.
Fragment: normal maps scrolling in two directions, Fresnel reflection/refraction (reflection texture from a mirrored camera or SSR), depth-based color absorption, foam where the water meets geometry, caustics.
vec3 gerstner(vec3 p, vec2 dir, float steepness, float wavelength, float t) {
float k = 6.2831853 / wavelength;
float c = sqrt(9.81 / k);
vec2 d = normalize(dir);
float f = k * (dot(d, p.xz) - c * t);
float a = steepness / k;
return vec3(d.x * a * cos(f), a * sin(f), d.y * a * cos(f));
}31.3 Terrain
Height-map displacement (vertex/tessellation shaders), procedural fBm terrain, slope/height-based texture splatting with blend maps, triplanar mapping for cliffs, LOD (geomipmapping, CDLOD, clipmaps), atmospheric scattering for the sky.
31.4 Volumetrics & atmosphere
Volumetric fog/light shafts (ray march in screen space or froxel grids computed in compute shaders), Rayleigh/Mie atmospheric scattering, volumetric clouds (3-D noise textures, Henyey–Greenstein phase function), fire/smoke (fluid simulation on 3-D textures).
31.5 Other effects
Grass/fur (shells, geometry/mesh shaders, instancing with wind), dissolve effects (noise threshold + emissive edge), holograms/force fields (Fresnel + scan lines + depth intersection), outlines, decals, portals, screen-space refraction, text rendering with signed distance field fonts (MSDF):
// SDF font rendering
float dist = texture(uFontAtlas, vUV).r; // 0.5 = glyph edge
float w = fwidth(dist);
float alpha = smoothstep(0.5 - w, 0.5 + w, dist);
outColor = vec4(uTextColor, alpha);