fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / Contrib / ComputeBase / ComputeShader / OSGComputeShaderAlgorithm.fcd
blob8d3c6abe11a175c268b381a9c6c4f82c6226726e
1 <?xml version="1.0"?>
3 <FieldContainer
4 name="ComputeShaderAlgorithm"
5 parent="ComputeAlgorithm"
6 library="ContribComputeBase"
7 pointerfieldtypes="both"
8 structure="concrete"
9 systemcomponent="true"
10 parentsystemcomponent="true"
11 decoratable="false"
12 useLocalIncludes="false"
13 isNodeCore="false"
15 This class allows the operation of a compute shader algorithm. It allows the specification of
16 shader buffers and textures to be used in the computation task and the details of the computational
17 space the compute shader operats on.
19 <Field
20 name="textureImages"
21 type="TextureImageChunk"
22 category="pointer"
23 cardinality="multi"
24 visibility="external"
25 access="public"
27 Texture images to be used for reading/writing in the compute shader.
28 The texture images uses the binding points starting from 0 and then
29 incrementing by 1.
30 </Field>
31 <Field
32 name="chunkMaterial"
33 type="ChunkMaterial"
34 category="pointer"
35 cardinality="single"
36 visibility="external"
37 access="public"
39 This chunk material allows the usage of texture images, uniform buffer objects
40 and shader storage buffer objects in the compute shader. Only these material
41 chunks are going to be respected, all other will simply omitted. A valid
42 chunk in the chunk material specifies the binding point to be used in the compute
43 shader.
44 </Field>
45 <Field
46 name="computeShader"
47 type="ComputeShaderChunk"
48 category="pointer"
49 cardinality="single"
50 visibility="external"
51 access="public"
53 The compute shader abstracts the actual shader code and the variable specifications
54 used in the shader.
55 </Field>
56 <Field
57 name="dispatchConfig"
58 type="Vec3i"
59 cardinality="single"
60 visibility="external"
61 access="public"
62 defaultValue="1, 0, 0"
64 The number of work groups, i.e. the work group count.
65 </Field>
66 <Field
67 name="workGroupSize"
68 type="Vec3i"
69 cardinality="single"
70 visibility="external"
71 access="public"
72 defaultValue="1, 1, 1"
74 The size of the work groups, i.e. the local_size_var value of the layout specifier.
75 This does need the ARB_compute_variable_group_size GL extension to work.
76 </Field>
78 <Field
79 name="useMemoryBarrier"
80 type="bool"
81 cardinality="single"
82 visibility="external"
83 access="public"
84 defaultValue="false"
86 This flag toggles the usage of the memory barrier call after the operation of
87 the compute shader.
88 </Field>
90 <Field
91 name="useVariableWorkGroupSize"
92 type="bool"
93 cardinality="single"
94 visibility="external"
95 access="public"
96 defaultValue="false"
98 This flag enables the useage of the variable work group size dispatch API that
99 is specified in the ARB_compute_variable_group_size extension.
100 </Field>
102 <Field
103 name="memoryBarrier"
104 type="GLenum"
105 cardinality="single"
106 visibility="external"
107 access="public"
108 defaultValue="GL_SHADER_STORAGE_BARRIER_BIT"
110 This bitmask determines the behavior of the memory barrier that is issued after the
111 operation of the compute shader.
112 </Field>
114 </FieldContainer>