Dax's Wiki


The active shaders should be located in the contents/files/shaders folder. There are four shaders that can be used. The outputs of the base shaders are sent to the final shaders in the form of textures.



struct lightSource {
    int itemId;
    float magnitude;
    vec4 specular;


vec4 mc_Entity[]


The x component of mc_Entity is the entity id. Currently this is only set for blocks. In future updates it will be set for items and mobs. It will have a value of -1.0 for unknown entities.


The y component of mc_Entity contains information regarding lighting. It is currently calculated as lightValue * 16 + brightness. In future updates other additions may be made to this (such as the sides exposed to the sky).

In the shaders, lightValue can be obtained by mod(floor(mc_Entity.y / 16.0), 16.0). brightness can be obtained by mod(mc_Entity.y, 16.0).






There are several uniforms available to the shaders.

Global Uniforms[]

float displayWidth[]

The width of the display.

float displayHeight[]

The height of the display.

float aspectRatio[]

The aspect ratio of the display (displayWidth / displayHeight).

float near[]

The near viewing plane.

float far[]

The far viewing plane.

int fogMode[]

The current fog mode. The possible values are as follows:

const int GL_LINEAR = 9729;
const int GL_EXP = 2048;

float sunVector[]

The position of the sun in eye coordinates.

float moonVector[]

The position of the moon in eye coordinates.

int worldTime[]

The world time of day (ranges from 0 to 23999).

lightSource heldLight[]

The properties of the item currently being held.

Base Uniforms[]

sampler2D sampler0[]

The texture of the current element.

sampler2D sampler1[]

The normals and height-map for the current texture (loaded from XXXXX_nh.png). At the moment this is only accurate when renderType is equal to RENDER_TYPE_TERRAIN.

int renderType

Type of rendering: renderType is equal to 0 for items, entities, signs, water, ice etc., renderType is equal to 1 for blocks.

Final Uniforms[]


sampler2D sampler1[]

The depth of the rendered scene, excluding the player's arm.

sampler2D sampler2[]

The depth of the player's arm.



To avoid anti-aliasing on polygon edges, texture coordinates should be declared as centroid in the base vertex and fragment shaders. AA form is in FXAA 2x 4x & 8x.

☀Fast Approximate Anti-Aliasing

This AA method analyzes the pixel on the screen and ignores polygons and lines in a pre buffered frame..