Shaders[edit | edit source]

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.

Structures[edit | edit source]

lightSource[edit | edit source]

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

Attributes[edit | edit source]

vec4 mc_Entity[edit | edit source]

mc_Entity.x[edit | edit source]

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.

mc_Entity.y[edit | edit source]

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).

mc_Entity.z[edit | edit source]

Reserved

mc_Entity.w[edit | edit source]

Reserved

Uniforms[edit | edit source]

There are several uniforms available to the shaders.

Global Uniforms[edit | edit source]

float displayWidth[edit | edit source]

The width of the display.

float displayHeight[edit | edit source]

The height of the display.

float aspectRatio[edit | edit source]

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

float near[edit | edit source]

The near viewing plane.

float far[edit | edit source]

The far viewing plane.

int fogMode[edit | edit source]

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

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

float sunVector[edit | edit source]

The position of the sun in eye coordinates.

float moonVector[edit | edit source]

The position of the moon in eye coordinates.

int worldTime[edit | edit source]

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

lightSource heldLight[edit | edit source]

The properties of the item currently being held.

Base Uniforms[edit | edit source]

sampler2D sampler0[edit | edit source]

The texture of the current element.

sampler2D sampler1[edit | edit source]

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[edit | edit source]

Hacked[edit | edit source]

sampler2D sampler1[edit | edit source]

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

sampler2D sampler2[edit | edit source]

The depth of the player's arm.

Tips[edit | edit source]

Anti-Aliasing[edit | edit source]

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..

Community content is available under CC-BY-SA unless otherwise noted.