fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / Contrib / Techniques / OSGClusterShadingStage.fcd
blob8db6ae35699148ff0770f9d0180f5d18b47638d1
1 <?xml version="1.0"?>
3 <FieldContainer
4 name="ClusterShadingStage"
5 parent="Stage"
6 library="ContribTechniques"
7 pointerfieldtypes="none"
8 structure="concrete"
9 systemcomponent="true"
10 parentsystemcomponent="true"
11 decoratable="false"
12 useLocalIncludes="false"
13 isNodeCore="true"
14 isBundle="false"
17 <Field
18 name="blockSize"
19 type="UInt32"
20 cardinality="single"
21 visibility="external"
22 defaultValue="16"
23 access="public"
25 The number of compute shader work group threads per xy-direction
26 </Field>
28 <Field
29 name="tileSize"
30 type="UInt32"
31 cardinality="single"
32 visibility="external"
33 defaultValue="64"
34 access="public"
36 The number of pixel per cluster tile per xy-direction. The overall number if
37 clusters is then tileSize^2 * numClusterZ.
38 </Field>
40 <Field
41 name="numClusterZ"
42 type="UInt32"
43 cardinality="single"
44 visibility="external"
45 defaultValue="32"
46 access="public"
48 The number of clusters in the z direction. The overall number if
49 clusters is then tileSize^2 * numClusterZ.
50 </Field>
52 <Field
53 name="nearPlaneOffset"
54 type="Real32"
55 cardinality="single"
56 visibility="external"
57 defaultValue="5.f"
58 access="public"
60 z-coords below of zNear + near_plane_offset are mapped to cluster key 0, i.e.
61 the logarithmic clustering starts at zNear + near_plane_offset with key 1. Key 0
62 is therefor artificially. With this parameter you can enhance the cluster utilization.
63 </Field>
65 <Field
66 name="dispatchDataBindingPnt"
67 type="UInt32"
68 cardinality="single"
69 visibility="external"
70 defaultValue="1"
71 access="public"
73 The fragment shader binding point for the clustering data UBO.
74 </Field>
76 <Field
77 name="clusterDataBindingPnt"
78 type="UInt32"
79 cardinality="single"
80 visibility="external"
81 defaultValue="2"
82 access="public"
84 The fragment shader binding point for the clustering data UBO.
85 </Field>
87 <Field
88 name="lightBindingPnt"
89 type="UInt32"
90 cardinality="single"
91 visibility="external"
92 defaultValue="1"
93 access="public"
95 The fragment shader SSBO binding point for the multi light chunk.
96 </Field>
98 <Field
99 name="affectedLightIndexListBindingPnt"
100 type="UInt32"
101 cardinality="single"
102 visibility="external"
103 defaultValue="2"
104 access="public"
106 The fragment shader binding point for the index list SSBO of the view frustum affecting lights.
107 </Field>
109 <Field
110 name="frustumBindingPnt"
111 type="UInt32"
112 cardinality="single"
113 visibility="external"
114 defaultValue="3"
115 access="public"
117 The frustum and cull light computation shader binding point for the SSBO frustum buffer.
118 </Field>
120 <Field
121 name="lightIndexListBindingPnt"
122 type="UInt32"
123 cardinality="single"
124 visibility="external"
125 defaultValue="4"
126 access="public"
128 The fragment shader binding point for the index list SSBO of the cluster shading lights.
129 </Field>
131 <Field
132 name="lightIndexCounterBindingPnt"
133 type="UInt32"
134 cardinality="single"
135 visibility="external"
136 defaultValue="5"
137 access="public"
139 The fragment shader binding point for the index list global counter SSBO.
140 </Field>
142 <Field
143 name="lightGridBindingPnt"
144 type="UInt32"
145 cardinality="single"
146 visibility="external"
147 defaultValue="0"
148 access="public"
150 The fragment shader binding point for the texture image of the light grid.
151 </Field>
153 <Field
154 name="affectedLightIndexListBlockName"
155 type="std::string"
156 cardinality="single"
157 visibility="external"
158 access="public"
159 defaultValue='"AffectedLightIndexList"'
161 The shader storage buffer block name for the affected light index buffer.
162 </Field>
164 <Field
165 name="affectedLightIndexListVariableName"
166 type="std::string"
167 cardinality="single"
168 visibility="external"
169 access="public"
170 defaultValue='"affectedLightIndexList"'
172 The variable name for the affected light index buffer.
173 </Field>
175 <Field
176 name="lightIndexListBlockName"
177 type="std::string"
178 cardinality="single"
179 visibility="external"
180 access="public"
181 defaultValue='"LightIndexList"'
183 The shader storage buffer block name for the global light index buffer.
184 </Field>
186 <Field
187 name="lightIndexListVariableName"
188 type="std::string"
189 cardinality="single"
190 visibility="external"
191 access="public"
192 defaultValue='"lightIndexList"'
194 The variable name for the global light index buffer.
195 </Field>
197 <Field
198 name="clusteringDataBlockName"
199 type="std::string"
200 cardinality="single"
201 visibility="external"
202 access="public"
203 defaultValue='"ClusteringData"'
205 The uniform buffer block name for the clustering data buffer.
206 </Field>
208 <Field
209 name="clusteringDataVariableName"
210 type="std::string"
211 cardinality="single"
212 visibility="external"
213 access="public"
214 defaultValue='"clusteringData"'
216 The variable name for the clustering data buffer.
217 </Field>
219 <Field
220 name="lightGridVariableName"
221 type="std::string"
222 cardinality="single"
223 visibility="external"
224 access="public"
225 defaultValue='"light_grid"'
227 The variable name for the uniform light grid image array .
228 </Field>
230 <Field
231 name="calcFrustumsOnCPU"
232 type="bool"
233 cardinality="single"
234 visibility="external"
235 defaultValue="false"
236 access="public"
238 Calculate the view frustums on the CPU.
239 </Field>
241 <Field
242 name="cullLighsOnCPU"
243 type="bool"
244 cardinality="single"
245 visibility="external"
246 defaultValue="false"
247 access="public"
249 Cull the lights on the CPU.
250 </Field>
252 <Field
253 name="disabled"
254 type="bool"
255 cardinality="single"
256 visibility="external"
257 defaultValue="false"
258 access="public"
260 Disable the stage completely. The geometry fragment shaders must act accordingly.
261 </Field>
263 <Field
264 name="maxLightIndexListSize"
265 type="UInt32"
266 cardinality="single"
267 visibility="external"
268 defaultValue="2097152"
269 access="public"
271 The maximal number of light indices, i.e. the accumulated sum of all cluster lights. If the light index
272 list is completely filled all additional lights are silently dropped.
273 </Field>
275 <Field
276 name="maxClusterLightCount"
277 type="UInt32"
278 cardinality="single"
279 visibility="external"
280 defaultValue="1024"
281 access="public"
283 The maximal number of lights that can be attributed to one specific cluster. Realize, that
284 the accumulated sum of all cluster attributed lights must not exceed the maxLightIndexListSize.
285 If the number of lights for one cluster exceeds this limit the excessive lights are silently dropped.
286 </Field>
288 <Field
289 name="frustNode"
290 type="NodePtr"
291 cardinality="single"
292 visibility="internal"
293 defaultValue="NULL"
294 access="protected"
296 The frustum computation node.
297 </Field>
299 <Field
300 name="frustAlgoElement"
301 type="AlgorithmComputeElementPtr"
302 cardinality="single"
303 visibility="internal"
304 defaultValue="NULL"
305 access="protected"
307 The frustum algorithm computation element.
308 </Field>
310 <Field
311 name="frustCompShaderAlgo"
312 type="ComputeShaderAlgorithmPtr"
313 cardinality="single"
314 visibility="internal"
315 defaultValue="NULL"
316 access="protected"
318 The frustum computation shader algorithm.
319 </Field>
321 <Field
322 name="cullNode"
323 type="NodePtr"
324 cardinality="single"
325 visibility="internal"
326 defaultValue="NULL"
327 access="protected"
329 The frustum computation node.
330 </Field>
332 <Field
333 name="cullAlgoElement"
334 type="AlgorithmComputeElementPtr"
335 cardinality="single"
336 visibility="internal"
337 defaultValue="NULL"
338 access="protected"
340 The frustum algorithm computation element.
341 </Field>
343 <Field
344 name="cullCompShaderAlgo"
345 type="ComputeShaderAlgorithmPtr"
346 cardinality="single"
347 visibility="internal"
348 defaultValue="NULL"
349 access="protected"
351 The frustum computation shader algorithm.
352 </Field>
354 <Field
355 name="multiLightChunk"
356 type="MultiLightChunkPtr"
357 cardinality="single"
358 visibility="external"
359 defaultValue="NULL"
360 access="public"
362 The multi light chunk.
363 </Field>
365 <Field
366 name="shaderProgChunk"
367 type="ShaderProgramChunkPtr"
368 cardinality="single"
369 visibility="internal"
370 defaultValue="NULL"
371 access="protected"
373 The shader program chunk.
374 </Field>
376 </FieldContainer>