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
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
Like all automatic uniforms,
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
