|
@@ -57,7 +57,7 @@
|
|
|
_type imageLoad( RWTexture3D<_textureType> _image, ivec3 _uvw, _type _value) { return _image[_uvw]._loadComponents; } \
|
|
_type imageLoad( RWTexture3D<_textureType> _image, ivec3 _uvw, _type _value) { return _image[_uvw]._loadComponents; } \
|
|
|
void imageStore( RWTexture2D<_textureType> _image, ivec2 _uv, _type _value) { _image[_uv ] = _value._storeComponents; } \
|
|
void imageStore( RWTexture2D<_textureType> _image, ivec2 _uv, _type _value) { _image[_uv ] = _value._storeComponents; } \
|
|
|
void imageStore(RWTexture2DArray<_textureType> _image, ivec3 _uvw, _type _value) { _image[_uvw] = _value._storeComponents; } \
|
|
void imageStore(RWTexture2DArray<_textureType> _image, ivec3 _uvw, _type _value) { _image[_uvw] = _value._storeComponents; } \
|
|
|
- void imageStore( RWTexture3D<_textureType> _image, ivec3 _uvw, _type _value) { _image[_uvw] = _value._storeComponents; }
|
|
|
|
|
|
|
+ void imageStore( RWTexture3D<_textureType> _image, ivec3 _uvw, _type _value) { _image[_uvw] = _value._storeComponents; }
|
|
|
|
|
|
|
|
__IMAGE_IMPL(float, x, vec4, xxxx)
|
|
__IMAGE_IMPL(float, x, vec4, xxxx)
|
|
|
__IMAGE_IMPL(vec2, xy, vec4, xyyy)
|
|
__IMAGE_IMPL(vec2, xy, vec4, xyyy)
|
|
@@ -188,31 +188,31 @@ uint atomicCompSwap(uint _mem, uint _compare, uint _data)
|
|
|
#endif // BGFX_SHADER_LANGUAGE_HLSL
|
|
#endif // BGFX_SHADER_LANGUAGE_HLSL
|
|
|
|
|
|
|
|
#define dispatchIndirect(_buffer \
|
|
#define dispatchIndirect(_buffer \
|
|
|
- , _offset \
|
|
|
|
|
- , _numX \
|
|
|
|
|
- , _numY \
|
|
|
|
|
- , _numZ \
|
|
|
|
|
- ) \
|
|
|
|
|
|
|
+ , _offset \
|
|
|
|
|
+ , _numX \
|
|
|
|
|
+ , _numY \
|
|
|
|
|
+ , _numZ \
|
|
|
|
|
+ ) \
|
|
|
_buffer[_offset*2+0] = uvec4(_numX, _numY, _numZ, 0u)
|
|
_buffer[_offset*2+0] = uvec4(_numX, _numY, _numZ, 0u)
|
|
|
|
|
|
|
|
#define drawIndirect(_buffer \
|
|
#define drawIndirect(_buffer \
|
|
|
- , _offset \
|
|
|
|
|
- , _numVertices \
|
|
|
|
|
- , _numInstances \
|
|
|
|
|
- , _startVertex \
|
|
|
|
|
|
|
+ , _offset \
|
|
|
|
|
+ , _numVertices \
|
|
|
|
|
+ , _numInstances \
|
|
|
|
|
+ , _startVertex \
|
|
|
, _startInstance \
|
|
, _startInstance \
|
|
|
- ) \
|
|
|
|
|
|
|
+ ) \
|
|
|
_buffer[_offset*2+0] = uvec4(_numVertices, _numInstances, _startVertex, _startInstance)
|
|
_buffer[_offset*2+0] = uvec4(_numVertices, _numInstances, _startVertex, _startInstance)
|
|
|
|
|
|
|
|
#define drawIndexedIndirect(_buffer \
|
|
#define drawIndexedIndirect(_buffer \
|
|
|
- , _offset \
|
|
|
|
|
- , _numIndices \
|
|
|
|
|
- , _numInstances \
|
|
|
|
|
- , _startIndex \
|
|
|
|
|
- , _startVertex \
|
|
|
|
|
- , _startInstance \
|
|
|
|
|
- ) \
|
|
|
|
|
- _buffer[_offset*2+0] = uvec4(_numIndices, _numInstances, _startIndex, _startInstance); \
|
|
|
|
|
|
|
+ , _offset \
|
|
|
|
|
+ , _numIndices \
|
|
|
|
|
+ , _numInstances \
|
|
|
|
|
+ , _startIndex \
|
|
|
|
|
+ , _startVertex \
|
|
|
|
|
+ , _startInstance \
|
|
|
|
|
+ ) \
|
|
|
|
|
+ _buffer[_offset*2+0] = uvec4(_numIndices, _numInstances, _startIndex, _startVertex); \
|
|
|
_buffer[_offset*2+1] = uvec4(_startInstance, 0u, 0u, 0u)
|
|
_buffer[_offset*2+1] = uvec4(_startInstance, 0u, 0u, 0u)
|
|
|
|
|
|
|
|
#endif // __cplusplus
|
|
#endif // __cplusplus
|