@@ -26,9 +26,6 @@ geometry (among other topics).
2626How clustered geometry gets exposed in D3D overall is to be determined but this document is
2727certainly a part: a proposal for the HLSL operations needed for clustered geometry.
2828
29-
30- ---
31-
3229## Motivation
3330
3431Clustered Geometry refers to a building block for Bottom Level Acceleration Structures
@@ -41,12 +38,8 @@ This isn't an index into the clusters in a given BLAS but rather an ID assigned
4138the user for each cluster in a BLAS. Different BLASs could reuse simmilar building blocks, and
4239thus share cluster ID.
4340
44- ---
45-
4641## HLSL
4742
48- ---
49-
5043### Enums
5144
5245``` C
@@ -62,14 +55,10 @@ Value | Definition
6255----- | ----
6356` CLUSTER_ID_INVALID ` | Returned if a BLAS was intersected that was not constructed from CLAS
6457
65- ---
66-
6758### DXR 1.0 System Value Intrinsics
6859
6960A new DXR System Value Intrinsic is added to support fetching the ` ClusterID ` of an intersected CLAS.
7061
71- ---
72-
7362#### ClusterID
7463
7564``` C
@@ -83,19 +72,15 @@ is returned.
8372The following table shows which shaders can access it:
8473| **values \\ shaders** | ray generation | intersection | any hit | closest hit | miss | callable |
8574|:---------------------------------------------------------:|:--------------:|:------------:|:-------:|:-----------:|:----:|:--------:|
86- | *Primitive/object space system values:* | | | | | | |
87- | uint [ClusterID()](#clusterid) | | | \* | \* | | |
88-
89- ---
75+ | *Primitive/object space system values:* | | | | | | |
76+ | uint [ClusterID()](#clusterid) | | | \* | \* | | |
9077
9178## Extension to DXR 1.1 RayQuery API
9279
9380New intrinsics [ CandidateClusterID()] ( #rayquery-candidateclusterid ) and
9481[ CommittedClusterID()] ( #rayquery-committedclusterid ) are added to ` RayQuery ` .
9582Behavior of all other intrinsics is unchanged.
9683
97- ---
98-
9984### RayQuery intrinsics
10085
10186The following table lists intrinsics available when
@@ -106,10 +91,10 @@ depending on the current [CommittedStatus()](https://github.com/microsoft/Direct
10691(i.e. what type of hit has been committed yet, if any) - this is further
10792clarified in another table further below.
10893
109- | ** Intrinsic** \ ** CandidateType()** | ` HIT_CANDIDATE_NON_OPAQUE_TRIANGLE ` | ` HIT_CANDIDATE_PROCEDURAL_PRIMITIVE `
110- | :--------------| :-----------:| :-----------:|
111- | uint [ CandidateClusterID()] ( #rayquery-candidateclusterid ) | \* | |
112- | uint [ CommittedClusterID()] ( #rayquery-committedclusterid ) | \* | |
94+ | ** Intrinsic** \ ** CandidateType()** | ` HIT_CANDIDATE_NON_OPAQUE_TRIANGLE ` | ` HIT_CANDIDATE_PROCEDURAL_PRIMITIVE ` |
95+ | :--------------------------------------------------------- | :----------------------------------- :| :------------------------- -----------:|
96+ | uint [ CandidateClusterID()] ( #rayquery-candidateclusterid ) | \* | |
97+ | uint [ CommittedClusterID()] ( #rayquery-committedclusterid ) | \* | |
11398
11499The following table lists intrinsics available depending on the current
115100[ COMMITTED_STATUS] ( https://github.com/microsoft/DirectX-Specs/blob/master/d3d/Raytracing.md#committed_status ) (i.e. what type of
@@ -119,11 +104,9 @@ hit has been committed, if any). This applies regardless of whether
119104complete). If ` TRUE ` , additional methods than those shown below are
120105available (see the above table).
121106
122- | ** Intrinsic** \ ** CommittedStatus()** | ` COMMITTED_TRIANGLE_HIT ` | ` COMMITTED_PROCEDURAL_PRIMITIVE_HIT ` | ` COMMITTED_NOTHING ` |
123- | :--------------| :-----------:| :-----------:| :-----------:|
124- | uint [ CommittedClusterID()] ( #rayquery-committedclusterid ) | \* | | |
125-
126- ---
107+ | ** Intrinsic** \ ** CommittedStatus()** | ` COMMITTED_TRIANGLE_HIT ` | ` COMMITTED_PROCEDURAL_PRIMITIVE_HIT ` | ` COMMITTED_NOTHING ` |
108+ | :---------------------------------------------------------| :------------------------:| :------------------------------------:| :-------------------:|
109+ | uint [ CommittedClusterID()] ( #rayquery-committedclusterid ) | \* | | |
127110
128111#### RayQuery CandidateClusterID
129112
@@ -139,8 +122,6 @@ uint RayQuery::CandidateClusterID();
139122call.
140123Lowers to [ RayQuery_CandidateClusterID DXIL Opcode] ( #rayquery_candidateclusterid-dxil-opcode ) .
141124
142- ---
143-
144125#### RayQuery CommittedClusterID
145126
146127The user-provided ` ClusterID ` of the intersected CLAS, if a Cluster BLAS was
@@ -155,8 +136,6 @@ uint RayQuery::CommittedClusterID();
155136call.
156137Lowers to [ RayQuery_CommittedClusterID DXIL Opcode] ( #rayquery_committedclusterid-dxil-opcode ) .
157138
158- ---
159-
160139### Extension to the DXR 1.2 HitObject API
161140
162141Cluster Geometries are also supported with the HitObject feature.
@@ -173,8 +152,6 @@ Returns `CLUSTER_ID_INVALID` if a non-Cluster BLAS was intersected or if
173152the ` HitObject ` does not encode a hit.
174153Lowers to [ HitObject_ClusterID DXIL Opcode] ( #hitobject_clusterid-dxil-opcode ) .
175154
176- ---
177-
178155### Diagnostic Changes
179156
180157This proposal does not introduce or remove diagnostics or warnings.
@@ -194,8 +171,6 @@ This proposal does not introduce or remove diagnostics or warnings.
194171
195172* Expected error when ClusterID builtins called from unsupported shader kinds.
196173
197- ---
198-
199174### DXIL
200175
201176| Opcode | Opcode name | Description
@@ -205,8 +180,6 @@ XXX + 1 | RayQuery_CandidateClusterID | Returns the candidate hit cluster ID
205180XXX + 2 | RayQuery_CommittedClusterID | Returns the committed hit cluster ID
206181XXX + 2 | HitObject_ClusterID | Returns the cluster ID of this committed hit
207182
208- ---
209-
210183#### ClusterID DXIL Opcode
211184
212185``` DXIL
@@ -217,8 +190,6 @@ declare i32 @dx.op.clusterID(
217190
218191Valid shader kinds defined in [ ClusterID HLSL] ( #clusterid ) .
219192
220- ---
221-
222193#### RayQuery_CandidateClusterID DXIL Opcode
223194
224195``` DXIL
@@ -231,8 +202,6 @@ declare i32 @dx.op.rayQuery_StateScalar.i32(
231202Validation errors:
232203* Validate that the RayQuery handle is not ` undef ` .
233204
234- ---
235-
236205#### RayQuery_CommittedClusterID DXIL Opcode
237206
238207``` DXIL
@@ -245,8 +214,6 @@ declare i32 @dx.op.rayQuery_StateScalar.i32(
245214Validation errors:
246215* Validate that the RayQuery handle is not ` undef ` .
247216
248- ---
249-
250217#### HitObject_ClusterID DXIL Opcode
251218
252219``` DXIL
@@ -259,8 +226,6 @@ declare i32 @dx.op.hitObject_StateScalar.i32(
259226Validation errors:
260227* Validate that the HitObject is not ` undef ` .
261228
262- ---
263-
264229### Diagnostic Changes
265230
266231This proposal does not introduce or remove diagnostics or warnings.
0 commit comments