* Fix DebugDraw shaders compilation
Pull request #2317 broke compilation of the DebugDraw shaders (vs_debugdraw_fill.sc, etc)
on the Intel mesa driver. Shaders with a version lower than 130 have no
support for uvec or ivec by default on OpenGL.
This patch detects when these shaders are present and bumps the version when appropriate.
* Removed the ivecs from the patch
It seems the ivecs are infact supported on versions lower than 130 on
OpenGL.
Compiling 'fs_texture_array.sc' with shaderc for OpenGLES fails with a syntax error,
because the matrix transpose function definitions occur before extension directives,
in this case EXT_texture_array.
* WebGPU: Add texture format (shaderc bin version 10)
* WebGPU: Simplify storage images + Fix format decorations
* Shaderc: Cleanup Texture name assumption in textures
* Fix typo in SPIR-V id
* Use backend-agnostic shaderc output
...as opposed to directly storing and comparing against Vulkan and WebGPU enums. This is backwards-compatible with existing code and shaders.
* Remove comments and Undefined value
* display bokeh sample pattern, add bokeh shape, improve look
draw sample pattern to texture and display in ui to see number of samples and their arrangment
add bokeh shape controls
remove adhoc 'sqrt' pattern since display makes existing pattern easier to understand and it looks nicer.
switch to floating point color texture and leave lighting results in linear space until after dof is performed. provides better results and bright spots can make more noticeable bokeh shapes.
change default values to use take more samples at reduced resolution so initial experience when loading the sample is better looking image
* update screenshot, minor change to ui
fix height of ui element so scrollbar not required by default layout
update screenshot
* fix typo in texturev
atleast, i'm pretty sure that's a typo don't see a reason to set width twice
* [shaderc] Add SPIR-V profiles to support Vulkan 1.1 and Vulkan 1.2.
* * Add support for Vulkan 1.1 with SPIR-V 1.4.
* Update "spirv" values to correlate with shaderc spirv profile name mappings.
* Expand on spirv profile naming and encoding documentation.
* Address PR notes
* 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.
Currently `const char * str` gets converted to a StringView when its passed to `bx::strFindNl`, incurring a strlen. We have the data to calculate the strlen and fully construct the StringView.
Preferred output coordinate system transformation added.
glTF2.0 is tested with all models from https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0
Static mesh output looks ok for all of them, but as output file format hasn't changed only static mesh is exported. No animation, nodes, materials. etc.
Fixes opaque type in struct error by disabling check.
```
Error: In Vulkan, OpTypeStruct must not contain an opaque type.
%BgfxSampler2D = OpTypeStruct %6 %8
```
Win32/Linux version is from texturev. OSX uses native dialog instead of zenity.
win32 has a fix to support win32 target: OPENFILENAMEA customData is uintptr_t instead of uint64_t.