czm_viewportTransformation

czm_viewportTransformation

An automatic GLSL uniform representing a 4x4 transformation matrix that transforms normalized device coordinates to window coordinates. The context's full viewport is used, and the depth range is assumed to be near = 0 and far = 1.

This transform is useful when there is a need to manipulate window coordinates in a vertex shader as done by BillboardCollection. In many cases, this matrix will not be used directly; instead, czm_modelToWindowCoordinates will be used to transform directly from model to window coordinates.

Do not confuse czm_viewportTransformation with czm_viewportOrthographic. The former transforms from normalized device coordinates to window coordinates; the later transforms from window coordinates to clip coordinates, and is often used to assign to gl_Position.

Like all automatic uniforms, czm_viewportTransformation does not need to be explicitly declared. However, it can be explicitly declared when a shader is also used by other applications such as a third-party authoring tool.

Example
// GLSL declaration
uniform mat4 czm_viewportTransformation;

// Use czm_viewportTransformation as part of the
// transform from model to window coordinates.
vec4 q = czm_modelViewProjection * positionMC;               // model to clip coordinates
q.xyz /= q.w;                                                // clip to normalized device coordinates (ndc)
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // ndc to window coordinates
See:
Source: