Shaders

Snow
Ice
Water
Rain
Sun Beams
  • These are accomplished with a radial blur centered on the sun, during postprocessing. The nice thing about this effect is how dynamic it is. As you walk beneath the trees, the shape and intensity of the beams constantly change.

Fog
// Linearize the depth factor
depth = (1 - far/near) * depth + (far/near);
depth = 1.0 / depth;

// Multiply by the far clipping plane distance.
depth *= far;
// This results in the `view_distance`.
view_distance = depth;
  • 3 possible formulas:

    • .

    • Linear.

    • Exponential.

    • Exponential Squared.

      • This one is recommended because it has a nice effect.

Spatial
Grass
  • Instantiate grass and make it billboarded .

    • He does not show any code, but says he uses the following things:

      1. Instantiates objects evenly on the terrain, 'somehow'.

        • I believe the same method he used to 'instance foliage on a tree' is used.

      2. Makes the objects have size variation and so on, to give variety and the impression of more organic foliage.

      3. Accesses the position of each blade and makes it have Y-Billboarding, 'somehow'.

      4. The color of each blade is based on the color of the terrain below where it was instanced.

        • This was done by placing a camera above the terrain, so that what it sees is used as a sample.

    • No grass interacts with physics.

  • Grass movement, considering the presence of the player .

Foliage
See-through
Cut-off
Screen Filters
2D Dissolve
2D Water
2D Wind
2D Physics Rendering
2D Etc
Particles
Scene Transitions
Techniques

PS1

  • PS1 Graphics {10:56} - Acerola .

    • The start of the video gives an overview of graphics pipelines and transformation matrices.

      • The explanation is ultra rushed and makes it seem much more complicated than it is.

    • PS1 used a 2D renderer and had some limitations:

      • Affine Texture Mapping

        • Modern GPUs do not have this issue as they can properly interpolate perspective-correct values, since they are meant to render 3D scenes.

        • To simulate this we multiply the UV coordinates by w in the vertex shader and in the fragment shader we divide by w to reverse the perspective correction applied during interpolation in rasterization.

          • The distortion effect can be really severe, but using meshes with higher polygon count reduces the effect.

          • A tessellation shader could correct this distortion almost entirely, but since we want the effect, we'll keep it as is.

      • Integer coordinate restriction.

        • To simulate this, a vertex shader is used to snap to the nearest value based on the screen resolution.

    • For lighting, we'll use vertex lighting.

      • This means we can only have a single light source.

      • We'll use this for ambient occlusion.

    • Fog is made...

    • For color, we convert the default 16-bit color to 5-bit color:

      • .

      • From [0,255]  to [0,31] .

    • Finally, a dither is applied to reduce the color banding caused by 5-bit colors.

  • PS1 Graphics - Implementation by Acerola in Godot .

    • Cool. Can be used as a guide. It is less formal and confusing than Acerola.

  • PS1 Texturing Tip .

    • The only relevant part of the video is the technique to make the truck's texture, and nothing else.

Pixel Art

Sources
  • t3ssel8r .

    • Often attributes much more mathematics than necessary to certain topics, with little focus on design dilemmas, and a lot of focus on mathematical over-complication.

    • Clearly a mathematician inspired by 3Blue1Brown.

    • Often flexes about the time spent on certain tasks; there is a big ego.

  • Voyage .

  • aarthificial .

Fixing the "shimmering artifact"
Camera Smoothness
Etc