Graphics Reference
In-Depth Information
offline binary format with no link step required at runtime. This can
potentially help reduce the load time of applications. Additionally,
OpenGL ES 3.0 provides an interface to retrieve the program binary
from the driver so no offline tools are required to use program
binaries.
• Mandatory online compiler—OpenGL ES 2.0 made it optional
whether the driver would support online compilation of shaders. The
intent was to reduce the memory requirements of the driver, but this
achievement came at a major cost to developers in terms of having to
rely on vendor-specific tools to generate shaders. In OpenGL ES 3.0, all
implementations will have an online shader compiler.
• Non-square matrices—New matrix types other than square matrices
are supported, and associated uniform calls were added to the API to
support loading them. Non-square matrices can reduce the instruction
count required for performing transformations. For example, if
performing an affine transformation, a 4 × 3 matrix can be used in
place of a 4 × 4 where the last row is (0, 0, 0, 1), thus reducing the
instructions required to perform the transformation.
• Full integer support—Integer (and unsigned integer) scalar and vector
types, along with full integer operations, are supported in ESSL 3.00.
There are various built-in functions such as conversion from int to
float, and from float to int, as well as the ability to read integer values
from textures and output integer values to integer color buffers.
• Centroid sampling—To avoid rendering artifacts when multisampling,
the output variables from the vertex shader (and inputs to the
fragment shader) can be declared with centroid sampling.
• Flat/smooth interpolators—In OpenGL ES 2.0, all interpolators were
implicitly linearly interpolated across the primitive. In ESSL 3.00,
interpolators (vertex shader outputs/fragment shader inputs) can be
explicitly declared to have either smooth or flat shading.
• Uniform blocks—Uniform values can be grouped together into
uniform blocks. Uniform blocks can be loaded more efficiently and
also shared across multiple shader programs.
• Layout qualifiers—Vertex shader inputs can be declared with layout
qualifiers to explicitly bind the location in the shader source without
requiring making API calls. Layout qualifiers can also be used for
fragment shader outputs to bind the outputs to each target when
rendering to multiple render targets. Further, layout qualifiers can be
used to control the memory layout for uniform blocks.
 
Search WWH ::




Custom Search