2019-02-17 18:50:26 +03:00
|
|
|
$input v_texcoord0
|
|
|
|
|
|
|
|
/*
|
2023-01-14 21:05:12 +03:00
|
|
|
* Copyright 2011-2023 Branimir Karadzic. All rights reserved.
|
2022-01-15 22:59:06 +03:00
|
|
|
* License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
|
2019-02-17 18:50:26 +03:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <bgfx_compute.sh>
|
|
|
|
|
Adds UAV support for D3D12, Vulkan and reworked for OpenGL, D3D11 (#2119)
* Adds UAV support for D3D12, Vulkan and reworked support for OpenGL, D3D11
UAV support is now uniform across compute and draw.
To set a UAV you just use bgfx::setImage() and IMAGE2D in the shader, just like in compute.
Due to these changes shaders will have to be recompiled.
The changes include:
- D3D11 requires patching of the UAV slot number (which is now done by modifying the DXBC instead of using a macro)
- If the DXBC binary includes a debug chunk, that is also patched to match the new slot number
- All the other renderers don't need any kind of patching
- There are some shader annotations to better convert the UAV format used in hlsl to spirv
Possibility of further enhancements:
- bgfx::setViewFrameBuffer() only supports binding to a framebuffer or, using BGFX_INVALID_HANDLE, to bind the default backbuffer. This doesn't allow for the case where there is no need to bind to either one of them, for example when using a fragment shader only to read and write to an UAV.
* Bump shader version, because they need to be recompiled.
2020-10-05 07:51:41 +03:00
|
|
|
IMAGE2D_RW(i_light, rgba8, 2);
|
2019-02-17 18:50:26 +03:00
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
2023-10-01 01:49:11 +03:00
|
|
|
ivec2 coord = ivec2(gl_FragCoord.xy);
|
|
|
|
imageStore(i_light, coord, vec4(0.0, 0.0, 0.0, 0.0) );
|
2019-02-17 18:50:26 +03:00
|
|
|
}
|