Expand description
SPIR-V Instrinics
This module is intended as a low level abstraction over SPIR-V instructions. These functions will typically map to a single instruction, and will perform no additional safety checks beyond type-checking.
Traits
- Index into an array without bounds checking.
Functions
- Result is true if all components of
vector
is true, otherwise result is false. - Blocks execution of all threads in a group until all memory accesses have been completed.
- Blocks execution of all threads in a group until all memory accesses have been completed and all threads in the group have reached this call.
- Result is true if any component of
vector
is true, otherwise result is false. - Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Perform the following steps atomically with respect to any other atomic accesses within
SCOPE
to the same location: - Atomically load through
ptr
using the givenSEMANTICS
. All subparts of the value that is loaded are read atomically with respect to all other atomic accesses to it withinSCOPE
. - Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Atomically store through
ptr
using the givenSEMANTICS
. All subparts ofvalue
are written atomically with respect to all other atomic accesses to it withinSCOPE
. - Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Perform the following steps atomically with respect to any other atomic accesses within Scope to the same location:
- Wait for other invocations of this module to reach the current point of execution.
- Returns the partial derivative of
component
with respect to the window’s X coordinate. Returns the same result as eitherddx_fine
orddx_coarse
, selection of which one is dependent on external factors. - Returns the partial derivative of
component
with respect to the window’s X coordinate. Uses local differencing based on the value ofcomponent
for the current fragment’s neighbors, and possibly, but not necessarily, includes the value ofcomponent
for the current fragment. That is, over a given area, the implementation can compute X derivatives in fewer unique locations than would be allowed byddx_fine
. - Returns the partial derivative of
component
with respect to the window’s X coordinate. Uses local differencing based on the value ofcomponent
for the current fragment’s neighbors, and possibly, but not necessarily, includes the value ofcomponent
for the current fragment. That is, over a given area, the implementation can compute X derivatives in fewer unique locations than would be allowed byddx_fine
. - Returns the partial derivative of
component
with respect to the window’s X coordinate. Uses local differencing based on the value ofcomponent
for the current fragment and its immediate neighbor(s). - Returns the partial derivative of
component
with respect to the window’s X coordinate. Uses local differencing based on the value ofcomponent
for the current fragment and its immediate neighbor(s). - Returns the partial derivative of
component
with respect to the window’s X coordinate. Returns the same result as eitherddx_fine
orddx_coarse
, selection of which one is dependent on external factors. - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Returns the same result as eitherddy_fine
orddy_coarse
, selection of which one is dependent on external factors. - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Uses local differencing based on the value ofcomponent
for the current fragment’s neighbors, and possibly, but not necessarily, includes the value ofcomponent
for the current fragment. That is, over a given area, the implementation can compute Y derivatives in fewer unique locations than would be allowed byddy_fine
. - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Uses local differencing based on the value ofcomponent
for the current fragment’s neighbors, and possibly, but not necessarily, includes the value ofcomponent
for the current fragment. That is, over a given area, the implementation can compute Y derivatives in fewer unique locations than would be allowed byddy_fine
. - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Uses local differencing based on the value ofcomponent
for the current fragment and its immediate neighbor(s). - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Uses local differencing based on the value ofcomponent
for the current fragment and its immediate neighbor(s). - Returns the partial derivative of
component
with respect to the window’s Y coordinate. Returns the same result as eitherddy_fine
orddy_coarse
, selection of which one is dependent on external factors. - Demote fragment shader invocation to a helper invocation. Equivalvent to
discard()
in HLSL. Any stores to memory after this instruction are suppressed and the fragment does not write outputs to the framebuffer. - Blocks execution of all threads in a group until all device memory accesses have been completed.
- Blocks execution of all threads in a group until all device memory accesses have been completed and all threads in the group have reached this call.
- Emits the current values of all output variables to the current output primitive. After execution, the values of all output variables are undefined.
- Emits the current values of all output variables to the current output primitive. After execution, the values of all output variables are undefined. Requires capability
Geometry
. - Finish the current primitive and start a new one. No vertex is emitted. Requires capability
Geometry
. - Finish the current primitive and start a new one. No vertex is emitted.
- Invoke a callable shader.
- Returns the sum of the absolute values of
ddx_coarse
andddy_coarse
as a single operation. - Returns the sum of the absolute values of
ddx_coarse
andddy_coarse
as a single operation. - Ignores the current potential intersection, terminating the invocation that executes it, and continues the ray traversal. This instruction is allowed only in
any_hit
execution model. - Returns
true
if the invocation is currently a helper invocation, otherwise result isfalse
. An invocation is currently a helper invocation if it was originally invoked as a helper invocation or if it has been demoted to a helper invocation by demote_to_helper_invocation. - Fragment-shader discard. Equivalvent to
discard()
from GLSL - Control the order that memory accesses are observed.
- Reports an intersection back to the traversal infrastructure.
- Compute the maximum of two signed integers via a GLSL extended instruction.
- Compute the minimum of two signed integers via a GLSL extended instruction.
- Terminates the invocation that executes it, stops the ray traversal, accepts the current hit, and invokes the
closest_hit
execution model (if active). This instruction is allowed only in theany_hit
execution model. - Compute the maximum of two unsigned integers via a GLSL extended instruction.
- Compute the minimum of two unsigned integers via a GLSL extended instruction.
- Extract a single, dynamically selected, component of a vector.
- Make a copy of a vector, with a single, variably selected, component modified.
- Blocks execution of all threads in a group until all group shared accesses have been completed.
- Blocks execution of all threads in a group until all group shared accesses have been completed and all threads in the group have reached this call.