Graphics Reference
In-Depth Information
hardware (up to the Direct3D 10.1 feature level). Whether such hardware is present or not
is conveniently abstracted from the developer by Direct3D.
Both of these situations greatly benefit the developer. As long as an application can
properly interact with Direct3D 11, it will have access to a standardized rendering system,
as well as support for whatever devices are present in the system, regardless of if they are
hardware- or software-based devices.
1.2 Pipeline
Arguably, the most important concept required for understanding Direct3D 11 is a
clear understanding of its pipeline configuration. The Direct3D 11 specification de-
fines a conceptual processing pipeline to perform rendering computations, and ulti-
mately, to produce a rendered image. The term pipeline is used since data "flows" into
the pipeline, is processed in some way at each stage throughout the pipeline, and then
"flows" out of the pipeline. Over the past few iterations of the API, several changes
have been made to the pipeline to both simplify it and add additional functionality to it.
The pipeline concept itself is composed of a number of stages, which each perform dis-
tinctly different operations. Data passed into each stage is processed in some fashion before
being passed on to the next stage. Each individual stage provides a unique configurable
set of parameters that can be controlled by the developer to customize what processing is
performed. Some of the stages are referred to as fixed-function stages, which offer a limited
customization capability. These stages typically expose a state object, which can be bound
with the desired new configuration as needed.
The other stages are referred to as programmable stages, which provide a signifi-
cantly broader configuration capacity by allowing custom programs to be executed within
them. These programs are typically referred to as shader programs, and the stages are
referred to as programmable shader stages. Instead of performing a fixed set of operations
on the data that is passed into it, these programmable shader stages can implement a wide
range of different functions.
It is these shader programs that provide the most flexibility for implementing cus-
tom rendering and computational algorithms. Each programmable shader stage provides a
common feature set, called the common shader core, to provide some level of uniformity
in its abilities. These features can be thought of as a toolbox that is available to all of the
programmable shader stages. Operations like texture sampling, arithmetic instruction sets,
and so on are all common among all of the programmable stages. However, each stage
also provides its own unique functionality, either in its instruction set or in its input/output
semantics, to allow distinct types of operations to be performed.
Search WWH ::




Custom Search