diff --git a/Content/Documentation/WickedEngine-Documentation.md b/Content/Documentation/WickedEngine-Documentation.md index 4bf7942d0..2a3bbea2d 100644 --- a/Content/Documentation/WickedEngine-Documentation.md +++ b/Content/Documentation/WickedEngine-Documentation.md @@ -1288,213 +1288,6 @@ CBUFFER(myCbuffer, 0); float loaded_value = values0.y; ``` -- RAWBUFFER(name, slot)
-Declares a raw buffer (ByteAddressBuffer) that can be indexed with byte offset and used to load uints -```cpp -RAWBUFFER(myRawbuffer, 0); - -// Load 4 uints in one go from byte 42: -uint4 values = myRawBuffer.Load4(42); -``` - -- RWRAWBUFFER(name, slot)
-Declares a raw buffer (RWByteAddressBuffer) that can be indexed with byte offset and used to load/store uints. Supports atomic operations. -```cpp -RWRAWBUFFER(myRawbuffer, 0); - -// Store 4 uints in one go from byte 42: -myRawBuffer.Store4(42, uint4(0,0,0,0)); - -// Atomic add operation on an uint starting at byte 42: -uint previous_value; -myRawBuffer.InterlockedAdd(42, 1, previous_value); -``` - -- TYPEDBUFFER(name, type, slot)
-Declares a buffer which can do type conversion on oad, such as unorm -```cpp -TYPEDBUFFER(myTypedbuffer, float4, 0); - -// Load values as float4, while the values could go through -// type conversion from eg. uin32_t -> float4 (unorm) -// if the buffer was set up that way on the CPU side: -float4 values = myTypedbuffer[42]; -``` - -- RWTYPEDBUFFER(name, type, slot)
-Declares a buffer which can do type conversion on load/store, such as unorm -```cpp -RWTYPEDBUFFER(myTypedbuffer, float4, 0); - -// Store values as float4, while the values could go through -// type conversion from eg. uin32_t -> float4 (unorm) -// if the buffer was set up that way on the CPU side: -myTypedbuffer[42] = float4(0, 0, 0, 0); -``` - -- STRUCTUREDBUFFER(name, structure, slot)
-Declares a buffer that can load user defined structures -```cpp -struct MyType -{ - float4 values; - uint3 values1; - uint value2; -}; -STRUCTUREDBUFFER(myStructuredbuffer, myType, 0); - -MyType element = myStructuredbuffer[42]; -``` - -- RWSTRUCTUREDBUFFER(name, structure, slot)
-Declares a buffer that can load/store user defined structures. Supports atomic operations on `uint` type -```cpp -struct MyType -{ - float4 values; - uint3 values1; - uint value2; -}; -RWSTRUCTUREDBUFFER(myStructuredbuffer, myType, 0); - -myType element = {}; -myStructuredbuffer[42] = element; - -uint previous_value; -InterlockedAdd(myStructuredbuffer[42].value2, 1, previous_value); -``` - -- RAYTRACINGACCELERATIONSTRUCTURE(name, slot)
-Declares a ray tracing acceleration structure. Only usabe in HLSL 6.1+ shader model. Requires hardware support for ray tracing. -The binding slot is read only resource type (t slot). -```cpp -RAYTRACINGACCELERATIONSTRUCTURE(Scene, 0); - -TraceRay(Scene, ...); -``` - -- SAMPLERSTATE(name, slot)
-Declares a sampler used to sample from textures -```cpp -SAMPLERSTATE(mySampler, 0); -``` - -- SAMPLERCOMPARISONSTATE(name, slot)
-Declares a sampler used to sample from textures and perform comparison against reference values -```cpp -SAMPLERSTATE(mySampler, 0); -``` - -- TEXTURE1D(name, type, slot)
-Declares a one dimensional texture -```cpp -TEXTURE1D(myTexture, float4, 0); - -// Load color from integer pixel coordinates: -float4 color = myTexture[42]; -``` - -- RWTEXTURE1D(name, type, slot)
-Declares a one dimensional texture with write access -```cpp -RWTEXTURE1D(myTexture, float4, 0); - -// Store color to integer pixel coordinates: -myTexture[42] = float4(0, 0, 0, 0); -``` - -- TEXTURE1DARRAY(name, type, slot)
-Declares an array of one dimensional textures -```cpp -TEXTURE1DARRAY(myTexture, float4, 0); - -// Load color from integer pixel coordinates from the 66th texture: -float4 color = myTexture[uint2(42, 66)]; -``` - -- RWTEXTURE1DARRAY(name, type, slot)
-Declares an array of one dimensional textures with write access -```cpp -RWTEXTURE1DARRAY(myTexture, float4, 0); - -// Store color to integer pixel coordinates to the 66th texture: -myTexture[uint2(42, 66)] = float4(0, 0, 0, 0); -``` - -- TEXTURE2D(name, type, slot)
-Declares a two dimensional texture -```cpp -TEXTURE2D(myTexture, float4, 0); - -// Load color from integer pixel coordinates: -float4 color = myTexture[uint2(42, 24)]; -``` - -- RWTEXTURE2D(name, type, slot)
-Declares a two dimensional texture with write access -```cpp -RWTEXTURE2D(myTexture, float4, 0); - -// Store color to integer pixel coordinates: -myTexture[uint2(42, 24)] = float4(0, 0, 0, 0); -``` - -- TEXTURE2DARRAY(name, type, slot)
-Declares an array of two dimensional textures -```cpp -TEXTURE2DARRAY(myTextureArray, float4, 0); - -// Load color from integer pixel coordinates from the 66th texture: -float4 color = myTexture[uint3(42, 24, 66)]; -``` - -- RWTEXTURE2DARRAY(name, type, slot)
-Declares an array of two dimensional textures with write access -```cpp -RWTEXTURE2DARRAY(myTextureArray, float4, 0); - -// Store color to integer pixel coordinates to the 66th texture: -myTexture[uint3(42, 24, 66)] = float4(0, 0, 0, 0); -``` - -- TEXTURE3D(name, type, slot)
-Declares a three dimensional texture -```cpp -TEXTURE3D(myTexture, float4, 0); - -// Load color from integer pixel coordinates: -float4 color = myTexture[uint3(42, 24, 32)]; -``` - -- RWTEXTURE3D(name, type, slot)
-Declares a three dimensional texture with write access -```cpp -RWTEXTURE3D(myTexture, float4, 0); - -// Store color to integer pixel coordinates: -myTexture[uint3(42, 24, 32)] = float4(0, 0, 0, 0); -``` - -- TEXTURECUBE(name, type, slot)
-Declares a two dimensional texture with 6 faces -```cpp -TEXTURECUBE(myTexture, float4, 0); - -// Sample texture by direction vector: -float4 color = myTexture.Sample(mySampler, float3(0,0,0)); -``` - -- TEXTURECUBEARRAY(name, type, slot)
-Declares an array of two dimensional textures with 6 faces each -```cpp -TEXTURECUBEARRAY(myTextureArray, float4, 0); - -// Sample texture by direction vector from the 66th cube: -float4 color = myTextureArray.Sample(mySampler, float4(0,0,0, 66)); -``` - -You can see them all in [ShaderInterop.h](../WickedEngine/shaders/ShaderInterop.h) - Note: When creating constant buffers, the structure must be strictly padded to 16-byte boundaries according to HLSL rules. Apart from that, the following limitation is in effect for Vulkan compatibility: Incorrect padding to 16-byte: @@ -1520,18 +1313,6 @@ CBUFFER(cbuf, 0) ### Interop The interop between shaders and C++ code is handled by shared header (.h) files. Modifying the shared header files will need recompilation of both engine and shaders, otherwise undefined behaviour will occur. For cases when only shaders need visibility, consider using shader header files (.hlsli), which should not be shared with the engine C++ code. -#### ConstantBufferMapping -[[Header]](../../WickedEngine/shaders/ConstantBufferMapping.h) -Used to declare shared global constant buffer bind points between C++ code and shaders - -#### ResourceMapping -[[Header]](../../WickedEngine/shaders/ResourceMapping.h) -Used to declare shared global resource view bind points between C++ code and shaders - -#### SamplerMapping -[[Header]](../../WickedEngine/shaders/SamplerMapping.h) -Used to declare shared global sampler bind points between C++ code and shaders - #### ShaderInterop [[Header]](../../WickedEngine/shaders/ShaderInterop.h) Shader Interop is used for declaring shared structures or values between C++ Engine code and shader code. There are several ShaderInterop files, postfixed by the subsystem they are used for to keep them minimal and more readable:
diff --git a/Editor/PaintToolWindow.cpp b/Editor/PaintToolWindow.cpp index 8ff8e0fae..e8ae7bf20 100644 --- a/Editor/PaintToolWindow.cpp +++ b/Editor/PaintToolWindow.cpp @@ -308,7 +308,7 @@ void PaintToolWindow::Update(float dt) device->BindComputeShader(wiRenderer::GetShader(CSTYPE_PAINT_TEXTURE), cmd); wiRenderer::BindCommonResources(cmd); - device->BindResource(wiTextureHelper::getWhite(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getWhite(), 0, cmd); device->BindUAV(&editTexture, 0, cmd); PaintTextureCB cb; diff --git a/Editor/RendererWindow.cpp b/Editor/RendererWindow.cpp index f70587b2a..ef6c8bef1 100644 --- a/Editor/RendererWindow.cpp +++ b/Editor/RendererWindow.cpp @@ -417,7 +417,7 @@ void RendererWindow::Create(EditorComponent* editor) textureQualityComboBox.AddItem("Trilinear"); textureQualityComboBox.AddItem("Anisotropic"); textureQualityComboBox.OnSelect([&](wiEventArgs args) { - wiGraphics::SamplerDesc desc = wiRenderer::GetSampler(SSLOT_OBJECTSHADER)->GetDesc(); + wiGraphics::SamplerDesc desc = wiRenderer::GetSampler(SAMPLER_OBJECTSHADER)->GetDesc(); switch (args.iValue) { @@ -449,7 +449,7 @@ void RendererWindow::Create(EditorComponent* editor) mipLodBiasSlider.SetSize(XMFLOAT2(100, itemheight)); mipLodBiasSlider.SetPos(XMFLOAT2(x, y += step)); mipLodBiasSlider.OnSlide([&](wiEventArgs args) { - wiGraphics::SamplerDesc desc = wiRenderer::GetSampler(SSLOT_OBJECTSHADER)->GetDesc(); + wiGraphics::SamplerDesc desc = wiRenderer::GetSampler(SAMPLER_OBJECTSHADER)->GetDesc(); desc.mip_lod_bias = wiMath::Clamp(args.fValue, -15.9f, 15.9f); wiRenderer::ModifyObjectSampler(desc); }); diff --git a/Editor/Translator.cpp b/Editor/Translator.cpp index 4adc8c3d0..f305fef5d 100644 --- a/Editor/Translator.cpp +++ b/Editor/Translator.cpp @@ -32,7 +32,7 @@ namespace Translator_Internal desc.vs = wiRenderer::GetShader(VSTYPE_VERTEXCOLOR); desc.ps = wiRenderer::GetShader(PSTYPE_VERTEXCOLOR); desc.il = wiRenderer::GetInputLayout(ILTYPE_VERTEXCOLOR); - desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_XRAY); + desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_DEPTHDISABLED); desc.rs = wiRenderer::GetRasterizerState(RSTYPE_DOUBLESIDED); desc.bs = wiRenderer::GetBlendState(BSTYPE_ADDITIVE); desc.pt = PrimitiveTopology::TRIANGLELIST; @@ -46,7 +46,7 @@ namespace Translator_Internal desc.vs = wiRenderer::GetShader(VSTYPE_VERTEXCOLOR); desc.ps = wiRenderer::GetShader(PSTYPE_VERTEXCOLOR); desc.il = wiRenderer::GetInputLayout(ILTYPE_VERTEXCOLOR); - desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_XRAY); + desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_DEPTHDISABLED); desc.rs = wiRenderer::GetRasterizerState(RSTYPE_WIRE_DOUBLESIDED_SMOOTH); desc.bs = wiRenderer::GetBlendState(BSTYPE_TRANSPARENT); desc.pt = PrimitiveTopology::LINELIST; diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index 1fa2822a6..3b8adff42 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -446,7 +446,7 @@ void MainComponent::SetWindow(wiPlatform::window_type window, bool fullscreen) } } wiGraphics::GetDevice() = graphicsDevice.get(); - wiRenderer::InitializeGlobalSamplers(); + wiRenderer::InitializeCommonSamplers(); canvas.init(window); diff --git a/WickedEngine/RenderPath3D.cpp b/WickedEngine/RenderPath3D.cpp index b9bece9f0..637331ccf 100644 --- a/WickedEngine/RenderPath3D.cpp +++ b/WickedEngine/RenderPath3D.cpp @@ -3,7 +3,6 @@ #include "wiImage.h" #include "wiHelper.h" #include "wiTextureHelper.h" -#include "shaders/ResourceMapping.h" #include "wiProfiler.h" using namespace wiGraphics; diff --git a/WickedEngine/RenderPath3D_PathTracing.cpp b/WickedEngine/RenderPath3D_PathTracing.cpp index c5bc32d43..5a2fc8a8d 100644 --- a/WickedEngine/RenderPath3D_PathTracing.cpp +++ b/WickedEngine/RenderPath3D_PathTracing.cpp @@ -4,7 +4,6 @@ #include "wiHelper.h" #include "wiTextureHelper.h" #include "wiSprite.h" -#include "shaders/ResourceMapping.h" #include "wiProfiler.h" #include "wiScene.h" #include "wiBackLog.h" diff --git a/WickedEngine/shaders/ConstantBufferMapping.h b/WickedEngine/shaders/ConstantBufferMapping.h deleted file mode 100644 index e5d5fbdf3..000000000 --- a/WickedEngine/shaders/ConstantBufferMapping.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef WI_CONSTANTBUFFER_MAPPING_H -#define WI_CONSTANTBUFFER_MAPPING_H - -// Slot matchings: -//////////////////////////////////////////////////// - -// Common buffers: -// These are usable by all shaders -#define CBSLOT_RENDERER_FRAME 0 -#define CBSLOT_RENDERER_CAMERA 1 - - - -// On demand buffers: -// These are bound on demand and alive until another is bound at the same slot - -#define CBSLOT_RENDERER_MISC 5 -#define CBSLOT_RENDERER_FORWARD_LIGHTMASK 7 -#define CBSLOT_RENDERER_VOLUMELIGHT 7 -#define CBSLOT_RENDERER_VOXELIZER 7 -#define CBSLOT_RENDERER_TRACED 7 -#define CBSLOT_RENDERER_BVH 7 -#define CBSLOT_RENDERER_CUBEMAPRENDER 8 - -#define CBSLOT_OTHER_EMITTEDPARTICLE 7 -#define CBSLOT_OTHER_HAIRPARTICLE 7 -#define CBSLOT_OTHER_FFTGENERATOR 7 -#define CBSLOT_OTHER_OCEAN_SIMULATION_IMMUTABLE 7 -#define CBSLOT_OTHER_OCEAN_SIMULATION_PERFRAME 8 -#define CBSLOT_OTHER_OCEAN_RENDER 7 -#define CBSLOT_OTHER_CLOUDGENERATOR 7 -#define CBSLOT_OTHER_GPUSORTLIB 8 - - - -#endif // WI_CONSTANTBUFFER_MAPPING_H diff --git a/WickedEngine/shaders/ResourceMapping.h b/WickedEngine/shaders/ResourceMapping.h deleted file mode 100644 index ffe14eade..000000000 --- a/WickedEngine/shaders/ResourceMapping.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef WI_RESOURCE_MAPPING_H -#define WI_RESOURCE_MAPPING_H - -// Slot matchings: -//////////////////////////////////////////////////// - - -// t slot: - -// These are reserved slots for systems: - - - - -// Ondemand textures are 2d textures and declared in shader globals, these can be used independently in any shader: -#define TEXSLOT_ONDEMAND0 30 -#define TEXSLOT_ONDEMAND1 31 -#define TEXSLOT_ONDEMAND2 32 -#define TEXSLOT_ONDEMAND3 33 -#define TEXSLOT_ONDEMAND4 34 -#define TEXSLOT_ONDEMAND5 35 -#define TEXSLOT_ONDEMAND6 36 -#define TEXSLOT_ONDEMAND7 37 -#define TEXSLOT_ONDEMAND8 38 -#define TEXSLOT_ONDEMAND9 39 -#define TEXSLOT_ONDEMAND10 40 -#define TEXSLOT_ONDEMAND11 41 -#define TEXSLOT_ONDEMAND12 42 -#define TEXSLOT_ONDEMAND13 43 -#define TEXSLOT_ONDEMAND14 44 -#define TEXSLOT_ONDEMAND15 45 -#define TEXSLOT_ONDEMAND16 46 -#define TEXSLOT_ONDEMAND17 47 -#define TEXSLOT_ONDEMAND18 48 -#define TEXSLOT_ONDEMAND19 49 -#define TEXSLOT_ONDEMAND20 50 -#define TEXSLOT_ONDEMAND21 51 -#define TEXSLOT_ONDEMAND22 52 -#define TEXSLOT_ONDEMAND23 53 -#define TEXSLOT_ONDEMAND24 54 -#define TEXSLOT_ONDEMAND25 55 -#define TEXSLOT_ONDEMAND26 56 -#define TEXSLOT_ONDEMAND27 57 -#define TEXSLOT_ONDEMAND28 58 -#define TEXSLOT_ONDEMAND29 59 -#define TEXSLOT_ONDEMAND30 60 -#define TEXSLOT_ONDEMAND31 61 -#define TEXSLOT_ONDEMAND32 62 -#define TEXSLOT_ONDEMAND33 63 -#define TEXSLOT_ONDEMAND_COUNT (TEXSLOT_ONDEMAND30 - TEXSLOT_ONDEMAND0 + 1) - -#define TEXSLOT_COUNT 64 - - -#endif // WI_RESOURCE_MAPPING_H diff --git a/WickedEngine/shaders/SamplerMapping.h b/WickedEngine/shaders/SamplerMapping.h deleted file mode 100644 index 92cc06386..000000000 --- a/WickedEngine/shaders/SamplerMapping.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef WI_SAMPLER_MAPPING_H -#define WI_SAMPLER_MAPPING_H - -// Slot matchings: -//////////////////////////////////////////////////// - -// Persistent samplers -// These are bound once and are alive forever -#define SSLOT_LINEAR_CLAMP 4 -#define SSLOT_LINEAR_WRAP 5 -#define SSLOT_LINEAR_MIRROR 6 -#define SSLOT_POINT_CLAMP 7 -#define SSLOT_POINT_WRAP 8 -#define SSLOT_POINT_MIRROR 9 -#define SSLOT_ANISO_CLAMP 10 -#define SSLOT_ANISO_WRAP 11 -#define SSLOT_ANISO_MIRROR 12 -#define SSLOT_CMP_DEPTH 13 -#define SSLOT_OBJECTSHADER 14 -#define SSLOT_RESERVED 15 -#define SSLOT_COUNT_PERSISTENT (SSLOT_RESERVED + 1 - SSLOT_COUNT_ONDEMAND) - -// On demand samplers: -// These are bound on demand and alive until another is bound at the same slot -#define SSLOT_ONDEMAND0 0 -#define SSLOT_ONDEMAND1 1 -#define SSLOT_ONDEMAND2 2 -#define SSLOT_ONDEMAND3 3 -#define SSLOT_COUNT_ONDEMAND (SSLOT_ONDEMAND3 + 1) - -#define SSLOT_COUNT (SSLOT_COUNT_PERSISTENT + SSLOT_COUNT_ONDEMAND) - -#endif // WI_SAMPLER_MAPPING_H diff --git a/WickedEngine/shaders/ShaderInterop.h b/WickedEngine/shaders/ShaderInterop.h index 0207de1c2..b45415a7c 100644 --- a/WickedEngine/shaders/ShaderInterop.h +++ b/WickedEngine/shaders/ShaderInterop.h @@ -1,27 +1,23 @@ #ifndef WI_SHADERINTEROP_H #define WI_SHADERINTEROP_H -#include "ConstantBufferMapping.h" -#include "SamplerMapping.h" -#include "ResourceMapping.h" - #ifdef __cplusplus // not invoking shader compiler, but included in engine source // Application-side types: -typedef XMMATRIX matrix; -typedef XMFLOAT3X4 float3x4; -typedef XMFLOAT4X4 float4x4; -typedef XMFLOAT2 float2; -typedef XMFLOAT3 float3; -typedef XMFLOAT4 float4; -typedef uint32_t uint; -typedef XMUINT2 uint2; -typedef XMUINT3 uint3; -typedef XMUINT4 uint4; -typedef XMINT2 int2; -typedef XMINT3 int3; -typedef XMINT4 int4; +using matrix = XMMATRIX; +using float3x4 = XMFLOAT3X4; +using float4x4 = XMFLOAT4X4; +using float2 = XMFLOAT2; +using float3 = XMFLOAT3; +using float4 = XMFLOAT4; +using uint = uint32_t; +using uint2 = XMUINT2; +using uint3 = XMUINT3; +using uint4 = XMUINT4; +using int2 = XMINT2; +using int3 = XMINT3; +using int4 = XMINT4; #define column_major #define row_major @@ -38,45 +34,6 @@ typedef XMINT4 int4; #define CBUFFER(name, slot) cbuffer name : register(b ## slot) #define CONSTANTBUFFER(name, type, slot) ConstantBuffer< type > name : register(b ## slot) -#define RAWBUFFER(name,slot) ByteAddressBuffer name : register(t ## slot) -#define RWRAWBUFFER(name,slot) RWByteAddressBuffer name : register(u ## slot) - -#define TYPEDBUFFER(name, type, slot) Buffer< type > name : register(t ## slot) -#define RWTYPEDBUFFER(name, type, slot) RWBuffer< type > name : register(u ## slot) - -#define STRUCTUREDBUFFER(name, type, slot) StructuredBuffer< type > name : register(t ## slot) -#define RWSTRUCTUREDBUFFER(name, type, slot) RWStructuredBuffer< type > name : register(u ## slot) -#define ROVSTRUCTUREDBUFFER(name, type, slot) RasterizerOrderedStructuredBuffer< type > name : register(u ## slot) - - -#define TEXTURE1D(name, type, slot) Texture1D< type > name : register(t ## slot) -#define TEXTURE1DARRAY(name, type, slot) Texture1DArray< type > name : register(t ## slot) -#define RWTEXTURE1D(name, type, slot) RWTexture1D< type > name : register(u ## slot) - -#define TEXTURE2D(name, type, slot) Texture2D< type > name : register(t ## slot) -#define TEXTURE2DMS(name, type, slot) Texture2DMS< type > name : register(t ## slot) -#define TEXTURE2DARRAY(name, type, slot) Texture2DArray< type > name : register(t ## slot) -#define RWTEXTURE2D(name, type, slot) RWTexture2D< type > name : register(u ## slot) -#define RWTEXTURE2DARRAY(name, type, slot) RWTexture2DArray< type > name : register(u ## slot) -#define ROVTEXTURE2D(name, type, slot) RasterizerOrderedTexture2D< type > name : register(u ## slot) - -#define TEXTURECUBE(name, type, slot) TextureCube< type > name : register(t ## slot) -#define TEXTURECUBEARRAY(name, type, slot) TextureCubeArray< type > name : register(t ## slot) - -#define TEXTURE3D(name, type, slot) Texture3D< type > name : register(t ## slot) -#define RWTEXTURE3D(name, type, slot) RWTexture3D< type > name : register(u ## slot) -#define ROVTEXTURE3D(name, type, slot) RasterizerOrderedTexture3D< type > name : register(u ## slot) - - -#define SAMPLERSTATE(name, slot) SamplerState name : register(s ## slot) -#define SAMPLERCOMPARISONSTATE(name, slot) SamplerComparisonState name : register(s ## slot) - - -#if defined(HLSL6) || defined(SPIRV) -#define BINDLESS -#define RAYTRACINGACCELERATIONSTRUCTURE(name, slot) RaytracingAccelerationStructure name : register(t ## slot) -#endif // HLSL6 || SPIRV - #ifdef SPIRV #define PUSHCONSTANT(name, type) [[vk::push_constant]] type name; #endif // SPIRV @@ -85,11 +42,6 @@ typedef XMINT4 int4; #define PUSHCONSTANT(name, type) ConstantBuffer name : register(b999) #endif // HLSL6 -#ifdef DISABLE_WAVE_INTRINSICS -#define WaveReadLaneFirst(a) (a) -#define WaveActiveBitOr(a) (a) -#endif // DISABLE_WAVE_INTRINSICS - struct IndirectDrawArgsInstanced { uint VertexCountPerInstance; @@ -115,4 +67,30 @@ struct IndirectDispatchArgs #endif // __cplusplus +// Common buffers: +// These are usable by all shaders +#define CBSLOT_RENDERER_FRAME 0 +#define CBSLOT_RENDERER_CAMERA 1 + +// On demand buffers: +// These are bound on demand and alive until another is bound at the same slot + +#define CBSLOT_RENDERER_MISC 5 +#define CBSLOT_RENDERER_FORWARD_LIGHTMASK 7 +#define CBSLOT_RENDERER_VOLUMELIGHT 7 +#define CBSLOT_RENDERER_VOXELIZER 7 +#define CBSLOT_RENDERER_TRACED 7 +#define CBSLOT_RENDERER_BVH 7 +#define CBSLOT_RENDERER_CUBEMAPRENDER 8 + +#define CBSLOT_OTHER_EMITTEDPARTICLE 7 +#define CBSLOT_OTHER_HAIRPARTICLE 7 +#define CBSLOT_OTHER_FFTGENERATOR 7 +#define CBSLOT_OTHER_OCEAN_SIMULATION_IMMUTABLE 7 +#define CBSLOT_OTHER_OCEAN_SIMULATION_PERFRAME 8 +#define CBSLOT_OTHER_OCEAN_RENDER 7 +#define CBSLOT_OTHER_CLOUDGENERATOR 7 +#define CBSLOT_OTHER_GPUSORTLIB 8 + + #endif // WI_SHADERINTEROP_H diff --git a/WickedEngine/shaders/Shaders_SOURCE.vcxitems b/WickedEngine/shaders/Shaders_SOURCE.vcxitems index 0d8cfa97a..379b713d4 100644 --- a/WickedEngine/shaders/Shaders_SOURCE.vcxitems +++ b/WickedEngine/shaders/Shaders_SOURCE.vcxitems @@ -2820,9 +2820,6 @@ - - - diff --git a/WickedEngine/shaders/Shaders_SOURCE.vcxitems.filters b/WickedEngine/shaders/Shaders_SOURCE.vcxitems.filters index 197c40493..763ae7859 100644 --- a/WickedEngine/shaders/Shaders_SOURCE.vcxitems.filters +++ b/WickedEngine/shaders/Shaders_SOURCE.vcxitems.filters @@ -1006,15 +1006,6 @@ - - interop - - - interop - - - interop - interop diff --git a/WickedEngine/shaders/bitonicSortHF.hlsli b/WickedEngine/shaders/bitonicSortHF.hlsli index e77a22639..15b2cf664 100644 --- a/WickedEngine/shaders/bitonicSortHF.hlsli +++ b/WickedEngine/shaders/bitonicSortHF.hlsli @@ -10,8 +10,9 @@ CBUFFER(CB,0) }; -RAWBUFFER(Input, 0); -RWRAWBUFFER(Data, 0); +ByteAddressBuffer Input : register(t0); + +RWByteAddressBuffer Data : register(u0); static const uint _stride = 4; // using 32 bit uints diff --git a/WickedEngine/shaders/blur_gaussian_float4CS.hlsl b/WickedEngine/shaders/blur_gaussian_float4CS.hlsl index 68343d0e1..6cc4c0ead 100644 --- a/WickedEngine/shaders/blur_gaussian_float4CS.hlsl +++ b/WickedEngine/shaders/blur_gaussian_float4CS.hlsl @@ -7,9 +7,9 @@ PUSHCONSTANT(postprocess, PostProcess); #define BLUR_FORMAT float4 #endif // BLUR_FORMAT -TEXTURE2D(input, BLUR_FORMAT, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, BLUR_FORMAT, 0); +RWTexture2D output : register(u0); // Calculate gaussian weights online: http://dev.theomader.com/gaussian-kernel-calculator/ #ifdef BLUR_WIDE diff --git a/WickedEngine/shaders/bvh_hierarchyCS.hlsl b/WickedEngine/shaders/bvh_hierarchyCS.hlsl index b7a3ce809..cd6ec6447 100644 --- a/WickedEngine/shaders/bvh_hierarchyCS.hlsl +++ b/WickedEngine/shaders/bvh_hierarchyCS.hlsl @@ -12,13 +12,13 @@ // in "Maximizing Parallelism in the Construction of BVHs, Octrees, // and k-d Trees" -RAWBUFFER(primitiveCounterBuffer, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(primitiveIDBuffer, uint, TEXSLOT_ONDEMAND1); -STRUCTUREDBUFFER(primitiveMortonBuffer, float, TEXSLOT_ONDEMAND2); // float because it was sorted +ByteAddressBuffer primitiveCounterBuffer : register(t0); +StructuredBuffer primitiveIDBuffer : register(t1); +StructuredBuffer primitiveMortonBuffer : register(t2); // float because it was sorted -RWRAWBUFFER(bvhNodeBuffer, 0); -RWSTRUCTUREDBUFFER(bvhParentBuffer, uint, 1); -RWSTRUCTUREDBUFFER(bvhFlagBuffer, uint, 2); +RWByteAddressBuffer bvhNodeBuffer : register(u0); +RWStructuredBuffer bvhParentBuffer : register(u1); +RWStructuredBuffer bvhFlagBuffer : register(u2); int CountLeadingZeroes(uint num) { diff --git a/WickedEngine/shaders/bvh_primitivesCS.hlsl b/WickedEngine/shaders/bvh_primitivesCS.hlsl index 6bbab6353..c653c8fa1 100644 --- a/WickedEngine/shaders/bvh_primitivesCS.hlsl +++ b/WickedEngine/shaders/bvh_primitivesCS.hlsl @@ -8,9 +8,9 @@ PUSHCONSTANT(push, BVHPushConstants); -RWSTRUCTUREDBUFFER(primitiveIDBuffer, uint, 0); -RWRAWBUFFER(primitiveBuffer, 1); -RWSTRUCTUREDBUFFER(primitiveMortonBuffer, float, 2); // morton buffer is float because sorting is written for floats! +RWStructuredBuffer primitiveIDBuffer : register(u0); +RWByteAddressBuffer primitiveBuffer : register(u1); +RWStructuredBuffer primitiveMortonBuffer : register(u2); // morton buffer is float because sorting is written for floats! [numthreads(BVH_BUILDER_GROUPSIZE, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex) diff --git a/WickedEngine/shaders/bvh_propagateaabbCS.hlsl b/WickedEngine/shaders/bvh_propagateaabbCS.hlsl index ccdee789c..f943d2ec8 100644 --- a/WickedEngine/shaders/bvh_propagateaabbCS.hlsl +++ b/WickedEngine/shaders/bvh_propagateaabbCS.hlsl @@ -7,13 +7,13 @@ // Parent node will merge child AABBs and store // Loop until we reach the root... -RAWBUFFER(primitiveCounterBuffer, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(primitiveIDBuffer, uint, TEXSLOT_ONDEMAND1); -RAWBUFFER(primitiveBuffer, TEXSLOT_ONDEMAND2); -STRUCTUREDBUFFER(bvhParentBuffer, uint, TEXSLOT_ONDEMAND3); +ByteAddressBuffer primitiveCounterBuffer : register(t0); +StructuredBuffer primitiveIDBuffer : register(t1); +ByteAddressBuffer primitiveBuffer : register(t2); +StructuredBuffer bvhParentBuffer : register(t3); -RWRAWBUFFER(bvhNodeBuffer, 0); -RWSTRUCTUREDBUFFER(bvhFlagBuffer, uint, 1); +RWByteAddressBuffer bvhNodeBuffer : register(u0); +RWStructuredBuffer bvhFlagBuffer : register(u1); [numthreads(BVH_BUILDER_GROUPSIZE, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/chromatic_aberrationCS.hlsl b/WickedEngine/shaders/chromatic_aberrationCS.hlsl index e1a6e93d2..1361c9141 100644 --- a/WickedEngine/shaders/chromatic_aberrationCS.hlsl +++ b/WickedEngine/shaders/chromatic_aberrationCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/copytexture2D_float4CS.hlsl b/WickedEngine/shaders/copytexture2D_float4CS.hlsl index 5f54aa08a..831a45946 100644 --- a/WickedEngine/shaders/copytexture2D_float4CS.hlsl +++ b/WickedEngine/shaders/copytexture2D_float4CS.hlsl @@ -7,9 +7,9 @@ PUSHCONSTANT(push, CopyTextureCB); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, COPY_OUTPUT_FORMAT, 0); +RWTexture2D output : register(u0); [numthreads(8, 8, 1)] void main(int3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/copytexture2D_float4_borderexpandCS.hlsl b/WickedEngine/shaders/copytexture2D_float4_borderexpandCS.hlsl index 850ee8663..13812784f 100644 --- a/WickedEngine/shaders/copytexture2D_float4_borderexpandCS.hlsl +++ b/WickedEngine/shaders/copytexture2D_float4_borderexpandCS.hlsl @@ -7,9 +7,9 @@ PUSHCONSTANT(push, CopyTextureCB); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, COPY_OUTPUT_FORMAT, 0); +RWTexture2D output : register(u0); [numthreads(8, 8, 1)] void main(int3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/cubeMapPS.hlsl b/WickedEngine/shaders/cubeMapPS.hlsl index 81d04e023..4c25cffa8 100644 --- a/WickedEngine/shaders/cubeMapPS.hlsl +++ b/WickedEngine/shaders/cubeMapPS.hlsl @@ -1,6 +1,6 @@ #include "globals.hlsli" -TEXTURECUBE(cubeMap, float4, TEXSLOT_ONDEMAND0); +TextureCube cubeMap : register(t0); struct VSOut_Sphere { @@ -15,4 +15,4 @@ float4 main(VSOut_Sphere input) : SV_TARGET float3 N = normalize(input.nor); float3 V = normalize(GetCamera().position - P); return float4(cubeMap.Sample(sampler_linear_clamp, -reflect(V, N)).rgb, 1); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/depthoffield_kickjobsCS.hlsl b/WickedEngine/shaders/depthoffield_kickjobsCS.hlsl index f4e748228..14558850e 100644 --- a/WickedEngine/shaders/depthoffield_kickjobsCS.hlsl +++ b/WickedEngine/shaders/depthoffield_kickjobsCS.hlsl @@ -1,10 +1,10 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -RWRAWBUFFER(tile_statistics, 0); -RWSTRUCTUREDBUFFER(tiles_earlyexit, uint, 1); -RWSTRUCTUREDBUFFER(tiles_cheap, uint, 2); -RWSTRUCTUREDBUFFER(tiles_expensive, uint, 3); +RWByteAddressBuffer tile_statistics : register(u0); +RWStructuredBuffer tiles_earlyexit : register(u1); +RWStructuredBuffer tiles_cheap : register(u2); +RWStructuredBuffer tiles_expensive : register(u3); [numthreads(1, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/depthoffield_mainCS.hlsl b/WickedEngine/shaders/depthoffield_mainCS.hlsl index cdd5f807e..53624641a 100644 --- a/WickedEngine/shaders/depthoffield_mainCS.hlsl +++ b/WickedEngine/shaders/depthoffield_mainCS.hlsl @@ -6,20 +6,20 @@ //#define DEBUG_TILING -TEXTURE2D(neighborhood_mindepth_maxcoc, float2, TEXSLOT_ONDEMAND0); -TEXTURE2D(texture_presort, float3, TEXSLOT_ONDEMAND1); -TEXTURE2D(texture_prefilter, float3, TEXSLOT_ONDEMAND2); +Texture2D neighborhood_mindepth_maxcoc : register(t0); +Texture2D texture_presort : register(t1); +Texture2D texture_prefilter : register(t2); #if defined(DEPTHOFFIELD_EARLYEXIT) -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND3); +StructuredBuffer tiles : register(t3); #elif defined(DEPTHOFFIELD_CHEAP) -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND4); +StructuredBuffer tiles : register(t4); #else -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND5); +StructuredBuffer tiles : register(t5); #endif // DEPTHOFFIELD_EARLYEXIT -RWTEXTURE2D(output_main, float3, 0); -RWTEXTURE2D(output_alpha, unorm float, 1); +RWTexture2D output_main : register(u0); +RWTexture2D output_alpha : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE * POSTPROCESS_BLOCKSIZE, 1, 1)] void main(uint3 Gid : SV_GroupID, uint3 GTid : SV_GroupThreadID) diff --git a/WickedEngine/shaders/depthoffield_neighborhoodMaxCOCCS.hlsl b/WickedEngine/shaders/depthoffield_neighborhoodMaxCOCCS.hlsl index f15175c09..0a914cfcb 100644 --- a/WickedEngine/shaders/depthoffield_neighborhoodMaxCOCCS.hlsl +++ b/WickedEngine/shaders/depthoffield_neighborhoodMaxCOCCS.hlsl @@ -1,14 +1,14 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(tile_mindepth_maxcoc, float2, TEXSLOT_ONDEMAND0); -TEXTURE2D(tile_mincoc, float, TEXSLOT_ONDEMAND1); +Texture2D tile_mindepth_maxcoc : register(t0); +Texture2D tile_mincoc : register(t1); -RWRAWBUFFER(tile_statistics, 0); -RWSTRUCTUREDBUFFER(tiles_earlyexit, uint, 1); -RWSTRUCTUREDBUFFER(tiles_cheap, uint, 2); -RWSTRUCTUREDBUFFER(tiles_expensive, uint, 3); -RWTEXTURE2D(output, float2, 4); +RWByteAddressBuffer tile_statistics : register(u0); +RWStructuredBuffer tiles_earlyexit : register(u1); +RWStructuredBuffer tiles_cheap : register(u2); +RWStructuredBuffer tiles_expensive : register(u3); +RWTexture2D output : register(u4); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) @@ -54,4 +54,4 @@ void main(uint3 DTid : SV_DispatchThreadID) tiles_expensive[prevCount] = tile; } output[DTid.xy] = float2(min_depth, max_coc); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/depthoffield_postfilterCS.hlsl b/WickedEngine/shaders/depthoffield_postfilterCS.hlsl index f8b2cb170..1f11e5fe5 100644 --- a/WickedEngine/shaders/depthoffield_postfilterCS.hlsl +++ b/WickedEngine/shaders/depthoffield_postfilterCS.hlsl @@ -3,11 +3,11 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(texture_main, float3, TEXSLOT_ONDEMAND0); -TEXTURE2D(texture_alpha, float, TEXSLOT_ONDEMAND1); +Texture2D texture_main : register(t0); +Texture2D texture_alpha : register(t1); -RWTEXTURE2D(output_postfilter, float3, 0); -RWTEXTURE2D(output_alpha, unorm float, 1); +RWTexture2D output_postfilter : register(u0); +RWTexture2D output_alpha : register(u1); float min3(float a, float b, float c) { diff --git a/WickedEngine/shaders/depthoffield_prepassCS.hlsl b/WickedEngine/shaders/depthoffield_prepassCS.hlsl index a673dbe0e..ba403c598 100644 --- a/WickedEngine/shaders/depthoffield_prepassCS.hlsl +++ b/WickedEngine/shaders/depthoffield_prepassCS.hlsl @@ -2,12 +2,12 @@ #include "ShaderInterop_Postprocess.h" #include "depthOfFieldHF.hlsli" -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(neighborhood_mindepth_maxcoc, float2, TEXSLOT_ONDEMAND1); -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND2); +Texture2D input : register(t0); +Texture2D neighborhood_mindepth_maxcoc : register(t1); +StructuredBuffer tiles : register(t2); -RWTEXTURE2D(output_presort, float3, 0); -RWTEXTURE2D(output_prefilter, float3, 1); +RWTexture2D output_presort : register(u0); +RWTexture2D output_prefilter : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE * POSTPROCESS_BLOCKSIZE, 1, 1)] void main(uint3 Gid : SV_GroupID, uint3 GTid : SV_GroupThreadID) diff --git a/WickedEngine/shaders/depthoffield_tileMaxCOC_horizontalCS.hlsl b/WickedEngine/shaders/depthoffield_tileMaxCOC_horizontalCS.hlsl index 85b08e0e7..798a6a471 100644 --- a/WickedEngine/shaders/depthoffield_tileMaxCOC_horizontalCS.hlsl +++ b/WickedEngine/shaders/depthoffield_tileMaxCOC_horizontalCS.hlsl @@ -2,8 +2,8 @@ #include "ShaderInterop_Postprocess.h" #include "depthOfFieldHF.hlsli" -RWTEXTURE2D(tile_mindepth_maxcoc, float2, 0); -RWTEXTURE2D(tile_mincoc, float, 1); +RWTexture2D tile_mindepth_maxcoc : register(u0); +RWTexture2D tile_mincoc : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/depthoffield_tileMaxCOC_verticalCS.hlsl b/WickedEngine/shaders/depthoffield_tileMaxCOC_verticalCS.hlsl index 09c3f612f..d50beed92 100644 --- a/WickedEngine/shaders/depthoffield_tileMaxCOC_verticalCS.hlsl +++ b/WickedEngine/shaders/depthoffield_tileMaxCOC_verticalCS.hlsl @@ -1,11 +1,11 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(tile_mindepth_maxcoc_horizontal, float2, TEXSLOT_ONDEMAND0); -TEXTURE2D(tile_mincoc_horizontal, float, TEXSLOT_ONDEMAND1); +Texture2D tile_mindepth_maxcoc_horizontal : register(t0); +Texture2D tile_mincoc_horizontal : register(t1); -RWTEXTURE2D(mindepth_maxcoc, float2, 0); -RWTEXTURE2D(mincoc, float, 1); +RWTexture2D mindepth_maxcoc : register(u0); +RWTexture2D mincoc : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/depthoffield_upsampleCS.hlsl b/WickedEngine/shaders/depthoffield_upsampleCS.hlsl index b452703a3..ad5299b32 100644 --- a/WickedEngine/shaders/depthoffield_upsampleCS.hlsl +++ b/WickedEngine/shaders/depthoffield_upsampleCS.hlsl @@ -2,12 +2,12 @@ #include "ShaderInterop_Postprocess.h" #include "depthOfFieldHF.hlsli" -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(texture_postfilter, float3, TEXSLOT_ONDEMAND1); -TEXTURE2D(texture_alpha, float, TEXSLOT_ONDEMAND2); -TEXTURE2D(neighborhood_mindepth_maxcoc, float2, TEXSLOT_ONDEMAND3); +Texture2D input : register(t0); +Texture2D texture_postfilter : register(t1); +Texture2D texture_alpha : register(t2); +Texture2D neighborhood_mindepth_maxcoc : register(t3); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/downsample4xCS.hlsl b/WickedEngine/shaders/downsample4xCS.hlsl index 029ee9ebd..2b168f639 100644 --- a/WickedEngine/shaders/downsample4xCS.hlsl +++ b/WickedEngine/shaders/downsample4xCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/downsampleDepthBuffer4xPS.hlsl b/WickedEngine/shaders/downsampleDepthBuffer4xPS.hlsl index 231968679..5d9e3d0d5 100644 --- a/WickedEngine/shaders/downsampleDepthBuffer4xPS.hlsl +++ b/WickedEngine/shaders/downsampleDepthBuffer4xPS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(input, float, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); float main(float4 pos : SV_Position, float2 uv : TEXCOORD) : SV_DEPTH { @@ -16,4 +16,4 @@ float main(float4 pos : SV_Position, float2 uv : TEXCOORD) : SV_DEPTH float min3 = min(samples3.x, min(samples3.y, min(samples3.z, samples3.w))); return min(min0, min(min1, min(min2, min3))); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/emittedparticleMS.hlsl b/WickedEngine/shaders/emittedparticleMS.hlsl index eddf69250..240ffc374 100644 --- a/WickedEngine/shaders/emittedparticleMS.hlsl +++ b/WickedEngine/shaders/emittedparticleMS.hlsl @@ -10,10 +10,10 @@ static const float3 BILLBOARD[] = { }; static const uint BILLBOARD_VERTEXCOUNT = 4; -RAWBUFFER(counterBuffer, TEXSLOT_ONDEMAND20); -STRUCTUREDBUFFER(particleBuffer, Particle, TEXSLOT_ONDEMAND21); -STRUCTUREDBUFFER(culledIndirectionBuffer, uint, TEXSLOT_ONDEMAND22); -STRUCTUREDBUFFER(culledIndirectionBuffer2, uint, TEXSLOT_ONDEMAND23); +ByteAddressBuffer counterBuffer : register(t20); +StructuredBuffer particleBuffer, Particle : register(t21); +StructuredBuffer culledIndirectionBuffer : register(t22); +StructuredBuffer culledIndirectionBuffer2 : register(t23); static const uint VERTEXCOUNT = THREADCOUNT_MESH_SHADER * BILLBOARD_VERTEXCOUNT; static const uint PRIMITIVECOUNT = THREADCOUNT_MESH_SHADER * 2; diff --git a/WickedEngine/shaders/emittedparticleVS.hlsl b/WickedEngine/shaders/emittedparticleVS.hlsl index 81b1103c4..ec9b47817 100644 --- a/WickedEngine/shaders/emittedparticleVS.hlsl +++ b/WickedEngine/shaders/emittedparticleVS.hlsl @@ -9,9 +9,9 @@ static const float3 BILLBOARD[] = { float3(1, 1, 0), // 4 }; -STRUCTUREDBUFFER(particleBuffer, Particle, TEXSLOT_ONDEMAND21); -STRUCTUREDBUFFER(culledIndirectionBuffer, uint, TEXSLOT_ONDEMAND22); -STRUCTUREDBUFFER(culledIndirectionBuffer2, uint, TEXSLOT_ONDEMAND23); +StructuredBuffer particleBuffer : register(t21); +StructuredBuffer culledIndirectionBuffer : register(t22); +StructuredBuffer culledIndirectionBuffer2 : register(t23); VertextoPixel main(uint vid : SV_VertexID, uint instanceID : SV_InstanceID) { diff --git a/WickedEngine/shaders/emittedparticle_emitCS.hlsl b/WickedEngine/shaders/emittedparticle_emitCS.hlsl index a5574a85a..57684df3c 100644 --- a/WickedEngine/shaders/emittedparticle_emitCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_emitCS.hlsl @@ -2,15 +2,15 @@ #include "emittedparticleHF.hlsli" #include "ShaderInterop_EmittedParticle.h" -RWSTRUCTUREDBUFFER(particleBuffer, Particle, 0); -RWSTRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 1); -RWSTRUCTUREDBUFFER(aliveBuffer_NEW, uint, 2); -RWSTRUCTUREDBUFFER(deadBuffer, uint, 3); -RWRAWBUFFER(counterBuffer, 4); +RWStructuredBuffer particleBuffer : register(u0); +RWStructuredBuffer aliveBuffer_CURRENT : register(u1); +RWStructuredBuffer aliveBuffer_NEW : register(u2); +RWStructuredBuffer deadBuffer : register(u3); +RWByteAddressBuffer counterBuffer : register(u4); #ifdef EMIT_FROM_MESH -TYPEDBUFFER(meshIndexBuffer, uint, TEXSLOT_ONDEMAND0); -RAWBUFFER(meshVertexBuffer_POS, TEXSLOT_ONDEMAND1); +Buffer meshIndexBuffer : register(t0); +ByteAddressBuffer meshVertexBuffer_POS : register(t1); #endif // EMIT_FROM_MESH diff --git a/WickedEngine/shaders/emittedparticle_finishUpdateCS.hlsl b/WickedEngine/shaders/emittedparticle_finishUpdateCS.hlsl index d52fa0c36..0ca06bb32 100644 --- a/WickedEngine/shaders/emittedparticle_finishUpdateCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_finishUpdateCS.hlsl @@ -1,9 +1,9 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -RAWBUFFER(counterBuffer, TEXSLOT_ONDEMAND0); +ByteAddressBuffer counterBuffer : register(t0); -RWRAWBUFFER(indirectBuffers, 0); +RWByteAddressBuffer indirectBuffers : register(u0); [numthreads(1, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/shaders/emittedparticle_kickoffUpdateCS.hlsl b/WickedEngine/shaders/emittedparticle_kickoffUpdateCS.hlsl index c89dd2d87..ee2a0e147 100644 --- a/WickedEngine/shaders/emittedparticle_kickoffUpdateCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_kickoffUpdateCS.hlsl @@ -1,8 +1,8 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -RWRAWBUFFER(counterBuffer, 4); -RWRAWBUFFER(indirectBuffers, 5); +RWByteAddressBuffer counterBuffer : register(u4); +RWByteAddressBuffer indirectBuffers : register(u5); [numthreads(1, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/emittedparticle_simulateCS.hlsl b/WickedEngine/shaders/emittedparticle_simulateCS.hlsl index 62bb8b259..dbe3ffcae 100644 --- a/WickedEngine/shaders/emittedparticle_simulateCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_simulateCS.hlsl @@ -9,18 +9,18 @@ static const float3 BILLBOARD[] = { float3(1, 1, 0), // 4 }; -RWSTRUCTUREDBUFFER(particleBuffer, Particle, 0); -RWSTRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 1); -RWSTRUCTUREDBUFFER(aliveBuffer_NEW, uint, 2); -RWSTRUCTUREDBUFFER(deadBuffer, uint, 3); -RWRAWBUFFER(counterBuffer, 4); -RWSTRUCTUREDBUFFER(distanceBuffer, float, 6); -RWRAWBUFFER(vertexBuffer_POS, 7); -RWRAWBUFFER(vertexBuffer_TEX, 8); -RWRAWBUFFER(vertexBuffer_TEX2, 9); -RWRAWBUFFER(vertexBuffer_COL, 10); -RWSTRUCTUREDBUFFER(culledIndirectionBuffer, uint, 11); -RWSTRUCTUREDBUFFER(culledIndirectionBuffer2, uint, 12); +RWStructuredBuffer particleBuffer : register(u0); +RWStructuredBuffer aliveBuffer_CURRENT : register(u1); +RWStructuredBuffer aliveBuffer_NEW : register(u2); +RWStructuredBuffer deadBuffer : register(u3); +RWByteAddressBuffer counterBuffer : register(u4); +RWStructuredBuffer distanceBuffer : register(u6); +RWByteAddressBuffer vertexBuffer_POS : register(u7); +RWByteAddressBuffer vertexBuffer_TEX : register(u8); +RWByteAddressBuffer vertexBuffer_TEX2 : register(u9); +RWByteAddressBuffer vertexBuffer_COL : register(u10); +RWStructuredBuffer culledIndirectionBuffer : register(u11); +RWStructuredBuffer culledIndirectionBuffer2 : register(u12); #define SPH_FLOOR_COLLISION #define SPH_BOX_COLLISION diff --git a/WickedEngine/shaders/emittedparticle_sphdensityCS.hlsl b/WickedEngine/shaders/emittedparticle_sphdensityCS.hlsl index fd502a1e6..8aa422ddb 100644 --- a/WickedEngine/shaders/emittedparticle_sphdensityCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_sphdensityCS.hlsl @@ -1,13 +1,13 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -STRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 0); -RAWBUFFER(counterBuffer, 1); -STRUCTUREDBUFFER(particleBuffer, Particle, 2); -STRUCTUREDBUFFER(cellIndexBuffer, float, 3); -STRUCTUREDBUFFER(cellOffsetBuffer, uint, 4); +StructuredBuffer aliveBuffer_CURRENT : register(t0); +ByteAddressBuffer counterBuffer : register(t1); +StructuredBuffer particleBuffer : register(t2); +StructuredBuffer cellIndexBuffer : register(t3); +StructuredBuffer cellOffsetBuffer : register(t4); -RWSTRUCTUREDBUFFER(densityBuffer, float, 0); +RWStructuredBuffer densityBuffer : register(u0); #ifndef SPH_USE_ACCELERATION_GRID // grid structure is not a good fit to exploit shared memory because one threadgroup can load from different initial cells :( diff --git a/WickedEngine/shaders/emittedparticle_sphforceCS.hlsl b/WickedEngine/shaders/emittedparticle_sphforceCS.hlsl index 3b2f7dde5..ec9207866 100644 --- a/WickedEngine/shaders/emittedparticle_sphforceCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_sphforceCS.hlsl @@ -3,13 +3,13 @@ //#define DEBUG_PRESSURE -STRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 0); -RAWBUFFER(counterBuffer, 1); -STRUCTUREDBUFFER(densityBuffer, float, 2); -STRUCTUREDBUFFER(cellIndexBuffer, float, 3); -STRUCTUREDBUFFER(cellOffsetBuffer, uint, 4); +StructuredBuffer aliveBuffer_CURRENT : register(t0); +ByteAddressBuffer counterBuffer : register(t1); +StructuredBuffer densityBuffer : register(t2); +StructuredBuffer cellIndexBuffer : register(t3); +StructuredBuffer cellOffsetBuffer : register(t4); -RWSTRUCTUREDBUFFER(particleBuffer, Particle, 0); +RWStructuredBuffer particleBuffer : register(u0); #ifndef SPH_USE_ACCELERATION_GRID // grid structure is not a good fit to exploit shared memory because one threadgroup can load from different initial cells :( diff --git a/WickedEngine/shaders/emittedparticle_sphpartitionCS.hlsl b/WickedEngine/shaders/emittedparticle_sphpartitionCS.hlsl index 2a15dfbbf..f252346cf 100644 --- a/WickedEngine/shaders/emittedparticle_sphpartitionCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_sphpartitionCS.hlsl @@ -1,11 +1,11 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -STRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 0); -RAWBUFFER(counterBuffer, 1); -STRUCTUREDBUFFER(particleBuffer, Particle, 2); +StructuredBuffer aliveBuffer_CURRENT : register(t0); +ByteAddressBuffer counterBuffer : register(t1); +StructuredBuffer particleBuffer : register(t2); -RWSTRUCTUREDBUFFER(cellIndexBuffer, float, 0); +RWStructuredBuffer cellIndexBuffer : register(u0); [numthreads(THREADCOUNT_SIMULATION, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsCS.hlsl b/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsCS.hlsl index 0a5ca9e1e..ac1e27136 100644 --- a/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsCS.hlsl @@ -1,11 +1,11 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -STRUCTUREDBUFFER(aliveBuffer_CURRENT, uint, 0); -RAWBUFFER(counterBuffer, 1); -STRUCTUREDBUFFER(cellIndexBuffer, float, 2); +StructuredBuffer aliveBuffer_CURRENT : register(t0); +ByteAddressBuffer counterBuffer : register(t1); +StructuredBuffer cellIndexBuffer : register(t2); -RWSTRUCTUREDBUFFER(cellOffsetBuffer, uint, 0); +RWStructuredBuffer cellOffsetBuffer : register(u0); [numthreads(THREADCOUNT_SIMULATION, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsresetCS.hlsl b/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsresetCS.hlsl index 108d31baa..244d2db7e 100644 --- a/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsresetCS.hlsl +++ b/WickedEngine/shaders/emittedparticle_sphpartitionoffsetsresetCS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_EmittedParticle.h" -RWSTRUCTUREDBUFFER(cellOffsetBuffer, uint, 0); +RWStructuredBuffer cellOffsetBuffer : register(u0); [numthreads(THREADCOUNT_SIMULATION, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/envMap_skyPS_static.hlsl b/WickedEngine/shaders/envMap_skyPS_static.hlsl index 2cd3acc16..76a4d4770 100644 --- a/WickedEngine/shaders/envMap_skyPS_static.hlsl +++ b/WickedEngine/shaders/envMap_skyPS_static.hlsl @@ -3,7 +3,7 @@ #include "objectHF.hlsli" #include "skyHF.hlsli" -TEXTURECUBE(texture_sky, float4, TEXSLOT_ONDEMAND0); +TextureCube texture_sky : register(t0); float4 main(PixelInput input) : SV_TARGET { diff --git a/WickedEngine/shaders/fft_512x512_c2c_CS.hlsl b/WickedEngine/shaders/fft_512x512_c2c_CS.hlsl index c873620a5..9faccab3a 100644 --- a/WickedEngine/shaders/fft_512x512_c2c_CS.hlsl +++ b/WickedEngine/shaders/fft_512x512_c2c_CS.hlsl @@ -83,8 +83,9 @@ void TWIDDLE_8(inout float2 D[8], float phase) TWIDDLE(D[7], 7 * phase); } -STRUCTUREDBUFFER(g_SrcData, float2, TEXSLOT_ONDEMAND0); -RWSTRUCTUREDBUFFER(g_DstData, float2, 0); +StructuredBuffer g_SrcData : register(t0); + +RWStructuredBuffer g_DstData : register(u0); #ifndef FFT_V2 diff --git a/WickedEngine/shaders/fontPS.hlsl b/WickedEngine/shaders/fontPS.hlsl index 8108f75d0..39f37ecd9 100644 --- a/WickedEngine/shaders/fontPS.hlsl +++ b/WickedEngine/shaders/fontPS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_Font.h" -SAMPLERSTATE(sampler_font, SSLOT_ONDEMAND1); +SamplerState sampler_font : register(s0); struct VertextoPixel { diff --git a/WickedEngine/shaders/fsr_sharpenCS.hlsl b/WickedEngine/shaders/fsr_sharpenCS.hlsl index 3d2c2621c..8c1575e56 100644 --- a/WickedEngine/shaders/fsr_sharpenCS.hlsl +++ b/WickedEngine/shaders/fsr_sharpenCS.hlsl @@ -9,9 +9,9 @@ PUSHCONSTANT(fsr, FSR); static const uint4 Sample = 0; -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); #define FSR_RCAS_F AF4 FsrRcasLoadF(ASU2 p) { return input.Load(int3(ASU2(p), 0)); } diff --git a/WickedEngine/shaders/fsr_upscalingCS.hlsl b/WickedEngine/shaders/fsr_upscalingCS.hlsl index c2007e432..dd0c534b3 100644 --- a/WickedEngine/shaders/fsr_upscalingCS.hlsl +++ b/WickedEngine/shaders/fsr_upscalingCS.hlsl @@ -9,9 +9,9 @@ PUSHCONSTANT(fsr, FSR); static const uint4 Sample = 0; -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); AF4 FsrEasuRF(AF2 p) { AF4 res = input.GatherRed(sampler_linear_clamp, p, int2(0, 0)); return res; } AF4 FsrEasuGF(AF2 p) { AF4 res = input.GatherGreen(sampler_linear_clamp, p, int2(0, 0)); return res; } diff --git a/WickedEngine/shaders/fxaaCS.hlsl b/WickedEngine/shaders/fxaaCS.hlsl index d1df65493..a6f64545f 100644 --- a/WickedEngine/shaders/fxaaCS.hlsl +++ b/WickedEngine/shaders/fxaaCS.hlsl @@ -15,9 +15,9 @@ static const float fxaaSubpix = 0.75; static const float fxaaEdgeThreshold = 0.166; static const float fxaaEdgeThresholdMin = 0.0833; -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/globals.hlsli b/WickedEngine/shaders/globals.hlsli index ed5b5501c..cbe8b830f 100644 --- a/WickedEngine/shaders/globals.hlsli +++ b/WickedEngine/shaders/globals.hlsli @@ -5,6 +5,19 @@ #include "ShaderInterop.h" #include "ShaderInterop_Renderer.h" +// These are static samplers, they don't need to be bound: +// They are also on slots that are not bindable as sampler bind slots must be in [0,15] range! +SamplerState sampler_linear_clamp : register(s100); +SamplerState sampler_linear_wrap : register(s101); +SamplerState sampler_linear_mirror : register(s102); +SamplerState sampler_point_clamp : register(s103); +SamplerState sampler_point_wrap : register(s104); +SamplerState sampler_point_mirror : register(s105); +SamplerState sampler_aniso_clamp : register(s106); +SamplerState sampler_aniso_wrap : register(s107); +SamplerState sampler_aniso_mirror : register(s108); +SamplerComparisonState sampler_cmp_depth : register(s109); + Texture2D bindless_textures[] : register(space1); ByteAddressBuffer bindless_buffers[] : register(space2); SamplerState bindless_samplers[] : register(space3); @@ -91,18 +104,6 @@ inline float4x4 load_entitymatrix(uint matrixIndex) #define texture_gbuffer0 bindless_textures_uint2[GetCamera().texture_gbuffer0_index] #define texture_gbuffer1 bindless_textures_float2[GetCamera().texture_gbuffer1_index] -// These are static samplers, don't need to be bound: -SAMPLERSTATE( sampler_linear_clamp, SSLOT_LINEAR_CLAMP ); -SAMPLERSTATE( sampler_linear_wrap, SSLOT_LINEAR_WRAP ); -SAMPLERSTATE( sampler_linear_mirror, SSLOT_LINEAR_MIRROR ); -SAMPLERSTATE( sampler_point_clamp, SSLOT_POINT_CLAMP ); -SAMPLERSTATE( sampler_point_wrap, SSLOT_POINT_WRAP ); -SAMPLERSTATE( sampler_point_mirror, SSLOT_POINT_MIRROR ); -SAMPLERSTATE( sampler_aniso_clamp, SSLOT_ANISO_CLAMP ); -SAMPLERSTATE( sampler_aniso_wrap, SSLOT_ANISO_WRAP ); -SAMPLERSTATE( sampler_aniso_mirror, SSLOT_ANISO_MIRROR ); -SAMPLERCOMPARISONSTATE( sampler_cmp_depth, SSLOT_CMP_DEPTH ); - #define PI 3.14159265358979323846 #define SQRT2 1.41421356237309504880 #define FLT_MAX 3.402823466e+38 diff --git a/WickedEngine/shaders/gpusortlib_kickoffSortCS.hlsl b/WickedEngine/shaders/gpusortlib_kickoffSortCS.hlsl index a681c57a0..e2f374ec5 100644 --- a/WickedEngine/shaders/gpusortlib_kickoffSortCS.hlsl +++ b/WickedEngine/shaders/gpusortlib_kickoffSortCS.hlsl @@ -1,9 +1,9 @@ #include "globals.hlsli" #include "ShaderInterop_GPUSortLib.h" -RAWBUFFER(counterBuffer, 0); +ByteAddressBuffer counterBuffer : register(t0); -RWRAWBUFFER(indirectBuffers, 0); +RWByteAddressBuffer indirectBuffers : register(u0); [numthreads(1, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) @@ -24,4 +24,4 @@ void main( uint3 DTid : SV_DispatchThreadID ) // dispatch nothing: indirectBuffers.Store3(0, uint3(0, 0, 0)); } -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/gpusortlib_sortCS.hlsl b/WickedEngine/shaders/gpusortlib_sortCS.hlsl index c38b38591..558ac73c3 100644 --- a/WickedEngine/shaders/gpusortlib_sortCS.hlsl +++ b/WickedEngine/shaders/gpusortlib_sortCS.hlsl @@ -39,9 +39,10 @@ //-------------------------------------------------------------------------------------- // Structured Buffers //-------------------------------------------------------------------------------------- -RAWBUFFER(counterBuffer, 0); -STRUCTUREDBUFFER(comparisonBuffer, float, 1); -RWSTRUCTUREDBUFFER(indexBuffer, uint, 0); +ByteAddressBuffer counterBuffer : register(t0); +StructuredBuffer comparisonBuffer : register(t1); + +RWStructuredBuffer indexBuffer : register(u0); //-------------------------------------------------------------------------------------- diff --git a/WickedEngine/shaders/gpusortlib_sortInnerCS.hlsl b/WickedEngine/shaders/gpusortlib_sortInnerCS.hlsl index aab048c2b..002ad2b01 100644 --- a/WickedEngine/shaders/gpusortlib_sortInnerCS.hlsl +++ b/WickedEngine/shaders/gpusortlib_sortInnerCS.hlsl @@ -34,9 +34,10 @@ //-------------------------------------------------------------------------------------- // Structured Buffers //-------------------------------------------------------------------------------------- -RAWBUFFER(counterBuffer, 0); -STRUCTUREDBUFFER(comparisonBuffer, float, 1); -RWSTRUCTUREDBUFFER(indexBuffer, uint, 0); +ByteAddressBuffer counterBuffer : register(t0); +StructuredBuffer comparisonBuffer : register(t1); + +RWStructuredBuffer indexBuffer : register(u0); //-------------------------------------------------------------------------------------- diff --git a/WickedEngine/shaders/gpusortlib_sortStepCS.hlsl b/WickedEngine/shaders/gpusortlib_sortStepCS.hlsl index 7b346d685..629ca514f 100644 --- a/WickedEngine/shaders/gpusortlib_sortStepCS.hlsl +++ b/WickedEngine/shaders/gpusortlib_sortStepCS.hlsl @@ -25,9 +25,10 @@ //-------------------------------------------------------------------------------------- // Structured Buffers //-------------------------------------------------------------------------------------- -RAWBUFFER(counterBuffer, 0); -STRUCTUREDBUFFER(comparisonBuffer, float, 1); -RWSTRUCTUREDBUFFER(indexBuffer, uint, 0); +ByteAddressBuffer counterBuffer : register(t0); +StructuredBuffer comparisonBuffer : register(t1); + +RWStructuredBuffer indexBuffer : register(u0); [numthreads(256, 1, 1)] void main(uint3 Gid : SV_GroupID, diff --git a/WickedEngine/shaders/hairparticleVS.hlsl b/WickedEngine/shaders/hairparticleVS.hlsl index 44d574e73..52545d2a1 100644 --- a/WickedEngine/shaders/hairparticleVS.hlsl +++ b/WickedEngine/shaders/hairparticleVS.hlsl @@ -2,7 +2,7 @@ #include "hairparticleHF.hlsli" #include "ShaderInterop_HairParticle.h" -TYPEDBUFFER(primitiveBuffer, uint, 0); +Buffer primitiveBuffer : register(t0); VertexToPixel main(uint vid : SV_VERTEXID) { diff --git a/WickedEngine/shaders/hairparticle_finishUpdateCS.hlsl b/WickedEngine/shaders/hairparticle_finishUpdateCS.hlsl index 892d6b55f..f14673162 100644 --- a/WickedEngine/shaders/hairparticle_finishUpdateCS.hlsl +++ b/WickedEngine/shaders/hairparticle_finishUpdateCS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_HairParticle.h" -RWRAWBUFFER(counterBuffer, 0); +RWByteAddressBuffer counterBuffer : register(u0); [numthreads(1, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/shaders/hairparticle_simulateCS.hlsl b/WickedEngine/shaders/hairparticle_simulateCS.hlsl index 724845a23..6b7e566d2 100644 --- a/WickedEngine/shaders/hairparticle_simulateCS.hlsl +++ b/WickedEngine/shaders/hairparticle_simulateCS.hlsl @@ -9,15 +9,15 @@ static const float3 HAIRPATCH[] = { float3(1, 1, 0), }; -RWSTRUCTUREDBUFFER(simulationBuffer, PatchSimulationData, 0); -RWRAWBUFFER(vertexBuffer_POS, 1); -RWRAWBUFFER(vertexBuffer_TEX, 2); -RWTYPEDBUFFER(culledIndexBuffer, uint, 3); -RWRAWBUFFER(counterBuffer, 4); +Buffer meshIndexBuffer : register(t0); +ByteAddressBuffer meshVertexBuffer_POS : register(t1); +Buffer meshVertexBuffer_length : register(t2); -TYPEDBUFFER(meshIndexBuffer, uint, TEXSLOT_ONDEMAND0); -RAWBUFFER(meshVertexBuffer_POS, TEXSLOT_ONDEMAND1); -TYPEDBUFFER(meshVertexBuffer_length, float, TEXSLOT_ONDEMAND2); +RWStructuredBuffer simulationBuffer : register(u0); +RWByteAddressBuffer vertexBuffer_POS : register(u1); +RWByteAddressBuffer vertexBuffer_TEX : register(u2); +RWBuffer culledIndexBuffer : register(u3); +RWByteAddressBuffer counterBuffer : register(u4); [numthreads(THREADCOUNT_SIMULATEHAIR, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint groupIndex : SV_GroupIndex) diff --git a/WickedEngine/shaders/hbaoCS.hlsl b/WickedEngine/shaders/hbaoCS.hlsl index 8e3b9357c..68afbeddd 100644 --- a/WickedEngine/shaders/hbaoCS.hlsl +++ b/WickedEngine/shaders/hbaoCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(texture_horizontalpass, float, TEXSLOT_ONDEMAND0); +Texture2D texture_horizontalpass : register(t0); -RWTEXTURE2D(output, unorm float, 0); +RWTexture2D output : register(u0); // Step size in number of pixels #define STEP_SIZE 4 diff --git a/WickedEngine/shaders/impostorHF.hlsli b/WickedEngine/shaders/impostorHF.hlsli index 52a3d4a92..aea1c4448 100644 --- a/WickedEngine/shaders/impostorHF.hlsli +++ b/WickedEngine/shaders/impostorHF.hlsli @@ -11,6 +11,6 @@ struct VSOut uint instanceID : INSTANCEID; }; -TEXTURE2DARRAY(impostorTex, float4, TEXSLOT_ONDEMAND0); +Texture2DArray impostorTex : register(t0); #endif // WI_IMPOSTOR_HF diff --git a/WickedEngine/shaders/impostorVS.hlsl b/WickedEngine/shaders/impostorVS.hlsl index 37f86ffb2..c83dfb4c1 100644 --- a/WickedEngine/shaders/impostorVS.hlsl +++ b/WickedEngine/shaders/impostorVS.hlsl @@ -16,7 +16,7 @@ static const float3 BILLBOARD[] = { float3(1, 1, 0), }; -RAWBUFFER(impostorBuffer, TEXSLOT_ONDEMAND21); +ByteAddressBuffer impostorBuffer : register(t21); VSOut main(uint fakeIndex : SV_VERTEXID) { diff --git a/WickedEngine/shaders/lensFlarePS.hlsl b/WickedEngine/shaders/lensFlarePS.hlsl index 223f611a2..1d1a72ed4 100644 --- a/WickedEngine/shaders/lensFlarePS.hlsl +++ b/WickedEngine/shaders/lensFlarePS.hlsl @@ -1,6 +1,6 @@ #include "globals.hlsli" -TEXTURE2D(texture_flare, float4, TEXSLOT_ONDEMAND1); +Texture2D texture_flare : register(t1); struct VertexOut { diff --git a/WickedEngine/shaders/lensFlareVS.hlsl b/WickedEngine/shaders/lensFlareVS.hlsl index 1b63055db..5e14b6d05 100644 --- a/WickedEngine/shaders/lensFlareVS.hlsl +++ b/WickedEngine/shaders/lensFlareVS.hlsl @@ -2,7 +2,7 @@ PUSHCONSTANT(push, LensFlarePush); -TEXTURE2D(texture_occlusion, float4, TEXSLOT_ONDEMAND0); +Texture2D texture_occlusion : register(t0); static const float2 BILLBOARD[] = { float2(-1, -1), diff --git a/WickedEngine/shaders/lightCullingCS.hlsl b/WickedEngine/shaders/lightCullingCS.hlsl index cdf6362ed..624664610 100644 --- a/WickedEngine/shaders/lightCullingCS.hlsl +++ b/WickedEngine/shaders/lightCullingCS.hlsl @@ -4,14 +4,14 @@ #define entityCount (GetFrame().lightarray_count + GetFrame().decalarray_count + GetFrame().envprobearray_count) -STRUCTUREDBUFFER(in_Frustums, Frustum, TEXSLOT_ONDEMAND0); +StructuredBuffer in_Frustums : register(t0); -RWRAWBUFFER(EntityTiles_Transparent, 0); -RWRAWBUFFER(EntityTiles_Opaque, 1); +RWByteAddressBuffer EntityTiles_Transparent : register(u0); +RWByteAddressBuffer EntityTiles_Opaque : register(u1); #ifdef DEBUG_TILEDLIGHTCULLING -RWTEXTURE2D(DebugTexture, unorm float4, 3); +RWTexture2D DebugTexture : register(u3); #endif // Group shared variables. diff --git a/WickedEngine/shaders/lightShaftsCS.hlsl b/WickedEngine/shaders/lightShaftsCS.hlsl index eb08c0055..60a8cd2fc 100644 --- a/WickedEngine/shaders/lightShaftsCS.hlsl +++ b/WickedEngine/shaders/lightShaftsCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); static const uint NUM_SAMPLES = 32; static const uint UNROLL_GRANULARITY = 8; diff --git a/WickedEngine/shaders/luminancePass1CS.hlsl b/WickedEngine/shaders/luminancePass1CS.hlsl index 92e8b830d..c0545cd48 100644 --- a/WickedEngine/shaders/luminancePass1CS.hlsl +++ b/WickedEngine/shaders/luminancePass1CS.hlsl @@ -4,9 +4,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float3, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWRAWBUFFER(output_histogram, 0); +RWByteAddressBuffer output_histogram : register(u0); // groupshared memory is used to perform the high atomic contentions // the atomic contention into global memory will be lower in the general case diff --git a/WickedEngine/shaders/luminancePass2CS.hlsl b/WickedEngine/shaders/luminancePass2CS.hlsl index f1d9393e5..39ff00f2d 100644 --- a/WickedEngine/shaders/luminancePass2CS.hlsl +++ b/WickedEngine/shaders/luminancePass2CS.hlsl @@ -4,7 +4,7 @@ PUSHCONSTANT(postprocess, PostProcess); -RWRAWBUFFER(luminance_histogram, 0); +RWByteAddressBuffer luminance_histogram : register(u0); groupshared uint histogram[LUMINANCE_NUM_HISTOGRAM_BINS]; diff --git a/WickedEngine/shaders/motionblurCS.hlsl b/WickedEngine/shaders/motionblurCS.hlsl index 85e2611f2..edd8f139c 100644 --- a/WickedEngine/shaders/motionblurCS.hlsl +++ b/WickedEngine/shaders/motionblurCS.hlsl @@ -7,18 +7,18 @@ PUSHCONSTANT(postprocess, PostProcess); //#define DEBUG_TILING -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(neighborhoodmax, float2, TEXSLOT_ONDEMAND1); +Texture2D input : register(t0); +Texture2D neighborhoodmax : register(t1); #if defined(MOTIONBLUR_EARLYEXIT) -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND2); +StructuredBuffer tiles : register(t2); #elif defined(MOTIONBLUR_CHEAP) -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND3); +StructuredBuffer tiles : register(t3); #else -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND4); +StructuredBuffer tiles : register(t4); #endif // MOTIONBLUR_EARLYEXIT -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); inline float2 DepthCmp(in float centerDepth, in float sampleDepth, in float depthScale) { diff --git a/WickedEngine/shaders/motionblur_kickjobsCS.hlsl b/WickedEngine/shaders/motionblur_kickjobsCS.hlsl index dd898e809..3c8f5e41b 100644 --- a/WickedEngine/shaders/motionblur_kickjobsCS.hlsl +++ b/WickedEngine/shaders/motionblur_kickjobsCS.hlsl @@ -1,10 +1,10 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -RWRAWBUFFER(tile_statistics, 0); -RWSTRUCTUREDBUFFER(tiles_earlyexit, uint, 1); -RWSTRUCTUREDBUFFER(tiles_cheap, uint, 2); -RWSTRUCTUREDBUFFER(tiles_expensive, uint, 3); +RWByteAddressBuffer tile_statistics : register(u0); +RWStructuredBuffer tiles_earlyexit : register(u1); +RWStructuredBuffer tiles_cheap : register(u2); +RWStructuredBuffer tiles_expensive : register(u3); [numthreads(1, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) @@ -24,4 +24,4 @@ void main( uint3 DTid : SV_DispatchThreadID ) tile_statistics.Store3(INDIRECT_OFFSET_EARLYEXIT, uint3(earlyexit_count * tile_replicate, 1, 1)); tile_statistics.Store3(INDIRECT_OFFSET_CHEAP, uint3(cheap_count * tile_replicate, 1, 1)); tile_statistics.Store3(INDIRECT_OFFSET_EXPENSIVE, uint3(expensive_count * tile_replicate, 1, 1)); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/motionblur_neighborhoodMaxVelocityCS.hlsl b/WickedEngine/shaders/motionblur_neighborhoodMaxVelocityCS.hlsl index 14789c870..b9059768e 100644 --- a/WickedEngine/shaders/motionblur_neighborhoodMaxVelocityCS.hlsl +++ b/WickedEngine/shaders/motionblur_neighborhoodMaxVelocityCS.hlsl @@ -1,14 +1,14 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(tilemax, float2, TEXSLOT_ONDEMAND0); -TEXTURE2D(tilemin, float2, TEXSLOT_ONDEMAND1); +Texture2D tilemax : register(t0); +Texture2D tilemin : register(t1); -RWRAWBUFFER(tile_statistics, 0); -RWSTRUCTUREDBUFFER(tiles_earlyexit, uint, 1); -RWSTRUCTUREDBUFFER(tiles_cheap, uint, 2); -RWSTRUCTUREDBUFFER(tiles_expensive, uint, 3); -RWTEXTURE2D(output, float2, 4); +RWByteAddressBuffer tile_statistics : register(u0); +RWStructuredBuffer tiles_earlyexit : register(u1); +RWStructuredBuffer tiles_cheap : register(u2); +RWStructuredBuffer tiles_expensive : register(u3); +RWTexture2D output : register(u4); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) @@ -60,4 +60,4 @@ void main(uint3 DTid : SV_DispatchThreadID) tiles_expensive[prevCount] = tile; output[DTid.xy] = max_velocity; } -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/motionblur_tileMaxVelocity_horizontalCS.hlsl b/WickedEngine/shaders/motionblur_tileMaxVelocity_horizontalCS.hlsl index c657f8874..766cd6412 100644 --- a/WickedEngine/shaders/motionblur_tileMaxVelocity_horizontalCS.hlsl +++ b/WickedEngine/shaders/motionblur_tileMaxVelocity_horizontalCS.hlsl @@ -1,8 +1,8 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE2D(tilemax_horizontal, float2, 0); -RWTEXTURE2D(tilemin_horizontal, float2, 1); +RWTexture2D tilemax_horizontal : register(u0); +RWTexture2D tilemin_horizontal : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/motionblur_tileMaxVelocity_verticalCS.hlsl b/WickedEngine/shaders/motionblur_tileMaxVelocity_verticalCS.hlsl index 06d6ca641..e40db4cb9 100644 --- a/WickedEngine/shaders/motionblur_tileMaxVelocity_verticalCS.hlsl +++ b/WickedEngine/shaders/motionblur_tileMaxVelocity_verticalCS.hlsl @@ -1,11 +1,11 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(tilemax_horizontal, float2, TEXSLOT_ONDEMAND0); -TEXTURE2D(tilemin_horizontal, float2, TEXSLOT_ONDEMAND1); +Texture2D tilemax_horizontal : register(t0); +Texture2D tilemin_horizontal : register(t1); -RWTEXTURE2D(tilemax, float2, 0); -RWTEXTURE2D(tilemin, float2, 1); +RWTexture2D tilemax : register(u0); +RWTexture2D tilemin : register(u1); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) @@ -39,4 +39,4 @@ void main(uint3 DTid : SV_DispatchThreadID) tilemax[DTid.xy] = max_velocity; tilemin[DTid.xy] = min_velocity; -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/msaoCS.hlsl b/WickedEngine/shaders/msaoCS.hlsl index fdf29acb9..3a160794f 100644 --- a/WickedEngine/shaders/msaoCS.hlsl +++ b/WickedEngine/shaders/msaoCS.hlsl @@ -6,13 +6,13 @@ PUSHCONSTANT(msao, MSAO); #ifdef INTERLEAVE_RESULT -TEXTURE2DARRAY(texture_lineardepth_deinterleaved, float, TEXSLOT_ONDEMAND0); +Texture2DArray texture_lineardepth_deinterleaved : register(t0); #else -TEXTURE2D(texture_lineardepth_interleaved, float, TEXSLOT_ONDEMAND0); +Texture2D texture_lineardepth_interleaved : register(t0); #define WIDE_SAMPLING 1 #endif // INTERLEAVE_RESULT -RWTEXTURE2D(output, unorm float, 0); +RWTexture2D output : register(u0); #if WIDE_SAMPLING // 32x32 cache size: the 16x16 in the center forms the area of focus with the 8-pixel perimeter used for wide gathering. diff --git a/WickedEngine/shaders/msao_blurupsampleCS.hlsl b/WickedEngine/shaders/msao_blurupsampleCS.hlsl index b0407befe..d9efa2a7c 100644 --- a/WickedEngine/shaders/msao_blurupsampleCS.hlsl +++ b/WickedEngine/shaders/msao_blurupsampleCS.hlsl @@ -5,17 +5,17 @@ PUSHCONSTANT(msao_upsample, MSAO_UPSAMPLE); -TEXTURE2D(LoResDB, float, TEXSLOT_ONDEMAND0); -TEXTURE2D(HiResDB, float, TEXSLOT_ONDEMAND1); -TEXTURE2D(LoResAO1, float, TEXSLOT_ONDEMAND2); +Texture2D LoResDB : register(t0); +Texture2D HiResDB : register(t1); +Texture2D LoResAO1 : register(t2); #ifdef COMBINE_LOWER_RESOLUTIONS -TEXTURE2D(LoResAO2, float, TEXSLOT_ONDEMAND3); +Texture2D LoResAO2 : register(t3); #endif #ifdef BLEND_WITH_HIGHER_RESOLUTION -TEXTURE2D(HiResAO, float, TEXSLOT_ONDEMAND4); +Texture2D HiResAO : register(t4); #endif -RWTEXTURE2D(AoResult, unorm float, 0); +RWTexture2D AoResult : register(u0); groupshared float DepthCache[256]; groupshared float AOCache1[256]; diff --git a/WickedEngine/shaders/msao_preparedepthbuffers1CS.hlsl b/WickedEngine/shaders/msao_preparedepthbuffers1CS.hlsl index 1bd99c0ef..585349c31 100644 --- a/WickedEngine/shaders/msao_preparedepthbuffers1CS.hlsl +++ b/WickedEngine/shaders/msao_preparedepthbuffers1CS.hlsl @@ -3,10 +3,10 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE2D(DS2x, float2, 0); -RWTEXTURE2DARRAY(DS2xAtlas, float, 1); -RWTEXTURE2D(DS4x, float2, 2); -RWTEXTURE2DARRAY(DS4xAtlas, float, 3); +RWTexture2D DS2x : register(u0); +RWTexture2DArray DS2xAtlas : register(u1); +RWTexture2D DS4x : register(u2); +RWTexture2DArray DS4xAtlas : register(u3); groupshared float g_CacheW[256]; diff --git a/WickedEngine/shaders/msao_preparedepthbuffers2CS.hlsl b/WickedEngine/shaders/msao_preparedepthbuffers2CS.hlsl index acfa4d25b..04482c9aa 100644 --- a/WickedEngine/shaders/msao_preparedepthbuffers2CS.hlsl +++ b/WickedEngine/shaders/msao_preparedepthbuffers2CS.hlsl @@ -3,11 +3,12 @@ #include "globals.hlsli" #include "ShaderInterop_Postprocess.h" -TEXTURE2D(DS4x, float, TEXSLOT_ONDEMAND0); -RWTEXTURE2D(DS8x, float, 0); -RWTEXTURE2DARRAY(DS8xAtlas, float, 1); -RWTEXTURE2D(DS16x, float, 2); -RWTEXTURE2DARRAY(DS16xAtlas, float, 3); +Texture2D DS4x : register(t0); + +RWTexture2D DS8x : register(u0); +RWTexture2DArray DS8xAtlas : register(u1); +RWTexture2D DS16x : register(u2); +RWTexture2DArray DS16xAtlas : register(u3); [numthreads(8, 8, 1)] void main(uint3 Gid : SV_GroupID, uint GI : SV_GroupIndex, uint3 GTid : SV_GroupThreadID, uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/normalsfromdepthCS.hlsl b/WickedEngine/shaders/normalsfromdepthCS.hlsl index d0f09f866..96782f805 100644 --- a/WickedEngine/shaders/normalsfromdepthCS.hlsl +++ b/WickedEngine/shaders/normalsfromdepthCS.hlsl @@ -6,9 +6,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(depthbuffer, float, TEXSLOT_ONDEMAND0); +Texture2D depthbuffer : register(t0); -RWTEXTURE2D(output, float3, 0); +RWTexture2D output : register(u0); static const uint TILE_BORDER = 1; static const uint TILE_SIZE = POSTPROCESS_BLOCKSIZE + TILE_BORDER * 2; diff --git a/WickedEngine/shaders/objectPS_voxelizer.hlsl b/WickedEngine/shaders/objectPS_voxelizer.hlsl index 4b83589c6..11a1c2028 100644 --- a/WickedEngine/shaders/objectPS_voxelizer.hlsl +++ b/WickedEngine/shaders/objectPS_voxelizer.hlsl @@ -5,7 +5,7 @@ // Note: the voxelizer uses an overall simplified material and lighting model (no normal maps, only diffuse light and emissive) -RWSTRUCTUREDBUFFER(output, VoxelType, 0); +RWStructuredBuffer output : register(u0); struct PSInput { diff --git a/WickedEngine/shaders/oceanSimulatorCS.hlsl b/WickedEngine/shaders/oceanSimulatorCS.hlsl index b53e5de54..ac3b98bce 100644 --- a/WickedEngine/shaders/oceanSimulatorCS.hlsl +++ b/WickedEngine/shaders/oceanSimulatorCS.hlsl @@ -1,9 +1,10 @@ #include "globals.hlsli" #include "ShaderInterop_Ocean.h" -STRUCTUREDBUFFER(g_InputH0, float2, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(g_InputOmega, float, TEXSLOT_ONDEMAND1); -RWSTRUCTUREDBUFFER(g_OutputHt, float2, 0); +StructuredBuffer g_InputH0 : register(t0); +StructuredBuffer g_InputOmega : register(t1); + +RWStructuredBuffer g_OutputHt : register(u0); // H(0) -> H(t) [numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)] diff --git a/WickedEngine/shaders/oceanSurfacePS.hlsl b/WickedEngine/shaders/oceanSurfacePS.hlsl index ed751ec81..06e4b31a5 100644 --- a/WickedEngine/shaders/oceanSurfacePS.hlsl +++ b/WickedEngine/shaders/oceanSurfacePS.hlsl @@ -5,7 +5,7 @@ #include "oceanSurfaceHF.hlsli" #include "objectHF.hlsli" -TEXTURE2D(texture_gradientmap, float4, TEXSLOT_ONDEMAND1); +Texture2D texture_gradientmap : register(t1); [earlydepthstencil] float4 main(PSIn input) : SV_TARGET diff --git a/WickedEngine/shaders/oceanSurfaceVS.hlsl b/WickedEngine/shaders/oceanSurfaceVS.hlsl index 3dc35449b..126d0134e 100644 --- a/WickedEngine/shaders/oceanSurfaceVS.hlsl +++ b/WickedEngine/shaders/oceanSurfaceVS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "oceanSurfaceHF.hlsli" -TEXTURE2D(texture_displacementmap, float4, TEXSLOT_ONDEMAND0); +Texture2D texture_displacementmap : register(t0); static const float3 QUAD[] = { float3(0, 0, 0), diff --git a/WickedEngine/shaders/oceanUpdateDisplacementMapCS.hlsl b/WickedEngine/shaders/oceanUpdateDisplacementMapCS.hlsl index ff5605720..ad804b621 100644 --- a/WickedEngine/shaders/oceanUpdateDisplacementMapCS.hlsl +++ b/WickedEngine/shaders/oceanUpdateDisplacementMapCS.hlsl @@ -1,7 +1,8 @@ #include "ShaderInterop_Ocean.h" -STRUCTUREDBUFFER(g_InputDxyz, float2, TEXSLOT_ONDEMAND0); -RWTEXTURE2D(output, float4, 0); +StructuredBuffer g_InputDxyz : register(t0); + +RWTexture2D output : register(u0); [numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/oceanUpdateGradientFoldingCS.hlsl b/WickedEngine/shaders/oceanUpdateGradientFoldingCS.hlsl index 5cf2545e8..3c7d85c1c 100644 --- a/WickedEngine/shaders/oceanUpdateGradientFoldingCS.hlsl +++ b/WickedEngine/shaders/oceanUpdateGradientFoldingCS.hlsl @@ -1,9 +1,9 @@ #include "globals.hlsli" #include "ShaderInterop_Ocean.h" -TEXTURE2D(texture_displacementmap, float4, TEXSLOT_ONDEMAND0); +Texture2D texture_displacementmap : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(OCEAN_COMPUTE_TILESIZE, OCEAN_COMPUTE_TILESIZE, 1)] void main( uint3 DTid : SV_DispatchThreadID ) @@ -37,4 +37,4 @@ void main( uint3 DTid : SV_DispatchThreadID ) // Output output[DTid.xy] = float4(gradient, 0, fold); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/outlinePS.hlsl b/WickedEngine/shaders/outlinePS.hlsl index 78b4468c8..2ef7dccbd 100644 --- a/WickedEngine/shaders/outlinePS.hlsl +++ b/WickedEngine/shaders/outlinePS.hlsl @@ -3,7 +3,7 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); float4 main(float4 pos : SV_Position, float2 uv : TEXCOORD) : SV_TARGET { diff --git a/WickedEngine/shaders/paint_textureCS.hlsl b/WickedEngine/shaders/paint_textureCS.hlsl index b0359fce8..eda31bbb7 100644 --- a/WickedEngine/shaders/paint_textureCS.hlsl +++ b/WickedEngine/shaders/paint_textureCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(push, PaintTextureCB); -TEXTURE2D(texture_brush, float4, TEXSLOT_ONDEMAND0); +Texture2D texture_brush : register(t0); -RWTEXTURE2D(output, unorm float4, 0); +RWTexture2D output : register(u0); [numthreads(PAINT_TEXTURE_BLOCKSIZE, PAINT_TEXTURE_BLOCKSIZE, 1)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/shaders/raytraceCS.hlsl b/WickedEngine/shaders/raytraceCS.hlsl index e9ecfc1b5..979f4a9aa 100644 --- a/WickedEngine/shaders/raytraceCS.hlsl +++ b/WickedEngine/shaders/raytraceCS.hlsl @@ -4,9 +4,9 @@ #include "raytracingHF.hlsli" #include "lightingHF.hlsli" -RWTEXTURE2D(output, float4, 0); -RWTEXTURE2D(output_albedo, float4, 1); -RWTEXTURE2D(output_normal, float4, 2); +RWTexture2D output : register(u0); +RWTexture2D output_albedo : register(u1); +RWTexture2D output_normal : register(u2); [numthreads(RAYTRACING_LAUNCH_BLOCKSIZE, RAYTRACING_LAUNCH_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID, uint groupIndex : SV_GroupIndex) diff --git a/WickedEngine/shaders/resolveMSAADepthStencilCS.hlsl b/WickedEngine/shaders/resolveMSAADepthStencilCS.hlsl index f933b39f4..fced2191b 100644 --- a/WickedEngine/shaders/resolveMSAADepthStencilCS.hlsl +++ b/WickedEngine/shaders/resolveMSAADepthStencilCS.hlsl @@ -1,8 +1,9 @@ #include "globals.hlsli" // Resolve MSAA depth buffer to a non MSAA texture -TEXTURE2DMS(input, float, TEXSLOT_ONDEMAND0); -RWTEXTURE2D(output, float, 0); +Texture2DMS input : register(t0); + +RWTexture2D output : register(u0); [numthreads(8, 8, 1)] void main(uint3 dispatchThreadId : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/rtaoCS.hlsl b/WickedEngine/shaders/rtaoCS.hlsl index a01b81683..d1ea2e8db 100644 --- a/WickedEngine/shaders/rtaoCS.hlsl +++ b/WickedEngine/shaders/rtaoCS.hlsl @@ -5,9 +5,9 @@ PUSHCONSTANT(postprocess, PostProcess); -RWTEXTURE2D(output, unorm float, 0); -RWTEXTURE2D(output_normals, float3, 1); -RWSTRUCTUREDBUFFER(output_tiles, uint, 2); +RWTexture2D output : register(u0); +RWTexture2D output_normals : register(u1); +RWStructuredBuffer output_tiles : register(u2); static const uint TILE_BORDER = 1; static const uint TILE_SIZE = POSTPROCESS_BLOCKSIZE + TILE_BORDER * 2; diff --git a/WickedEngine/shaders/rtao_denoise_filterCS.hlsl b/WickedEngine/shaders/rtao_denoise_filterCS.hlsl index 0665eb73a..bb097a280 100644 --- a/WickedEngine/shaders/rtao_denoise_filterCS.hlsl +++ b/WickedEngine/shaders/rtao_denoise_filterCS.hlsl @@ -6,13 +6,12 @@ PUSHCONSTANT(postprocess, PostProcess); #define float16_t2 min16float2 #define float16_t3 min16float3 -TEXTURE2D(normals, float16_t3, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(metadata, uint, TEXSLOT_ONDEMAND1); +Texture2D normals : register(t0); +StructuredBuffer metadata : register(t1); +Texture2D input : register(t2); -TEXTURE2D(input, float16_t2, TEXSLOT_ONDEMAND2); - -RWTEXTURE2D(history, float2, 0); -RWTEXTURE2D(output, unorm float, 1); +RWTexture2D history : register(u0); +RWTexture2D output : register(u1); uint2 FFX_DNSR_Shadows_GetBufferDimensions() { diff --git a/WickedEngine/shaders/rtao_denoise_tileclassificationCS.hlsl b/WickedEngine/shaders/rtao_denoise_tileclassificationCS.hlsl index 95ec16db1..021d9a681 100644 --- a/WickedEngine/shaders/rtao_denoise_tileclassificationCS.hlsl +++ b/WickedEngine/shaders/rtao_denoise_tileclassificationCS.hlsl @@ -3,14 +3,14 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(normals, float3, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(tiles, uint, TEXSLOT_ONDEMAND1); -TEXTURE2D(moments_prev, float3, TEXSLOT_ONDEMAND2); -TEXTURE2D(history, float, TEXSLOT_ONDEMAND3); +Texture2D normals : register(t0); +StructuredBuffer tiles : register(t1); +Texture2D moments_prev : register(t2); +Texture2D history : register(t3); -RWTEXTURE2D(reprojection, float2, 0); -RWTEXTURE2D(moments, float3, 1); -RWSTRUCTUREDBUFFER(metadata, uint, 2); +RWTexture2D reprojection : register(u0); +RWTexture2D moments : register(u1); +RWStructuredBuffer metadata : register(u2); int FFX_DNSR_Shadows_IsFirstFrame() { diff --git a/WickedEngine/shaders/rtreflectionLIB.hlsl b/WickedEngine/shaders/rtreflectionLIB.hlsl index 652af53a1..cf7498e1e 100644 --- a/WickedEngine/shaders/rtreflectionLIB.hlsl +++ b/WickedEngine/shaders/rtreflectionLIB.hlsl @@ -10,8 +10,8 @@ PUSHCONSTANT(postprocess, PostProcess); -RWTEXTURE2D(output, float4, 0); -RWTEXTURE2D(output_rayLengths, float, 1); +RWTexture2D output : register(u0); +RWTexture2D output_rayLengths : register(u1); struct RayPayload { diff --git a/WickedEngine/shaders/rtshadow_denoise_filterCS.hlsl b/WickedEngine/shaders/rtshadow_denoise_filterCS.hlsl index 2ef992695..b0edbf13c 100644 --- a/WickedEngine/shaders/rtshadow_denoise_filterCS.hlsl +++ b/WickedEngine/shaders/rtshadow_denoise_filterCS.hlsl @@ -6,13 +6,12 @@ PUSHCONSTANT(postprocess, PostProcess); #define float16_t2 min16float2 #define float16_t3 min16float3 -TEXTURE2D(normals, float16_t3, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(metadata, uint4, TEXSLOT_ONDEMAND1); +Texture2D normals : register(t0); +StructuredBuffer metadata : register(t1); +Texture2D input[4] : register(t2); -TEXTURE2D(input[4], float16_t2, TEXSLOT_ONDEMAND2); - -RWTEXTURE2D(history[4], float2, 0); -RWTEXTURE2D(output, unorm float4, 4); +RWTexture2D history[4] : register(u0); +RWTexture2D output : register(u4); groupshared uint light_index; diff --git a/WickedEngine/shaders/rtshadow_denoise_temporalCS.hlsl b/WickedEngine/shaders/rtshadow_denoise_temporalCS.hlsl index f3659ba8b..fba2a0674 100644 --- a/WickedEngine/shaders/rtshadow_denoise_temporalCS.hlsl +++ b/WickedEngine/shaders/rtshadow_denoise_temporalCS.hlsl @@ -4,12 +4,12 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(resolve_current, uint4, TEXSLOT_ONDEMAND0); -TEXTURE2D(resolve_history, uint4, TEXSLOT_ONDEMAND1); -TEXTURE2D(denoised, float4, TEXSLOT_ONDEMAND3); +Texture2D resolve_current : register(t0); +Texture2D resolve_history : register(t1); +Texture2D denoised : register(t3); -RWTEXTURE2D(temporal_output, uint4, 0); -RWTEXTURE2D(output, uint4, 1); +RWTexture2D temporal_output : register(u0); +RWTexture2D output : register(u1); static const float temporalResponseMin = 0.88; static const float temporalResponseMax = 1.0f; diff --git a/WickedEngine/shaders/rtshadow_denoise_tileclassificationCS.hlsl b/WickedEngine/shaders/rtshadow_denoise_tileclassificationCS.hlsl index 4b7c0a23e..01c4a4f5c 100644 --- a/WickedEngine/shaders/rtshadow_denoise_tileclassificationCS.hlsl +++ b/WickedEngine/shaders/rtshadow_denoise_tileclassificationCS.hlsl @@ -3,17 +3,17 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(normals, float3, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(tiles, uint4, TEXSLOT_ONDEMAND2); +Texture2D normals : register(t0); +StructuredBuffer tiles : register(t2); -RWSTRUCTUREDBUFFER(metadata, uint4, 0); +RWStructuredBuffer metadata : register(u0); // per-light: -TEXTURE2D(moments_prev[4], float3, TEXSLOT_ONDEMAND3); -TEXTURE2D(history[4], float, TEXSLOT_ONDEMAND7); +Texture2D moments_prev[4] : register(t3); +Texture2D history[4] : register(t7); -RWTEXTURE2D(reprojection[4], float2, 1); -RWTEXTURE2D(moments[4], float3, 5); +RWTexture2D reprojection[4] : register(u1); +RWTexture2D moments[4] : register(u5); groupshared uint light_index; diff --git a/WickedEngine/shaders/screenspaceshadowCS.hlsl b/WickedEngine/shaders/screenspaceshadowCS.hlsl index b0db65629..a413d9e25 100644 --- a/WickedEngine/shaders/screenspaceshadowCS.hlsl +++ b/WickedEngine/shaders/screenspaceshadowCS.hlsl @@ -15,11 +15,11 @@ uint load_entitytile(uint tileIndex) } static const uint MAX_RTSHADOWS = 16; -RWTEXTURE2D(output, uint4, 0); +RWTexture2D output : register(u0); #ifdef RTSHADOW -RWTEXTURE2D(output_normals, float3, 1); -RWSTRUCTUREDBUFFER(output_tiles, uint4, 2); +RWTexture2D output_normals : register(u1); +RWStructuredBuffer output_tiles : register(u2); #endif // RTSHADOW static const uint TILE_BORDER = 1; diff --git a/WickedEngine/shaders/shadingRateClassificationCS.hlsl b/WickedEngine/shaders/shadingRateClassificationCS.hlsl index 13f1bf776..08765c919 100644 --- a/WickedEngine/shaders/shadingRateClassificationCS.hlsl +++ b/WickedEngine/shaders/shadingRateClassificationCS.hlsl @@ -5,10 +5,10 @@ PUSHCONSTANT(shadingrate, ShadingRateClassification); static const uint THREAD_COUNT = 64; -RWTEXTURE2D(output, uint, 0); +RWTexture2D output : register(u0); #ifdef DEBUG_SHADINGRATECLASSIFICATION -RWTEXTURE2D(output_debug, float4, 1); +RWTexture2D output_debug : register(u1); #endif // DEBUG_SHADINGRATECLASSIFICATION groupshared uint tile_rate; diff --git a/WickedEngine/shaders/sharpenCS.hlsl b/WickedEngine/shaders/sharpenCS.hlsl index b0d8ae9b4..9889e0745 100644 --- a/WickedEngine/shaders/sharpenCS.hlsl +++ b/WickedEngine/shaders/sharpenCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/skyAtmosphere_multiScatteredLuminanceLutCS.hlsl b/WickedEngine/shaders/skyAtmosphere_multiScatteredLuminanceLutCS.hlsl index baccef639..344c2a3fc 100644 --- a/WickedEngine/shaders/skyAtmosphere_multiScatteredLuminanceLutCS.hlsl +++ b/WickedEngine/shaders/skyAtmosphere_multiScatteredLuminanceLutCS.hlsl @@ -1,9 +1,10 @@ #include "globals.hlsli" #include "skyAtmosphere.hlsli" -TEXTURE2D(transmittanceLUT, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(multiScatteringLUT, float4, TEXSLOT_ONDEMAND1); -RWTEXTURE2D(output, float4, 0); +Texture2D transmittanceLUT : register(t0); +Texture2D multiScatteringLUT : register(t1); + +RWTexture2D output : register(u0); static const float multipleScatteringFactor = 1.0; @@ -139,4 +140,4 @@ void main(uint3 DTid : SV_DispatchThreadID) #endif output[DTid.xy] = float4(multipleScatteringFactor * L, 1.0f); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/skyAtmosphere_skyLuminanceLutCS.hlsl b/WickedEngine/shaders/skyAtmosphere_skyLuminanceLutCS.hlsl index b0264c37c..98d377fde 100644 --- a/WickedEngine/shaders/skyAtmosphere_skyLuminanceLutCS.hlsl +++ b/WickedEngine/shaders/skyAtmosphere_skyLuminanceLutCS.hlsl @@ -1,9 +1,10 @@ #include "globals.hlsli" #include "skyAtmosphere.hlsli" -TEXTURE2D(transmittanceLUT, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(multiScatteringLUT, float4, TEXSLOT_ONDEMAND1); -RWTEXTURE2D(output, float4, 0); +Texture2D transmittanceLUT : register(t0); +Texture2D multiScatteringLUT : register(t1); + +RWTexture2D output : register(u0); static const float skyLuminanceSampleHeight = 6.0; // Sample height above ground in kilometers diff --git a/WickedEngine/shaders/skyAtmosphere_skyViewLutCS.hlsl b/WickedEngine/shaders/skyAtmosphere_skyViewLutCS.hlsl index e25c19985..dd4521020 100644 --- a/WickedEngine/shaders/skyAtmosphere_skyViewLutCS.hlsl +++ b/WickedEngine/shaders/skyAtmosphere_skyViewLutCS.hlsl @@ -1,9 +1,10 @@ #include "globals.hlsli" #include "skyAtmosphere.hlsli" -TEXTURE2D(transmittanceLUT, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(multiScatteringLUT, float4, TEXSLOT_ONDEMAND1); -RWTEXTURE2D(output, float4, 0); +Texture2D transmittanceLUT : register(t0); +Texture2D multiScatteringLUT : register(t1); + +RWTexture2D output : register(u0); [numthreads(8, 8, 1)] void main(uint3 DTid : SV_DispatchThreadID) @@ -69,4 +70,4 @@ void main(uint3 DTid : SV_DispatchThreadID) float3 L = ss.L; output[DTid.xy] = float4(L, 1.0); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/skyAtmosphere_transmittanceLutCS.hlsl b/WickedEngine/shaders/skyAtmosphere_transmittanceLutCS.hlsl index 213da8a38..4bd710865 100644 --- a/WickedEngine/shaders/skyAtmosphere_transmittanceLutCS.hlsl +++ b/WickedEngine/shaders/skyAtmosphere_transmittanceLutCS.hlsl @@ -1,9 +1,10 @@ #include "globals.hlsli" #include "skyAtmosphere.hlsli" -TEXTURE2D(transmittanceLUT, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(multiScatteringLUT, float4, TEXSLOT_ONDEMAND1); -RWTEXTURE2D(output, float4, 0); +Texture2D transmittanceLUT : register(t0); +Texture2D multiScatteringLUT : register(t1); + +RWTexture2D output : register(u0); [numthreads(8, 8, 1)] void main(uint3 DTid : SV_DispatchThreadID) @@ -40,4 +41,4 @@ void main(uint3 DTid : SV_DispatchThreadID) float3 transmittance = exp(-ss.opticalDepth); output[DTid.xy] = float4(transmittance, 1.0); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/ssaoCS.hlsl b/WickedEngine/shaders/ssaoCS.hlsl index c0398dfd5..d53f6a905 100644 --- a/WickedEngine/shaders/ssaoCS.hlsl +++ b/WickedEngine/shaders/ssaoCS.hlsl @@ -6,7 +6,7 @@ PUSHCONSTANT(postprocess, PostProcess); -RWTEXTURE2D(output, unorm float, 0); +RWTexture2D output : register(u0); static const uint TILE_BORDER = 1; static const uint TILE_SIZE = POSTPROCESS_BLOCKSIZE + TILE_BORDER * 2; diff --git a/WickedEngine/shaders/ssr_medianCS.hlsl b/WickedEngine/shaders/ssr_medianCS.hlsl index 0509f03c0..94f0c9ffc 100644 --- a/WickedEngine/shaders/ssr_medianCS.hlsl +++ b/WickedEngine/shaders/ssr_medianCS.hlsl @@ -3,9 +3,9 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(texture_temporal, float4, TEXSLOT_ONDEMAND0); +Texture2D texture_temporal : register(t0); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); // A Fast, Small-Radius GPU Median Filter by Morgan McGuire // https://casual-effects.com/research/McGuire2008Median/index.html diff --git a/WickedEngine/shaders/ssr_raytraceCS.hlsl b/WickedEngine/shaders/ssr_raytraceCS.hlsl index b5f1ac558..cdbea1c26 100644 --- a/WickedEngine/shaders/ssr_raytraceCS.hlsl +++ b/WickedEngine/shaders/ssr_raytraceCS.hlsl @@ -4,10 +4,10 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, float4, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); -RWTEXTURE2D(texture_raytrace, float4, 0); -RWTEXTURE2D(texture_rayLengths, float, 1); +RWTexture2D texture_raytrace : register(u0); +RWTexture2D texture_rayLengths : register(u1); static const float rayTraceStrideMin = 1.0f; // Step in horizontal or vertical pixels between samples. static const float rayTraceStrideMax = 10.0f; // Define max stride between samples. Roughness will interpolate between it's min and max counterparts. diff --git a/WickedEngine/shaders/ssr_resolveCS.hlsl b/WickedEngine/shaders/ssr_resolveCS.hlsl index 42015f6d2..1640d4182 100644 --- a/WickedEngine/shaders/ssr_resolveCS.hlsl +++ b/WickedEngine/shaders/ssr_resolveCS.hlsl @@ -5,10 +5,10 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(texture_raytrace, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(texture_main, float4, TEXSLOT_ONDEMAND1); +Texture2D texture_raytrace : register(t0); +Texture2D texture_main : register(t1); -RWTEXTURE2D(texture_resolve, float4, 0); +RWTexture2D texture_resolve : register(u0); static const float2 spatialReuseOffsets3x3[9] = diff --git a/WickedEngine/shaders/ssr_temporalCS.hlsl b/WickedEngine/shaders/ssr_temporalCS.hlsl index 08056c52e..65be0c38b 100644 --- a/WickedEngine/shaders/ssr_temporalCS.hlsl +++ b/WickedEngine/shaders/ssr_temporalCS.hlsl @@ -4,11 +4,11 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(resolve_current, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(resolve_history, float4, TEXSLOT_ONDEMAND1); -TEXTURE2D(rayLengths, float, TEXSLOT_ONDEMAND3); +Texture2D resolve_current : register(t0); +Texture2D resolve_history : register(t1); +Texture2D rayLengths : register(t3); -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); static const float temporalResponseMin = 0.75; static const float temporalResponseMax = 0.95f; diff --git a/WickedEngine/shaders/surfel_binningCS.hlsl b/WickedEngine/shaders/surfel_binningCS.hlsl index 2c4cb7272..b711a6466 100644 --- a/WickedEngine/shaders/surfel_binningCS.hlsl +++ b/WickedEngine/shaders/surfel_binningCS.hlsl @@ -1,12 +1,12 @@ #include "globals.hlsli" #include "ShaderInterop_SurfelGI.h" -STRUCTUREDBUFFER(surfelBuffer, Surfel, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(surfelAliveBuffer, uint, TEXSLOT_ONDEMAND1); -RAWBUFFER(surfelStatsBuffer, TEXSLOT_ONDEMAND2); +StructuredBuffer surfelBuffer : register(t0); +StructuredBuffer surfelAliveBuffer : register(t1); +ByteAddressBuffer surfelStatsBuffer : register(t2); -RWSTRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, 0); -RWSTRUCTUREDBUFFER(surfelCellBuffer, uint, 1); +RWStructuredBuffer surfelGridBuffer : register(u0); +RWStructuredBuffer surfelCellBuffer : register(u1); [numthreads(SURFEL_INDIRECT_NUMTHREADS, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/surfel_coverageCS.hlsl b/WickedEngine/shaders/surfel_coverageCS.hlsl index 1ef500cdd..ad3676d23 100644 --- a/WickedEngine/shaders/surfel_coverageCS.hlsl +++ b/WickedEngine/shaders/surfel_coverageCS.hlsl @@ -29,17 +29,17 @@ float3 random_color(uint index) return random_colors[index % random_colors_size]; } -STRUCTUREDBUFFER(surfelBuffer, Surfel, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, TEXSLOT_ONDEMAND1); -STRUCTUREDBUFFER(surfelCellBuffer, uint, TEXSLOT_ONDEMAND2); -TEXTURE2D(surfelMomentsTexture, float2, TEXSLOT_ONDEMAND3); +StructuredBuffer surfelBuffer : register(t0); +StructuredBuffer surfelGridBuffer : register(t1); +StructuredBuffer surfelCellBuffer : register(t2); +Texture2D surfelMomentsTexture : register(t3); -RWSTRUCTUREDBUFFER(surfelDataBuffer, SurfelData, 0); -RWSTRUCTUREDBUFFER(surfelDeadBuffer, uint, 1); -RWSTRUCTUREDBUFFER(surfelAliveBuffer, uint, 2); -RWRAWBUFFER(surfelStatsBuffer, 3); -RWTEXTURE2D(result, float3, 4); -RWTEXTURE2D(debugUAV, unorm float4, 5); +RWStructuredBuffer surfelDataBuffer : register(u0); +RWStructuredBuffer surfelDeadBuffer : register(u1); +RWStructuredBuffer surfelAliveBuffer : register(u2); +RWByteAddressBuffer surfelStatsBuffer : register(u3); +RWTexture2D result : register(u4); +RWTexture2D debugUAV : register(u5); void write_result(uint2 DTid, float4 color) { diff --git a/WickedEngine/shaders/surfel_gridoffsetsCS.hlsl b/WickedEngine/shaders/surfel_gridoffsetsCS.hlsl index ed2bbaa1c..b1bd41eda 100644 --- a/WickedEngine/shaders/surfel_gridoffsetsCS.hlsl +++ b/WickedEngine/shaders/surfel_gridoffsetsCS.hlsl @@ -1,9 +1,9 @@ #include "globals.hlsli" #include "ShaderInterop_SurfelGI.h" -RWSTRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, 0); -RWSTRUCTUREDBUFFER(surfelCellBuffer, uint, 1); -RWRAWBUFFER(surfelStatsBuffer, 2); +RWStructuredBuffer surfelGridBuffer : register(u0); +RWStructuredBuffer surfelCellBuffer : register(u1); +RWByteAddressBuffer surfelStatsBuffer : register(u2); [numthreads(64, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/surfel_gridresetCS.hlsl b/WickedEngine/shaders/surfel_gridresetCS.hlsl index d68f45fa3..9926a94e6 100644 --- a/WickedEngine/shaders/surfel_gridresetCS.hlsl +++ b/WickedEngine/shaders/surfel_gridresetCS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_SurfelGI.h" -RWSTRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, 0); +RWStructuredBuffer surfelGridBuffer : register(u0); [numthreads(64, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/surfel_indirectprepareCS.hlsl b/WickedEngine/shaders/surfel_indirectprepareCS.hlsl index 399f7f2c8..be0f517a0 100644 --- a/WickedEngine/shaders/surfel_indirectprepareCS.hlsl +++ b/WickedEngine/shaders/surfel_indirectprepareCS.hlsl @@ -1,7 +1,7 @@ #include "globals.hlsli" #include "ShaderInterop_SurfelGI.h" -RWRAWBUFFER(surfelStatsBuffer, 0); +RWByteAddressBuffer surfelStatsBuffer : register(u0); [numthreads(1, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/surfel_raytraceCS.hlsl b/WickedEngine/shaders/surfel_raytraceCS.hlsl index 765a5181b..127e732ea 100644 --- a/WickedEngine/shaders/surfel_raytraceCS.hlsl +++ b/WickedEngine/shaders/surfel_raytraceCS.hlsl @@ -4,15 +4,15 @@ #include "ShaderInterop_SurfelGI.h" -STRUCTUREDBUFFER(surfelBuffer, Surfel, TEXSLOT_ONDEMAND0); -RAWBUFFER(surfelStatsBuffer, TEXSLOT_ONDEMAND1); -STRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, TEXSLOT_ONDEMAND2); -STRUCTUREDBUFFER(surfelCellBuffer, uint, TEXSLOT_ONDEMAND3); -STRUCTUREDBUFFER(surfelAliveBuffer, uint, TEXSLOT_ONDEMAND4); -TEXTURE2D(surfelMomentsTexturePrev, float2, TEXSLOT_ONDEMAND5); +StructuredBuffer surfelBuffer : register(t0); +ByteAddressBuffer surfelStatsBuffer : register(t1); +StructuredBuffer surfelGridBuffer : register(t2); +StructuredBuffer surfelCellBuffer : register(t3); +StructuredBuffer surfelAliveBuffer : register(t4); +Texture2D surfelMomentsTexturePrev : register(t5); -RWSTRUCTUREDBUFFER(surfelDataBuffer, SurfelData, 0); -RWTEXTURE2D(surfelMomentsTexture, float2, 1); +RWStructuredBuffer surfelDataBuffer : register(u0); +RWTexture2D surfelMomentsTexture : register(u1); void surfel_moments_write(uint2 moments_pixel, float dist) { diff --git a/WickedEngine/shaders/surfel_updateCS.hlsl b/WickedEngine/shaders/surfel_updateCS.hlsl index 3ea76efa3..dfee65e09 100644 --- a/WickedEngine/shaders/surfel_updateCS.hlsl +++ b/WickedEngine/shaders/surfel_updateCS.hlsl @@ -2,16 +2,16 @@ #include "ShaderInterop_SurfelGI.h" #include "brdf.hlsli" -STRUCTUREDBUFFER(surfelDataBuffer, SurfelData, TEXSLOT_ONDEMAND0); -STRUCTUREDBUFFER(surfelAliveBuffer_CURRENT, uint, TEXSLOT_ONDEMAND1); -TEXTURE2D(surfelMomentsTexturePrev, float2, TEXSLOT_ONDEMAND2); +StructuredBuffer surfelDataBuffer : register(t0); +StructuredBuffer surfelAliveBuffer_CURRENT : register(t1); +Texture2D surfelMomentsTexturePrev : register(t2); -RWSTRUCTUREDBUFFER(surfelBuffer, Surfel, 0); -RWSTRUCTUREDBUFFER(surfelGridBuffer, SurfelGridCell, 1); -RWSTRUCTUREDBUFFER(surfelAliveBuffer_NEXT, uint, 2); -RWSTRUCTUREDBUFFER(surfelDeadBuffer, uint, 3); -RWRAWBUFFER(surfelStatsBuffer, 4); -RWTEXTURE2D(surfelMomentsTexture, float2, 5); +RWStructuredBuffer surfelBuffer : register(u0); +RWStructuredBuffer surfelGridBuffer : register(u1); +RWStructuredBuffer surfelAliveBuffer_NEXT : register(u2); +RWStructuredBuffer surfelDeadBuffer : register(u3); +RWByteAddressBuffer surfelStatsBuffer : register(u4); +RWTexture2D surfelMomentsTexture : register(u5); [numthreads(SURFEL_INDIRECT_NUMTHREADS, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/temporalaaCS.hlsl b/WickedEngine/shaders/temporalaaCS.hlsl index 944c8ea7a..97da1ad21 100644 --- a/WickedEngine/shaders/temporalaaCS.hlsl +++ b/WickedEngine/shaders/temporalaaCS.hlsl @@ -3,10 +3,10 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input_current, float3, TEXSLOT_ONDEMAND0); -TEXTURE2D(input_history, float3, TEXSLOT_ONDEMAND1); +Texture2D input_current : register(t0); +Texture2D input_history : register(t1); -RWTEXTURE2D(output, float3, 0); +RWTexture2D output : register(u0); // Neighborhood load optimization: #define USE_LDS diff --git a/WickedEngine/shaders/tileFrustumsCS.hlsl b/WickedEngine/shaders/tileFrustumsCS.hlsl index b1852a440..dc754181f 100644 --- a/WickedEngine/shaders/tileFrustumsCS.hlsl +++ b/WickedEngine/shaders/tileFrustumsCS.hlsl @@ -2,7 +2,7 @@ #include "cullingShaderHF.hlsli" // View space frustums for the grid cells. -RWSTRUCTUREDBUFFER(out_Frustums, Frustum, 0); +RWStructuredBuffer out_Frustums : register(u0); [numthreads(TILED_CULLING_BLOCKSIZE, TILED_CULLING_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) diff --git a/WickedEngine/shaders/upsample_bilateral_float4CS.hlsl b/WickedEngine/shaders/upsample_bilateral_float4CS.hlsl index 25d4a68ce..36ecba6f1 100644 --- a/WickedEngine/shaders/upsample_bilateral_float4CS.hlsl +++ b/WickedEngine/shaders/upsample_bilateral_float4CS.hlsl @@ -7,7 +7,7 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(input, UPSAMPLE_FORMAT, TEXSLOT_ONDEMAND0); +Texture2D input : register(t0); // Note: this post process can be either a pixel shader or compute shader, depending on use case @@ -18,7 +18,7 @@ float4 main(float4 pos : SV_Position, float2 uv : TEXCOORD) : SV_TARGET const uint2 pixel = pos.xy; #else // Run this post process as compute shader: -RWTEXTURE2D(output, UPSAMPLE_FORMAT, 0); +RWTexture2D output : register(u0); [numthreads(POSTPROCESS_BLOCKSIZE, POSTPROCESS_BLOCKSIZE, 1)] void main(uint3 DTid : SV_DispatchThreadID) { diff --git a/WickedEngine/shaders/visibility_resolveCS.hlsl b/WickedEngine/shaders/visibility_resolveCS.hlsl index fbdc86e60..d6404174b 100644 --- a/WickedEngine/shaders/visibility_resolveCS.hlsl +++ b/WickedEngine/shaders/visibility_resolveCS.hlsl @@ -2,27 +2,27 @@ #include "ShaderInterop_Renderer.h" #include "brdf.hlsli" -RWTEXTURE2D(output_velocity, float2, 0); +RWTexture2D output_velocity : register(u0); -RWTEXTURE2D(output_depth_mip0, float, 1); -RWTEXTURE2D(output_depth_mip1, float, 2); -RWTEXTURE2D(output_depth_mip2, float, 3); -RWTEXTURE2D(output_depth_mip3, float, 4); -RWTEXTURE2D(output_depth_mip4, float, 5); +RWTexture2D output_depth_mip0 : register(u1); +RWTexture2D output_depth_mip1 : register(u2); +RWTexture2D output_depth_mip2 : register(u3); +RWTexture2D output_depth_mip3 : register(u4); +RWTexture2D output_depth_mip4 : register(u5); -RWTEXTURE2D(output_lineardepth_mip0, float, 6); -RWTEXTURE2D(output_lineardepth_mip1, float, 7); -RWTEXTURE2D(output_lineardepth_mip2, float, 8); -RWTEXTURE2D(output_lineardepth_mip3, float, 9); -RWTEXTURE2D(output_lineardepth_mip4, float, 10); +RWTexture2D output_lineardepth_mip0 : register(u6); +RWTexture2D output_lineardepth_mip1 : register(u7); +RWTexture2D output_lineardepth_mip2 : register(u8); +RWTexture2D output_lineardepth_mip3 : register(u9); +RWTexture2D output_lineardepth_mip4 : register(u10); #ifdef VISIBILITY_MSAA -TEXTURE2DMS(texture_primitiveID, uint2, TEXSLOT_ONDEMAND0); -TEXTURE2DMS(texture_depthbuffer, float, TEXSLOT_ONDEMAND1); -RWTEXTURE2D(output_primitiveID, uint2, 11); +Texture2DMS texture_primitiveID : register(t0); +Texture2DMS texture_depthbuffer : register(t1); +RWTexture2D output_primitiveID : register(u11); #else -TEXTURE2D(texture_primitiveID, uint2, TEXSLOT_ONDEMAND0); -TEXTURE2D(texture_depthbuffer, float, TEXSLOT_ONDEMAND1); +Texture2D texture_primitiveID : register(t0); +Texture2D texture_depthbuffer : register(t1); #endif // VISIBILITY_MSAA [numthreads(16, 16, 1)] diff --git a/WickedEngine/shaders/volumetricCloud_curlnoiseCS.hlsl b/WickedEngine/shaders/volumetricCloud_curlnoiseCS.hlsl index c4c1d3009..ccb4eb4b2 100644 --- a/WickedEngine/shaders/volumetricCloud_curlnoiseCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_curlnoiseCS.hlsl @@ -2,7 +2,7 @@ #include "volumetricCloudsHF.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); static const float tex_size = 128; @@ -31,4 +31,4 @@ void main(uint3 DTid : SV_DispatchThreadID) // Output output[DTid.xy] = float4(noise, 1.0); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/volumetricCloud_detailnoiseCS.hlsl b/WickedEngine/shaders/volumetricCloud_detailnoiseCS.hlsl index 2c9d3d7d4..b40edafd4 100644 --- a/WickedEngine/shaders/volumetricCloud_detailnoiseCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_detailnoiseCS.hlsl @@ -2,7 +2,7 @@ #include "volumetricCloudsHF.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE3D(output, float4, 0); +RWTexture3D output : register(u0); static const uint texSize = 32; @@ -27,4 +27,4 @@ void main(uint3 DTid : SV_DispatchThreadID) // Output them for later use output[DTid] = float4(worleyLarge, worleyMedium, worleySmall, 1.0); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/volumetricCloud_renderCS.hlsl b/WickedEngine/shaders/volumetricCloud_renderCS.hlsl index c6b19cf32..8c32dc407 100644 --- a/WickedEngine/shaders/volumetricCloud_renderCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_renderCS.hlsl @@ -25,13 +25,13 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE3D(texture_shapeNoise, float4, TEXSLOT_ONDEMAND1); -TEXTURE3D(texture_detailNoise, float4, TEXSLOT_ONDEMAND2); -TEXTURE2D(texture_curlNoise, float4, TEXSLOT_ONDEMAND3); -TEXTURE2D(texture_weatherMap, float4, TEXSLOT_ONDEMAND4); +Texture3D texture_shapeNoise : register(t1); +Texture3D texture_detailNoise : register(t2); +Texture2D texture_curlNoise : register(t3); +Texture2D texture_weatherMap : register(t4); -RWTEXTURE2D(texture_render, float4, 0); -RWTEXTURE2D(texture_cloudDepth, float2, 1); +RWTexture2D texture_render : register(u0); +RWTexture2D texture_cloudDepth : register(u1); // Octaves for multiple-scattering approximation. 1 means single-scattering only. diff --git a/WickedEngine/shaders/volumetricCloud_reprojectCS.hlsl b/WickedEngine/shaders/volumetricCloud_reprojectCS.hlsl index 81fbec904..65e76489b 100644 --- a/WickedEngine/shaders/volumetricCloud_reprojectCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_reprojectCS.hlsl @@ -3,13 +3,13 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(cloud_current, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(cloud_depth_current, float2, TEXSLOT_ONDEMAND1); -TEXTURE2D(cloud_history, float4, TEXSLOT_ONDEMAND2); -TEXTURE2D(cloud_depth_history, float2, TEXSLOT_ONDEMAND3); +Texture2D cloud_current : register(t0); +Texture2D cloud_depth_current : register(t1); +Texture2D cloud_history : register(t2); +Texture2D cloud_depth_history : register(t3); -RWTEXTURE2D(output, float4, 0); -RWTEXTURE2D(output_depth, float2, 1); +RWTexture2D output : register(u0); +RWTexture2D output_depth : register(u1); // This function compute the checkerboard undersampling position int ComputeCheckerBoardIndex(int2 renderCoord, int subPixelIndex) diff --git a/WickedEngine/shaders/volumetricCloud_shapenoiseCS.hlsl b/WickedEngine/shaders/volumetricCloud_shapenoiseCS.hlsl index 9e6dea5d2..b23e75b8e 100644 --- a/WickedEngine/shaders/volumetricCloud_shapenoiseCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_shapenoiseCS.hlsl @@ -2,7 +2,7 @@ #include "volumetricCloudsHF.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE3D(output, float4, 0); +RWTexture3D output : register(u0); static const uint texSizeXY = 64; static const uint texSizeZ = 64; diff --git a/WickedEngine/shaders/volumetricCloud_temporalCS.hlsl b/WickedEngine/shaders/volumetricCloud_temporalCS.hlsl index 811ab8c7b..7747c2859 100644 --- a/WickedEngine/shaders/volumetricCloud_temporalCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_temporalCS.hlsl @@ -3,12 +3,12 @@ PUSHCONSTANT(postprocess, PostProcess); -TEXTURE2D(cloud_reproject, float4, TEXSLOT_ONDEMAND0); -TEXTURE2D(cloud_reproject_depth, float2, TEXSLOT_ONDEMAND1); -TEXTURE2D(cloud_history, float4, TEXSLOT_ONDEMAND2); +Texture2D cloud_reproject : register(t0); +Texture2D cloud_reproject_depth : register(t1); +Texture2D cloud_history : register(t2); -RWTEXTURE2D(output, float4, 0); -RWTEXTURE2D(output_cloudMask, unorm float4, 1); +RWTexture2D output : register(u0); +RWTexture2D output_cloudMask : register(u1); // If the clouds are moving fast, the upsampling will most likely not be able to keep up. You can modify these values to relax the effect: diff --git a/WickedEngine/shaders/volumetricCloud_weathermapCS.hlsl b/WickedEngine/shaders/volumetricCloud_weathermapCS.hlsl index 2062bab6d..c3a4da9a8 100644 --- a/WickedEngine/shaders/volumetricCloud_weathermapCS.hlsl +++ b/WickedEngine/shaders/volumetricCloud_weathermapCS.hlsl @@ -2,7 +2,7 @@ #include "volumetricCloudsHF.hlsli" #include "ShaderInterop_Postprocess.h" -RWTEXTURE2D(output, float4, 0); +RWTexture2D output : register(u0); static const float texSize = 1024; @@ -55,4 +55,4 @@ void main(uint3 DTid : SV_DispatchThreadID) perlinNoise2 -= pow(perlinNoise4, 2.0); output[DTid.xy] = float4(perlinNoise1, perlinNoise2, perlinNoise3, 1.0); -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/voxelClearOnlyNormalCS.hlsl b/WickedEngine/shaders/voxelClearOnlyNormalCS.hlsl index f2bb62818..9a51d5362 100644 --- a/WickedEngine/shaders/voxelClearOnlyNormalCS.hlsl +++ b/WickedEngine/shaders/voxelClearOnlyNormalCS.hlsl @@ -1,10 +1,10 @@ #include "globals.hlsli" #include "voxelHF.hlsli" -RWSTRUCTUREDBUFFER(input_output, VoxelType, 0); +RWStructuredBuffer input_output : register(u0); [numthreads(256, 1, 1)] void main(uint3 DTid : SV_DispatchThreadID) { input_output[DTid.x].normalMask = 0; -} \ No newline at end of file +} diff --git a/WickedEngine/shaders/voxelRadianceSecondaryBounceCS.hlsl b/WickedEngine/shaders/voxelRadianceSecondaryBounceCS.hlsl index b10dda9c9..a2b0e33fc 100644 --- a/WickedEngine/shaders/voxelRadianceSecondaryBounceCS.hlsl +++ b/WickedEngine/shaders/voxelRadianceSecondaryBounceCS.hlsl @@ -3,9 +3,10 @@ #include "voxelHF.hlsli" #include "voxelConeTracingHF.hlsli" -TEXTURE3D(input_emission, float4, 0); -STRUCTUREDBUFFER(input_voxelscene, VoxelType, 1); -RWTEXTURE3D(output, float4, 0); +Texture3D input_emission : register(t0); +StructuredBuffer input_voxelscene : register(t1); + +RWTexture3D output : register(u0); [numthreads(8, 8, 8)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/shaders/voxelSceneCopyClearCS.hlsl b/WickedEngine/shaders/voxelSceneCopyClearCS.hlsl index f056f3647..710c4300b 100644 --- a/WickedEngine/shaders/voxelSceneCopyClearCS.hlsl +++ b/WickedEngine/shaders/voxelSceneCopyClearCS.hlsl @@ -1,8 +1,8 @@ #include "globals.hlsli" #include "voxelHF.hlsli" -RWSTRUCTUREDBUFFER(input_output, VoxelType, 0); -RWTEXTURE3D(output_emission, float4, 1); +RWStructuredBuffer input_output : register(u0); +RWTexture3D output_emission : register(u1); [numthreads(256, 1, 1)] void main( uint3 DTid : SV_DispatchThreadID ) diff --git a/WickedEngine/wiEmittedParticle.cpp b/WickedEngine/wiEmittedParticle.cpp index 0ebd073eb..70db810b8 100644 --- a/WickedEngine/wiEmittedParticle.cpp +++ b/WickedEngine/wiEmittedParticle.cpp @@ -5,7 +5,6 @@ #include "wiResourceManager.h" #include "wiIntersect.h" #include "wiRandom.h" -#include "shaders/ResourceMapping.h" #include "wiArchive.h" #include "wiTextureHelper.h" #include "wiGPUSortLib.h" @@ -479,7 +478,7 @@ void wiEmittedParticle::UpdateGPU(uint32_t instanceIndex, uint32_t materialIndex &mesh->indexBuffer, (mesh->streamoutBuffer_POS.IsValid() ? &mesh->streamoutBuffer_POS : &mesh->vertexBuffer_POS), }; - device->BindResources(resources, TEXSLOT_ONDEMAND0, arraysize(resources), cmd); + device->BindResources(resources, 0, arraysize(resources), cmd); } GPUBarrier barrier_indirect_uav = GPUBarrier::Buffer(&indirectBuffers, ResourceState::INDIRECT_ARGUMENT, ResourceState::UNORDERED_ACCESS); @@ -654,7 +653,7 @@ void wiEmittedParticle::UpdateGPU(uint32_t instanceIndex, uint32_t materialIndex const GPUResource* res[] = { &counterBuffer, }; - device->BindResources(res, TEXSLOT_ONDEMAND0, arraysize(res), cmd); + device->BindResources(res, 0, arraysize(res), cmd); const GPUResource* uavs[] = { &indirectBuffers, @@ -731,7 +730,7 @@ void wiEmittedParticle::Draw(const MaterialComponent& material, CommandList cmd) &culledIndirectionBuffer, &culledIndirectionBuffer2, }; - device->BindResources(res, TEXSLOT_ONDEMAND20, arraysize(res), cmd); + device->BindResources(res, 20, arraysize(res), cmd); if (ALLOW_MESH_SHADER && device->CheckCapability(GraphicsDeviceCapability::MESH_SHADER)) { diff --git a/WickedEngine/wiEnums.h b/WickedEngine/wiEnums.h index dcaedfe1a..e010e33f8 100644 --- a/WickedEngine/wiEnums.h +++ b/WickedEngine/wiEnums.h @@ -387,7 +387,7 @@ enum DSSTYPES { DSSTYPE_DEFAULT, DSSTYPE_SHADOW, - DSSTYPE_XRAY, + DSSTYPE_DEPTHDISABLED, DSSTYPE_DEPTHREAD, DSSTYPE_DEPTHREADEQUAL, DSSTYPE_ENVMAP, @@ -405,9 +405,29 @@ enum BSTYPES BSTYPE_ADDITIVE, BSTYPE_PREMULTIPLIED, BSTYPE_COLORWRITEDISABLE, - BSTYPE_ENVIRONMENTALLIGHT, BSTYPE_DECAL, BSTYPE_MULTIPLY, BSTYPE_TRANSPARENTSHADOW, BSTYPE_COUNT }; + +enum SAMPLERTYPES +{ + // Can be changed by user + SAMPLER_OBJECTSHADER, + + // Persistent samplers + // These are bound once and are alive forever + SAMPLER_LINEAR_CLAMP, + SAMPLER_LINEAR_WRAP, + SAMPLER_LINEAR_MIRROR, + SAMPLER_POINT_CLAMP, + SAMPLER_POINT_WRAP, + SAMPLER_POINT_MIRROR, + SAMPLER_ANISO_CLAMP, + SAMPLER_ANISO_WRAP, + SAMPLER_ANISO_MIRROR, + SAMPLER_CMP_DEPTH, + + SAMPLER_COUNT, +}; diff --git a/WickedEngine/wiFFTGenerator.cpp b/WickedEngine/wiFFTGenerator.cpp index 2e0beeb96..17382a611 100644 --- a/WickedEngine/wiFFTGenerator.cpp +++ b/WickedEngine/wiFFTGenerator.cpp @@ -37,7 +37,7 @@ namespace wiFFTGenerator // Buffers const GPUResource* srvs[1] = { &pSRV_Src }; - device->BindResources(srvs, TEXSLOT_ONDEMAND0, 1, cmd); + device->BindResources(srvs, 0, 1, cmd); const GPUResource* uavs[1] = { &pUAV_Dst }; device->BindUAVs(uavs, 0, arraysize(uavs), cmd); diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index 5a740a88c..c00997585 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -2,7 +2,6 @@ #include "wiRenderer.h" #include "wiResourceManager.h" #include "wiHelper.h" -#include "shaders/ResourceMapping.h" #include "shaders/ShaderInterop_Font.h" #include "wiBackLog.h" #include "wiTextureHelper.h" @@ -250,7 +249,7 @@ void LoadShaders() pixelShader.auto_samplers.emplace_back(); pixelShader.auto_samplers.back().sampler = sampler; - pixelShader.auto_samplers.back().slot = SSLOT_ONDEMAND1; + pixelShader.auto_samplers.back().slot = 0; wiRenderer::LoadShader(ShaderStage::PS, pixelShader, "fontPS.cso"); diff --git a/WickedEngine/wiGPUBVH.cpp b/WickedEngine/wiGPUBVH.cpp index ba5220bba..4f4dc4d4a 100644 --- a/WickedEngine/wiGPUBVH.cpp +++ b/WickedEngine/wiGPUBVH.cpp @@ -278,7 +278,7 @@ void wiGPUBVH::Build(const Scene& scene, CommandList cmd) const &primitiveIDBuffer, &primitiveMortonBuffer, }; - device->BindResources(res, TEXSLOT_ONDEMAND0, arraysize(res), cmd); + device->BindResources(res, 0, arraysize(res), cmd); device->Dispatch((primitiveCount + BVH_BUILDER_GROUPSIZE - 1) / BVH_BUILDER_GROUPSIZE, 1, 1, cmd); @@ -309,7 +309,7 @@ void wiGPUBVH::Build(const Scene& scene, CommandList cmd) const &primitiveBuffer, &bvhParentBuffer, }; - device->BindResources(res, TEXSLOT_ONDEMAND0, arraysize(res), cmd); + device->BindResources(res, 0, arraysize(res), cmd); device->Dispatch((primitiveCount + BVH_BUILDER_GROUPSIZE - 1) / BVH_BUILDER_GROUPSIZE, 1, 1, cmd); diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 4f92633fb..5b708c532 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -4,7 +4,6 @@ #include "wiMath.h" #include "wiIntersect.h" #include "wiRandom.h" -#include "shaders/ResourceMapping.h" #include "wiArchive.h" #include "shaders/ShaderInterop.h" #include "wiTextureHelper.h" @@ -299,7 +298,7 @@ void wiHairParticle::UpdateGPU(uint32_t instanceIndex, uint32_t materialIndex, c mesh.streamoutBuffer_POS.IsValid() ? &mesh.streamoutBuffer_POS : &mesh.vertexBuffer_POS, &vertexBuffer_length }; - device->BindResources(res, TEXSLOT_ONDEMAND0, arraysize(res), cmd); + device->BindResources(res, 0, arraysize(res), cmd); device->Dispatch(hcb.xHairNumDispatchGroups, 1, 1, cmd); @@ -356,7 +355,7 @@ void wiHairParticle::Draw(const MaterialComponent& material, RENDERPASS renderPa return; } device->BindPipelineState(&PSO_wire, cmd); - device->BindResource(wiTextureHelper::getWhite(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getWhite(), 0, cmd); } else { diff --git a/WickedEngine/wiImage.cpp b/WickedEngine/wiImage.cpp index b4dcb4e56..aaca32ba9 100644 --- a/WickedEngine/wiImage.cpp +++ b/WickedEngine/wiImage.cpp @@ -2,8 +2,6 @@ #include "wiResourceManager.h" #include "wiRenderer.h" #include "wiHelper.h" -#include "shaders/SamplerMapping.h" -#include "shaders/ResourceMapping.h" #include "shaders/ShaderInterop_Image.h" #include "wiBackLog.h" #include "wiEvent.h" @@ -62,34 +60,34 @@ namespace wiImage } device->BindStencilRef(stencilRef, cmd); - const Sampler* sampler = wiRenderer::GetSampler(SSLOT_LINEAR_CLAMP); + const Sampler* sampler = wiRenderer::GetSampler(SAMPLER_LINEAR_CLAMP); if (params.quality == QUALITY_NEAREST) { if (params.sampleFlag == SAMPLEMODE_MIRROR) - sampler = wiRenderer::GetSampler(SSLOT_POINT_MIRROR); + sampler = wiRenderer::GetSampler(SAMPLER_POINT_MIRROR); else if (params.sampleFlag == SAMPLEMODE_WRAP) - sampler = wiRenderer::GetSampler(SSLOT_POINT_WRAP); + sampler = wiRenderer::GetSampler(SAMPLER_POINT_WRAP); else if (params.sampleFlag == SAMPLEMODE_CLAMP) - sampler = wiRenderer::GetSampler(SSLOT_POINT_CLAMP); + sampler = wiRenderer::GetSampler(SAMPLER_POINT_CLAMP); } else if (params.quality == QUALITY_LINEAR) { if (params.sampleFlag == SAMPLEMODE_MIRROR) - sampler = wiRenderer::GetSampler(SSLOT_LINEAR_MIRROR); + sampler = wiRenderer::GetSampler(SAMPLER_LINEAR_MIRROR); else if (params.sampleFlag == SAMPLEMODE_WRAP) - sampler = wiRenderer::GetSampler(SSLOT_LINEAR_WRAP); + sampler = wiRenderer::GetSampler(SAMPLER_LINEAR_WRAP); else if (params.sampleFlag == SAMPLEMODE_CLAMP) - sampler = wiRenderer::GetSampler(SSLOT_LINEAR_CLAMP); + sampler = wiRenderer::GetSampler(SAMPLER_LINEAR_CLAMP); } else if (params.quality == QUALITY_ANISOTROPIC) { if (params.sampleFlag == SAMPLEMODE_MIRROR) - sampler = wiRenderer::GetSampler(SSLOT_ANISO_MIRROR); + sampler = wiRenderer::GetSampler(SAMPLER_ANISO_MIRROR); else if (params.sampleFlag == SAMPLEMODE_WRAP) - sampler = wiRenderer::GetSampler(SSLOT_ANISO_WRAP); + sampler = wiRenderer::GetSampler(SAMPLER_ANISO_WRAP); else if (params.sampleFlag == SAMPLEMODE_CLAMP) - sampler = wiRenderer::GetSampler(SSLOT_ANISO_CLAMP); + sampler = wiRenderer::GetSampler(SAMPLER_ANISO_CLAMP); } PushConstantsImage push; diff --git a/WickedEngine/wiOcean.cpp b/WickedEngine/wiOcean.cpp index 04b2ebba1..36af231d5 100644 --- a/WickedEngine/wiOcean.cpp +++ b/WickedEngine/wiOcean.cpp @@ -263,7 +263,7 @@ void wiOcean::UpdateDisplacementMap(const OceanParameters& params, CommandList c &buffer_Float2_H0, &buffer_Float_Omega }; - device->BindResources(cs0_srvs, TEXSLOT_ONDEMAND0, arraysize(cs0_srvs), cmd); + device->BindResources(cs0_srvs, 0, arraysize(cs0_srvs), cmd); const GPUResource* cs0_uavs[1] = { &buffer_Float2_Ht }; device->BindUAVs(cs0_uavs, 0, arraysize(cs0_uavs), cmd); @@ -318,7 +318,7 @@ void wiOcean::UpdateDisplacementMap(const OceanParameters& params, CommandList c const GPUResource* cs_uavs[] = { &displacementMap }; device->BindUAVs(cs_uavs, 0, 1, cmd); const GPUResource* cs_srvs[1] = { &buffer_Float_Dxyz }; - device->BindResources(cs_srvs, TEXSLOT_ONDEMAND0, 1, cmd); + device->BindResources(cs_srvs, 0, 1, cmd); { GPUBarrier barriers[] = { GPUBarrier::Image(&displacementMap, displacementMap.desc.layout, ResourceState::UNORDERED_ACCESS), @@ -339,7 +339,7 @@ void wiOcean::UpdateDisplacementMap(const OceanParameters& params, CommandList c cs_uavs[0] = { &gradientMap }; device->BindUAVs(cs_uavs, 0, 1, cmd); cs_srvs[0] = &displacementMap; - device->BindResources(cs_srvs, TEXSLOT_ONDEMAND0, 1, cmd); + device->BindResources(cs_srvs, 0, 1, cmd); { GPUBarrier barriers[] = { GPUBarrier::Image(&gradientMap, gradientMap.desc.layout, ResourceState::UNORDERED_ACCESS), @@ -395,8 +395,8 @@ void wiOcean::Render(const CameraComponent& camera, const OceanParameters& param device->BindDynamicConstantBuffer(cb, CB_GETBINDSLOT(Ocean_RenderCB), cmd); - device->BindResource(&displacementMap, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&gradientMap, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&displacementMap, 0, cmd); + device->BindResource(&gradientMap, 1, cmd); device->Draw(dim.x*dim.y*6, 0, cmd); diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 58dd01b01..92ba81d27 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -48,7 +48,7 @@ DepthStencilState depthStencils[DSSTYPE_COUNT]; BlendState blendStates[BSTYPE_COUNT]; GPUBuffer constantBuffers[CBTYPE_COUNT]; GPUBuffer resourceBuffers[RBTYPE_COUNT]; -Sampler samplers[SSLOT_COUNT]; +Sampler samplers[SAMPLER_COUNT]; std::string SHADERPATH = "shaders/"; std::string SHADERSOURCEPATH = "../WickedEngine/shaders/"; @@ -1094,7 +1094,7 @@ void LoadShaders() desc.dss = &depthStencils[DSSTYPE_ENVMAP]; break; case RENDERPASS_VOXELIZE: - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; break; default: if (blendMode == BLENDMODE_ADDITIVE) @@ -1171,7 +1171,7 @@ void LoadShaders() desc.ps = &shaders[PSTYPE_OBJECT_PREPASS]; break; case RENDERPASS_VOXELIZE: - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.rs = &rasterizers[RSTYPE_VOXELIZE]; desc.vs = &shaders[VSTYPE_VOXELIZER]; desc.gs = &shaders[GSTYPE_VOXELIZER]; @@ -1346,7 +1346,7 @@ void LoadShaders() // volumetric lights: if (args.jobIndex <= LightComponent::SPOT) { - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.bs = &blendStates[BSTYPE_ADDITIVE]; desc.rs = &rasterizers[RSTYPE_BACK]; @@ -1378,7 +1378,7 @@ void LoadShaders() desc.ps = &shaders[PSTYPE_RENDERLIGHTMAP]; desc.rs = &rasterizers[RSTYPE_DOUBLESIDED]; desc.bs = &blendStates[BSTYPE_TRANSPARENT]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; device->CreatePipelineState(&desc, &PSO_renderlightmap); }); @@ -1398,7 +1398,7 @@ void LoadShaders() desc.ps = &shaders[PSTYPE_POSTPROCESS_UPSAMPLE_BILATERAL]; desc.rs = &rasterizers[RSTYPE_DOUBLESIDED]; desc.bs = &blendStates[BSTYPE_PREMULTIPLIED]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; device->CreatePipelineState(&desc, &PSO_upsample_bilateral); }); @@ -1408,7 +1408,7 @@ void LoadShaders() desc.ps = &shaders[PSTYPE_POSTPROCESS_OUTLINE]; desc.rs = &rasterizers[RSTYPE_DOUBLESIDED]; desc.bs = &blendStates[BSTYPE_TRANSPARENT]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; device->CreatePipelineState(&desc, &PSO_outline); }); @@ -1418,7 +1418,7 @@ void LoadShaders() desc.ps = &shaders[PSTYPE_LENSFLARE]; desc.bs = &blendStates[BSTYPE_ADDITIVE]; desc.rs = &rasterizers[RSTYPE_DOUBLESIDED]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.pt = PrimitiveTopology::TRIANGLESTRIP; device->CreatePipelineState(&desc, &PSO_lensflare); @@ -1502,7 +1502,7 @@ void LoadShaders() desc.vs = &shaders[VSTYPE_VERTEXCOLOR]; desc.ps = &shaders[PSTYPE_VERTEXCOLOR]; desc.il = &inputLayouts[ILTYPE_VERTEXCOLOR]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.rs = &rasterizers[RSTYPE_WIRE_DOUBLESIDED_SMOOTH]; desc.bs = &blendStates[BSTYPE_TRANSPARENT]; desc.pt = PrimitiveTopology::LINELIST; @@ -1554,7 +1554,7 @@ void LoadShaders() case DEBUGRENDERING_FORCEFIELD_POINT: desc.vs = &shaders[VSTYPE_FORCEFIELDVISUALIZER_POINT]; desc.ps = &shaders[PSTYPE_FORCEFIELDVISUALIZER]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.rs = &rasterizers[RSTYPE_BACK]; desc.bs = &blendStates[BSTYPE_ADDITIVE]; desc.pt = PrimitiveTopology::TRIANGLELIST; @@ -1562,7 +1562,7 @@ void LoadShaders() case DEBUGRENDERING_FORCEFIELD_PLANE: desc.vs = &shaders[VSTYPE_FORCEFIELDVISUALIZER_PLANE]; desc.ps = &shaders[PSTYPE_FORCEFIELDVISUALIZER]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.rs = &rasterizers[RSTYPE_FRONT]; desc.bs = &blendStates[BSTYPE_ADDITIVE]; desc.pt = PrimitiveTopology::TRIANGLESTRIP; @@ -1570,7 +1570,7 @@ void LoadShaders() case DEBUGRENDERING_RAYTRACE_BVH: desc.vs = &shaders[VSTYPE_RAYTRACE_SCREEN]; desc.ps = &shaders[PSTYPE_RAYTRACE_DEBUGBVH]; - desc.dss = &depthStencils[DSSTYPE_XRAY]; + desc.dss = &depthStencils[DSSTYPE_DEPTHDISABLED]; desc.rs = &rasterizers[RSTYPE_DOUBLESIDED]; desc.bs = &blendStates[BSTYPE_TRANSPARENT]; desc.pt = PrimitiveTopology::TRIANGLELIST; @@ -1876,7 +1876,7 @@ void SetUpStates() dsd.depth_enable = false; dsd.stencil_enable = false; - depthStencils[DSSTYPE_XRAY] = dsd; + depthStencils[DSSTYPE_DEPTHDISABLED] = dsd; dsd.depth_enable = true; @@ -1955,30 +1955,6 @@ void SetUpStates() blendStates[BSTYPE_COLORWRITEDISABLE] = bd; - bd.render_target[0].blend_enable = true; - bd.render_target[0].src_blend = Blend::ONE; - bd.render_target[0].dest_blend = Blend::ONE; - bd.render_target[0].blend_op = BlendOp::ADD; - bd.render_target[0].src_blend_alpha = Blend::ONE; - bd.render_target[0].dest_blend_alpha = Blend::ONE; - bd.render_target[0].blend_op_alpha = BlendOp::ADD; - bd.render_target[0].render_target_write_mask = ColorWrite::ENABLE_RED | ColorWrite::ENABLE_GREEN | ColorWrite::ENABLE_BLUE; // alpha is not written by deferred lights! - bd.independent_blend_enable = false, - bd.alpha_to_coverage_enable = false; - //device->CreateBlendState(&bd, &blendStates[BSTYPE_DEFERREDLIGHT]); - - bd.render_target[0].blend_enable = true; - bd.render_target[0].src_blend = Blend::ONE; - bd.render_target[0].dest_blend = Blend::INV_SRC_ALPHA; // can overwrite ambient and lightmap - bd.render_target[0].blend_op = BlendOp::ADD; - bd.render_target[0].src_blend_alpha = Blend::ONE; - bd.render_target[0].dest_blend_alpha = Blend::ONE; - bd.render_target[0].blend_op_alpha = BlendOp::ADD; - bd.render_target[0].render_target_write_mask = ColorWrite::ENABLE_RED | ColorWrite::ENABLE_GREEN | ColorWrite::ENABLE_BLUE; // alpha is not written by deferred lights! - bd.independent_blend_enable = false; - bd.alpha_to_coverage_enable = false; - blendStates[BSTYPE_ENVIRONMENTALLIGHT] = bd; - bd.render_target[0].src_blend = Blend::INV_SRC_COLOR; bd.render_target[0].dest_blend = Blend::INV_DEST_COLOR; bd.render_target[0].blend_op = BlendOp::ADD; @@ -2034,7 +2010,7 @@ void SetUpStates() void ModifyObjectSampler(const SamplerDesc& desc) { - device->CreateSampler(&desc, &samplers[SSLOT_OBJECTSHADER]); + device->CreateSampler(&desc, &samplers[SAMPLER_OBJECTSHADER]); } const std::string& GetShaderPath() @@ -2060,7 +2036,7 @@ void ReloadShaders() wiEvent::FireEvent(SYSTEM_EVENT_RELOAD_SHADERS, 0); } -void InitializeGlobalSamplers() +void InitializeCommonSamplers() { SamplerDesc samplerDesc; samplerDesc.filter = Filter::MIN_MAG_MIP_LINEAR; @@ -2073,66 +2049,66 @@ void InitializeGlobalSamplers() samplerDesc.border_color = SamplerBorderColor::TRANSPARENT_BLACK; samplerDesc.min_lod = 0; samplerDesc.max_lod = FLT_MAX; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_LINEAR_MIRROR]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_LINEAR_MIRROR]); samplerDesc.filter = Filter::MIN_MAG_MIP_LINEAR; samplerDesc.address_u = TextureAddressMode::CLAMP; samplerDesc.address_v = TextureAddressMode::CLAMP; samplerDesc.address_w = TextureAddressMode::CLAMP; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_LINEAR_CLAMP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_LINEAR_CLAMP]); samplerDesc.filter = Filter::MIN_MAG_MIP_LINEAR; samplerDesc.address_u = TextureAddressMode::WRAP; samplerDesc.address_v = TextureAddressMode::WRAP; samplerDesc.address_w = TextureAddressMode::WRAP; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_LINEAR_WRAP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_LINEAR_WRAP]); samplerDesc.filter = Filter::MIN_MAG_MIP_POINT; samplerDesc.address_u = TextureAddressMode::MIRROR; samplerDesc.address_v = TextureAddressMode::MIRROR; samplerDesc.address_w = TextureAddressMode::MIRROR; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_POINT_MIRROR]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_POINT_MIRROR]); samplerDesc.filter = Filter::MIN_MAG_MIP_POINT; samplerDesc.address_u = TextureAddressMode::WRAP; samplerDesc.address_v = TextureAddressMode::WRAP; samplerDesc.address_w = TextureAddressMode::WRAP; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_POINT_WRAP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_POINT_WRAP]); samplerDesc.filter = Filter::MIN_MAG_MIP_POINT; samplerDesc.address_u = TextureAddressMode::CLAMP; samplerDesc.address_v = TextureAddressMode::CLAMP; samplerDesc.address_w = TextureAddressMode::CLAMP; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_POINT_CLAMP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_POINT_CLAMP]); samplerDesc.filter = Filter::ANISOTROPIC; samplerDesc.address_u = TextureAddressMode::CLAMP; samplerDesc.address_v = TextureAddressMode::CLAMP; samplerDesc.address_w = TextureAddressMode::CLAMP; samplerDesc.max_anisotropy = 16; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_ANISO_CLAMP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_ANISO_CLAMP]); samplerDesc.filter = Filter::ANISOTROPIC; samplerDesc.address_u = TextureAddressMode::WRAP; samplerDesc.address_v = TextureAddressMode::WRAP; samplerDesc.address_w = TextureAddressMode::WRAP; samplerDesc.max_anisotropy = 16; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_ANISO_WRAP]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_ANISO_WRAP]); samplerDesc.filter = Filter::ANISOTROPIC; samplerDesc.address_u = TextureAddressMode::MIRROR; samplerDesc.address_v = TextureAddressMode::MIRROR; samplerDesc.address_w = TextureAddressMode::MIRROR; samplerDesc.max_anisotropy = 16; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_ANISO_MIRROR]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_ANISO_MIRROR]); samplerDesc.filter = Filter::ANISOTROPIC; samplerDesc.address_u = TextureAddressMode::WRAP; samplerDesc.address_v = TextureAddressMode::WRAP; samplerDesc.address_w = TextureAddressMode::WRAP; samplerDesc.max_anisotropy = 16; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_OBJECTSHADER]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_OBJECTSHADER]); samplerDesc.filter = Filter::COMPARISON_MIN_MAG_LINEAR_MIP_POINT; samplerDesc.address_u = TextureAddressMode::CLAMP; @@ -2141,49 +2117,50 @@ void InitializeGlobalSamplers() samplerDesc.mip_lod_bias = 0.0f; samplerDesc.max_anisotropy = 0; samplerDesc.comparison_func = ComparisonFunc::GREATER_EQUAL; - device->CreateSampler(&samplerDesc, &samplers[SSLOT_CMP_DEPTH]); + device->CreateSampler(&samplerDesc, &samplers[SAMPLER_CMP_DEPTH]); + // Static sampler bindings must match with the static sampler declarations in shaders/globals.hlsli StaticSampler sam; - sam.sampler = samplers[SSLOT_CMP_DEPTH]; - sam.slot = SSLOT_CMP_DEPTH; + sam.sampler = samplers[SAMPLER_LINEAR_CLAMP]; + sam.slot = 100; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_LINEAR_MIRROR]; - sam.slot = SSLOT_LINEAR_MIRROR; + sam.sampler = samplers[SAMPLER_LINEAR_WRAP]; + sam.slot = 101; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_LINEAR_CLAMP]; - sam.slot = SSLOT_LINEAR_CLAMP; + sam.sampler = samplers[SAMPLER_LINEAR_MIRROR]; + sam.slot = 102; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_LINEAR_WRAP]; - sam.slot = SSLOT_LINEAR_WRAP; + sam.sampler = samplers[SAMPLER_POINT_CLAMP]; + sam.slot = 103; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_POINT_MIRROR]; - sam.slot = SSLOT_POINT_MIRROR; + sam.sampler = samplers[SAMPLER_POINT_WRAP]; + sam.slot = 104; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_POINT_WRAP]; - sam.slot = SSLOT_POINT_WRAP; + sam.sampler = samplers[SAMPLER_POINT_MIRROR]; + sam.slot = 105; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_POINT_CLAMP]; - sam.slot = SSLOT_POINT_CLAMP; + sam.sampler = samplers[SAMPLER_ANISO_CLAMP]; + sam.slot = 106; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_ANISO_CLAMP]; - sam.slot = SSLOT_ANISO_CLAMP; + sam.sampler = samplers[SAMPLER_ANISO_WRAP]; + sam.slot = 107; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_ANISO_WRAP]; - sam.slot = SSLOT_ANISO_WRAP; + sam.sampler = samplers[SAMPLER_ANISO_MIRROR]; + sam.slot = 108; device->SetCommonSampler(&sam); - sam.sampler = samplers[SSLOT_ANISO_MIRROR]; - sam.slot = SSLOT_ANISO_MIRROR; + sam.sampler = samplers[SAMPLER_CMP_DEPTH]; + sam.slot = 109; device->SetCommonSampler(&sam); } void Initialize() @@ -2713,8 +2690,8 @@ void RenderImpostors( device->PushConstants(&instances.offset, sizeof(uint), cmd); - device->BindResource(&instances.buffer, TEXSLOT_ONDEMAND21, cmd); - device->BindResource(&vis.scene->impostorArray, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&instances.buffer, 21, cmd); + device->BindResource(&vis.scene->impostorArray, 0, cmd); device->Draw(drawableInstanceCount * 6, 0, cmd); @@ -3168,7 +3145,7 @@ void UpdatePerFrameData( frameCB.scene = vis.scene->shaderscene; - frameCB.sampler_objectshader_index = device->GetDescriptorIndex(&samplers[SSLOT_OBJECTSHADER]); + frameCB.sampler_objectshader_index = device->GetDescriptorIndex(&samplers[SAMPLER_OBJECTSHADER]); frameCB.texture_random64x64_index = device->GetDescriptorIndex(wiTextureHelper::getRandom64x64(), SubresourceType::SRV); frameCB.texture_bluenoise_index = device->GetDescriptorIndex(wiTextureHelper::getBlueNoise(), SubresourceType::SRV); frameCB.texture_sheenlut_index = device->GetDescriptorIndex(&textures[TEXTYPE_2D_SHEENLUT], SubresourceType::SRV); @@ -4391,11 +4368,11 @@ void DrawLensFlares( // Directional light can use occlusion texture (eg. clouds): if (texture_directional_occlusion == nullptr) { - device->BindResource(wiTextureHelper::getWhite(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getWhite(), 0, cmd); } else { - device->BindResource(texture_directional_occlusion, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(texture_directional_occlusion, 0, cmd); } } else @@ -4404,7 +4381,7 @@ void DrawLensFlares( POS = XMLoadFloat3(&light.position); // not using occlusion texture - device->BindResource(wiTextureHelper::getWhite(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getWhite(), 0, cmd); } if (XMVectorGetX(XMVector3Dot(XMVectorSubtract(POS, vis.camera->GetEye()), vis.camera->GetAt())) > 0) // check if the camera is facing towards the flare or not @@ -4434,7 +4411,7 @@ void DrawLensFlares( device->PushConstants(&cb, sizeof(cb), cmd); - device->BindResource(&x->texture, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&x->texture, 1, cmd); device->Draw(4, 0, cmd); i++; } @@ -5678,11 +5655,11 @@ void DrawDebugWorld( if (probe.textureIndex < 0) { - device->BindResource(wiTextureHelper::getBlackCubeMap(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getBlackCubeMap(), 0, cmd); } else { - device->BindResource(&scene.envmapArray, TEXSLOT_ONDEMAND0, cmd, scene.envmapArray.GetDesc().mip_levels + probe.textureIndex); + device->BindResource(&scene.envmapArray, 0, cmd, scene.envmapArray.GetDesc().mip_levels + probe.textureIndex); } device->Draw(2880, 0, cmd); // uv-sphere @@ -6021,8 +5998,8 @@ void RenderAtmosphericScatteringTextures(CommandList cmd) device->EventBegin("TransmittanceLut", cmd); device->BindComputeShader(&shaders[CSTYPE_SKYATMOSPHERE_TRANSMITTANCELUT], cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], TEXSLOT_ONDEMAND0, cmd); // empty - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], TEXSLOT_ONDEMAND1, cmd); // empty + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], 0, cmd); // empty + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], 1, cmd); // empty const GPUResource* uavs[] = { &textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], @@ -6061,8 +6038,8 @@ void RenderAtmosphericScatteringTextures(CommandList cmd) device->BindComputeShader(&shaders[CSTYPE_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], cmd); // Use transmittance from previous pass - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], 0, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], 1, cmd); const GPUResource* uavs[] = { &textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], @@ -6097,8 +6074,8 @@ void RenderAtmosphericScatteringTextures(CommandList cmd) device->EventBegin("EnvironmentLuminanceLut", cmd); device->BindComputeShader(&shaders[CSTYPE_SKYATMOSPHERE_SKYLUMINANCELUT], cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], 0, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], 1, cmd); const GPUResource* uavs[] = { &textures[TEXTYPE_2D_SKYATMOSPHERE_SKYLUMINANCELUT], @@ -6143,8 +6120,8 @@ void RefreshAtmosphericScatteringTextures(CommandList cmd) device->EventBegin("SkyViewLut", cmd); device->BindComputeShader(&shaders[CSTYPE_SKYATMOSPHERE_SKYVIEWLUT], cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_TRANSMITTANCELUT], 0, cmd); + device->BindResource(&textures[TEXTYPE_2D_SKYATMOSPHERE_MULTISCATTEREDLUMINANCELUT], 1, cmd); const GPUResource* uavs[] = { &textures[TEXTYPE_2D_SKYATMOSPHERE_SKYVIEWLUT], @@ -6298,7 +6275,7 @@ void RefreshEnvProbes(const Visibility& vis, CommandList cmd) if (vis.scene->weather.skyMap != nullptr) { device->BindPipelineState(&PSO_sky[SKYRENDERING_ENVMAPCAPTURE_STATIC], cmd); - device->BindResource(&vis.scene->weather.skyMap->texture, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&vis.scene->weather.skyMap->texture, 0, cmd); } else { @@ -6341,7 +6318,7 @@ void RefreshEnvProbes(const Visibility& vis, CommandList cmd) } device->BindUAV(&vis.scene->envmapArray, 0, cmd, i); - device->BindResource(&vis.scene->envmapArray, TEXSLOT_ONDEMAND0, cmd, std::max(0, (int)i - 2)); + device->BindResource(&vis.scene->envmapArray, 0, cmd, std::max(0, (int)i - 2)); FilterEnvmapPushConstants push; push.filterResolution.x = desc.width; @@ -6721,7 +6698,7 @@ void ComputeTiledLightCulling( { device->EventBegin("Entity Culling", cmd); - device->BindResource(&res.tileFrustums, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.tileFrustums, 0, cmd); if (GetDebugLightCulling() && debugUAV.IsValid()) { @@ -6771,7 +6748,7 @@ void ResolveMSAADepthBuffer(const Texture& dst, const Texture& src, CommandList { device->EventBegin("ResolveMSAADepthBuffer", cmd); - device->BindResource(&src, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&src, 0, cmd); device->BindUAV(&dst, 0, cmd); const TextureDesc& desc = src.GetDesc(); @@ -6789,7 +6766,7 @@ void DownsampleDepthBuffer(const wiGraphics::Texture& src, wiGraphics::CommandLi device->BindPipelineState(&PSO_downsampledepthbuffer, cmd); - device->BindResource(&src, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&src, 0, cmd); device->Draw(3, 0, cmd); @@ -6832,12 +6809,12 @@ void GenerateMipChain(const Texture& texture, MIPGENFILTER filter, CommandList c case MIPGENFILTER_POINT: device->EventBegin("GenerateMipChain CubeArray - PointFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAINCUBEARRAY_FLOAT4 : CSTYPE_GENERATEMIPCHAINCUBEARRAY_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_POINT_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_POINT_CLAMP]); break; case MIPGENFILTER_LINEAR: device->EventBegin("GenerateMipChain CubeArray - LinearFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAINCUBEARRAY_FLOAT4 : CSTYPE_GENERATEMIPCHAINCUBEARRAY_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_LINEAR_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_LINEAR_CLAMP]); break; default: assert(0); @@ -6899,12 +6876,12 @@ void GenerateMipChain(const Texture& texture, MIPGENFILTER filter, CommandList c case MIPGENFILTER_POINT: device->EventBegin("GenerateMipChain Cube - PointFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAINCUBE_FLOAT4 : CSTYPE_GENERATEMIPCHAINCUBE_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_POINT_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_POINT_CLAMP]); break; case MIPGENFILTER_LINEAR: device->EventBegin("GenerateMipChain Cube - LinearFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAINCUBE_FLOAT4 : CSTYPE_GENERATEMIPCHAINCUBE_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_LINEAR_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_LINEAR_CLAMP]); break; default: assert(0); // not implemented @@ -6948,12 +6925,12 @@ void GenerateMipChain(const Texture& texture, MIPGENFILTER filter, CommandList c case MIPGENFILTER_POINT: device->EventBegin("GenerateMipChain 2D - PointFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAIN2D_FLOAT4 : CSTYPE_GENERATEMIPCHAIN2D_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_POINT_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_POINT_CLAMP]); break; case MIPGENFILTER_LINEAR: device->EventBegin("GenerateMipChain 2D - LinearFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAIN2D_FLOAT4 : CSTYPE_GENERATEMIPCHAIN2D_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_LINEAR_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_LINEAR_CLAMP]); break; case MIPGENFILTER_GAUSSIAN: { @@ -7025,12 +7002,12 @@ void GenerateMipChain(const Texture& texture, MIPGENFILTER filter, CommandList c case MIPGENFILTER_POINT: device->EventBegin("GenerateMipChain 3D - PointFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAIN3D_FLOAT4 : CSTYPE_GENERATEMIPCHAIN3D_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_POINT_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_POINT_CLAMP]); break; case MIPGENFILTER_LINEAR: device->EventBegin("GenerateMipChain 3D - LinearFilter", cmd); device->BindComputeShader(&shaders[hdr ? CSTYPE_GENERATEMIPCHAIN3D_FLOAT4 : CSTYPE_GENERATEMIPCHAIN3D_UNORM4], cmd); - mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SSLOT_LINEAR_CLAMP]); + mipgen.sampler_index = device->GetDescriptorIndex(&samplers[SAMPLER_LINEAR_CLAMP]); break; default: assert(0); // not implemented @@ -7132,7 +7109,7 @@ void CopyTexture2D(const Texture& dst, int DstMIP, int DstX, int DstY, const Tex cb.xCopyBorderExpandStyle = (uint)borderExpand; device->PushConstants(&cb, sizeof(cb), cmd); - device->BindResource(&src, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&src, 0, cmd); device->BindUAV(&dst, 0, cmd, DstMIP); @@ -7458,7 +7435,7 @@ void ComputeLuminance( // Pass 1 : Compute log luminance and reduction { device->BindComputeShader(&shaders[CSTYPE_LUMINANCE_PASS1], cmd); - device->BindResource(&sourceImage, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&sourceImage, 0, cmd); device->Dispatch( (postprocess.resolution.x + LUMINANCE_BLOCKSIZE - 1) / LUMINANCE_BLOCKSIZE, @@ -7668,8 +7645,8 @@ void VisibilityResolve( device->BindComputeShader(&shaders[msaa ? CSTYPE_VISIBILITY_RESOLVE_MSAA : CSTYPE_VISIBILITY_RESOLVE], cmd); - device->BindResource(&texture_primitiveID, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&depthbuffer, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&texture_primitiveID, 0, cmd); + device->BindResource(&depthbuffer, 1, cmd); device->BindUAV(&gbuffer[GBUFFER_VELOCITY], 0, cmd); device->BindUAV(&depthbuffer_resolved, 1, cmd, 0); @@ -7745,10 +7722,10 @@ void SurfelGI_Coverage( device->EventBegin("Coverage", cmd); device->BindComputeShader(&shaders[CSTYPE_SURFEL_COVERAGE], cmd); - device->BindResource(&scene.surfelBuffer, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&scene.surfelGridBuffer, TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&scene.surfelCellBuffer, TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&scene.surfelMomentsTexture[1], TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&scene.surfelBuffer, 0, cmd); + device->BindResource(&scene.surfelGridBuffer, 1, cmd); + device->BindResource(&scene.surfelCellBuffer, 2, cmd); + device->BindResource(&scene.surfelMomentsTexture[1], 3, cmd); const GPUResource* uavs[] = { &scene.surfelDataBuffer, @@ -7862,9 +7839,9 @@ void SurfelGI( device->EventBegin("Update", cmd); device->BindComputeShader(&shaders[CSTYPE_SURFEL_UPDATE], cmd); - device->BindResource(&scene.surfelDataBuffer, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&scene.surfelAliveBuffer[0], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&scene.surfelMomentsTexture[0], TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&scene.surfelDataBuffer, 0, cmd); + device->BindResource(&scene.surfelAliveBuffer[0], 1, cmd); + device->BindResource(&scene.surfelMomentsTexture[0], 2, cmd); const GPUResource* uavs[] = { &scene.surfelBuffer, @@ -7939,9 +7916,9 @@ void SurfelGI( device->EventBegin("Binning", cmd); device->BindComputeShader(&shaders[CSTYPE_SURFEL_BINNING], cmd); - device->BindResource(&scene.surfelBuffer, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&scene.surfelAliveBuffer[0], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&scene.surfelStatsBuffer, TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&scene.surfelBuffer, 0, cmd); + device->BindResource(&scene.surfelAliveBuffer[0], 1, cmd); + device->BindResource(&scene.surfelStatsBuffer, 2, cmd); const GPUResource* uavs[] = { &scene.surfelGridBuffer, @@ -7971,12 +7948,12 @@ void SurfelGI( device->BindComputeShader(&shaders[CSTYPE_SURFEL_RAYTRACE], cmd); - device->BindResource(&scene.surfelBuffer, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&scene.surfelStatsBuffer, TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&scene.surfelGridBuffer, TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&scene.surfelCellBuffer, TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&scene.surfelAliveBuffer[0], TEXSLOT_ONDEMAND4, cmd); - device->BindResource(&scene.surfelMomentsTexture[0], TEXSLOT_ONDEMAND5, cmd); + device->BindResource(&scene.surfelBuffer, 0, cmd); + device->BindResource(&scene.surfelStatsBuffer, 1, cmd); + device->BindResource(&scene.surfelGridBuffer, 2, cmd); + device->BindResource(&scene.surfelCellBuffer, 3, cmd); + device->BindResource(&scene.surfelAliveBuffer[0], 4, cmd); + device->BindResource(&scene.surfelMomentsTexture[0], 5, cmd); const GPUResource* uavs[] = { &scene.surfelDataBuffer, @@ -8069,7 +8046,7 @@ void Postprocess_Blur_Gaussian( postprocess.params0.y = 0; device->PushConstants(&postprocess, sizeof(postprocess), cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd, mip_src); + device->BindResource(&input, 0, cmd, mip_src); device->BindUAV(&temp, 0, cmd, mip_dst); { @@ -8114,7 +8091,7 @@ void Postprocess_Blur_Gaussian( postprocess.params0.y = 1; device->PushConstants(&postprocess, sizeof(postprocess), cmd); - device->BindResource(&temp, TEXSLOT_ONDEMAND0, cmd, mip_dst); // <- also mip_dst because it's second pass! + device->BindResource(&temp, 0, cmd, mip_dst); // <- also mip_dst because it's second pass! device->BindUAV(&output, 0, cmd, mip_dst); { @@ -8206,7 +8183,7 @@ void Postprocess_Blur_Bilateral( postprocess.params0.w = depth_threshold; device->PushConstants(&postprocess, sizeof(postprocess), cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd, mip_src); + device->BindResource(&input, 0, cmd, mip_src); device->BindUAV(&temp, 0, cmd, mip_dst); { @@ -8252,7 +8229,7 @@ void Postprocess_Blur_Bilateral( postprocess.params0.w = depth_threshold; device->PushConstants(&postprocess, sizeof(postprocess), cmd); - device->BindResource(&temp, TEXSLOT_ONDEMAND0, cmd, mip_dst); // <- also mip_dst because it's second pass! + device->BindResource(&temp, 0, cmd, mip_dst); // <- also mip_dst because it's second pass! device->BindUAV(&output, 0, cmd, mip_dst); { @@ -8396,7 +8373,7 @@ void Postprocess_HBAO( // horizontal pass: { - device->BindResource(wiTextureHelper::getWhite(), TEXSLOT_ONDEMAND0, cmd); + device->BindResource(wiTextureHelper::getWhite(), 0, cmd); const GPUResource* uavs[] = { &res.temp, }; @@ -8432,7 +8409,7 @@ void Postprocess_HBAO( postprocess.params0.y = 1; device->PushConstants(&postprocess, sizeof(postprocess), cmd); - device->BindResource(&res.temp, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.temp, 0, cmd); const GPUResource* uavs[] = { &output, }; @@ -8607,7 +8584,7 @@ void Postprocess_MSAO( { device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_MSAO_PREPAREDEPTHBUFFERS2], cmd); - device->BindResource(&res.texture_lineardepth_downsize2, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.texture_lineardepth_downsize2, 0, cmd); const GPUResource* uavs[] = { &res.texture_lineardepth_downsize3, @@ -8772,7 +8749,7 @@ void Postprocess_MSAO( device->PushConstants(&msao, sizeof(msao), cmd); - device->BindResource(&read_depth, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&read_depth, 0, cmd); const GPUResource* uavs[] = { &write_result, @@ -8865,19 +8842,19 @@ void Postprocess_MSAO( device->PushConstants(&msao_upsample, sizeof(msao_upsample), cmd); device->BindUAV(&Destination, 0, cmd); - device->BindResource(&LoResDepth, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&HiResDepth, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&LoResDepth, 0, cmd); + device->BindResource(&HiResDepth, 1, cmd); if (InterleavedAO != nullptr) { - device->BindResource(InterleavedAO, TEXSLOT_ONDEMAND2, cmd); + device->BindResource(InterleavedAO, 2, cmd); } if (HighQualityAO != nullptr) { - device->BindResource(HighQualityAO, TEXSLOT_ONDEMAND3, cmd); + device->BindResource(HighQualityAO, 3, cmd); } if (HiResAO != nullptr) { - device->BindResource(HiResAO, TEXSLOT_ONDEMAND4, cmd); + device->BindResource(HiResAO, 4, cmd); } { @@ -9053,10 +9030,10 @@ void Postprocess_RTAO( device->EventBegin("Denoise - Tile Classification", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_RTAO_DENOISE_TILECLASSIFICATION], cmd); - device->BindResource(&res.normals, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.tiles, TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.moments[temporal_history], TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.scratch[1], TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&res.normals, 0, cmd); + device->BindResource(&res.tiles, 1, cmd); + device->BindResource(&res.moments[temporal_history], 2, cmd); + device->BindResource(&res.scratch[1], 3, cmd); const GPUResource* uavs[] = { &res.scratch[0], @@ -9099,12 +9076,12 @@ void Postprocess_RTAO( device->EventBegin("Denoise - Filter", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_RTAO_DENOISE_FILTER], cmd); - device->BindResource(&res.normals, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.metadata, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&res.normals, 0, cmd); + device->BindResource(&res.metadata, 1, cmd); // pass0: { - device->BindResource(&res.scratch[0], TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.scratch[0], 2, cmd); const GPUResource* uavs[] = { &res.scratch[1], &output @@ -9131,7 +9108,7 @@ void Postprocess_RTAO( // pass1: { - device->BindResource(&res.scratch[1], TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.scratch[1], 2, cmd); const GPUResource* uavs[] = { &res.scratch[0], &output @@ -9160,7 +9137,7 @@ void Postprocess_RTAO( // pass2: { - device->BindResource(&res.scratch[0], TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.scratch[0], 2, cmd); const GPUResource* uavs[] = { &res.scratch[1], &output @@ -9314,9 +9291,9 @@ void Postprocess_RTReflection( device->EventBegin("Temporal pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_TEMPORAL], cmd); - device->BindResource(&output, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.temporal[temporal_history], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.rayLengths, TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&output, 0, cmd); + device->BindResource(&res.temporal[temporal_history], 1, cmd); + device->BindResource(&res.rayLengths, 3, cmd); const GPUResource* uavs[] = { &res.temporal[temporal_output], @@ -9353,7 +9330,7 @@ void Postprocess_RTReflection( device->EventBegin("Median blur pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_MEDIAN], cmd); - device->BindResource(&res.temporal[temporal_output], TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.temporal[temporal_output], 0, cmd); const GPUResource* uavs[] = { &output, @@ -9435,7 +9412,7 @@ void Postprocess_SSR( device->EventBegin("Stochastic Raytrace pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_RAYTRACE], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const GPUResource* uavs[] = { &res.texture_raytrace, @@ -9473,8 +9450,8 @@ void Postprocess_SSR( device->EventBegin("Resolve pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_RESOLVE], cmd); - device->BindResource(&res.texture_raytrace, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&res.texture_raytrace, 0, cmd); + device->BindResource(&input, 1, cmd); const GPUResource* uavs[] = { &output, @@ -9514,9 +9491,9 @@ void Postprocess_SSR( device->EventBegin("Temporal pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_TEMPORAL], cmd); - device->BindResource(&output, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.texture_temporal[temporal_history], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.rayLengths, TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&output, 0, cmd); + device->BindResource(&res.texture_temporal[temporal_history], 1, cmd); + device->BindResource(&res.rayLengths, 3, cmd); const GPUResource* uavs[] = { &res.texture_temporal[temporal_output], @@ -9553,7 +9530,7 @@ void Postprocess_SSR( device->EventBegin("Median blur pass", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SSR_MEDIAN], cmd); - device->BindResource(&res.texture_temporal[temporal_output], TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.texture_temporal[temporal_output], 0, cmd); const GPUResource* uavs[] = { &output, @@ -9714,16 +9691,16 @@ void Postprocess_RTShadow( device->EventBegin("Denoise - Tile Classification", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_TILECLASSIFICATION], cmd); - device->BindResource(&res.normals, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.tiles, TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.moments[0][temporal_history], TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&res.moments[1][temporal_history], TEXSLOT_ONDEMAND4, cmd); - device->BindResource(&res.moments[2][temporal_history], TEXSLOT_ONDEMAND5, cmd); - device->BindResource(&res.moments[3][temporal_history], TEXSLOT_ONDEMAND6, cmd); - device->BindResource(&res.scratch[0][1], TEXSLOT_ONDEMAND7, cmd); - device->BindResource(&res.scratch[1][1], TEXSLOT_ONDEMAND8, cmd); - device->BindResource(&res.scratch[2][1], TEXSLOT_ONDEMAND9, cmd); - device->BindResource(&res.scratch[3][1], TEXSLOT_ONDEMAND10, cmd); + device->BindResource(&res.normals, 0, cmd); + device->BindResource(&res.tiles, 2, cmd); + device->BindResource(&res.moments[0][temporal_history], 3, cmd); + device->BindResource(&res.moments[1][temporal_history], 4, cmd); + device->BindResource(&res.moments[2][temporal_history], 5, cmd); + device->BindResource(&res.moments[3][temporal_history], 6, cmd); + device->BindResource(&res.scratch[0][1], 7, cmd); + device->BindResource(&res.scratch[1][1], 8, cmd); + device->BindResource(&res.scratch[2][1], 9, cmd); + device->BindResource(&res.scratch[3][1], 10, cmd); const GPUResource* uavs[] = { &res.metadata, @@ -9784,15 +9761,15 @@ void Postprocess_RTShadow( device->EventBegin("Denoise - Filter", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_FILTER], cmd); - device->BindResource(&res.normals, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.metadata, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&res.normals, 0, cmd); + device->BindResource(&res.metadata, 1, cmd); // pass0: { - device->BindResource(&res.scratch[0][0], TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.scratch[1][0], TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&res.scratch[2][0], TEXSLOT_ONDEMAND4, cmd); - device->BindResource(&res.scratch[3][0], TEXSLOT_ONDEMAND5, cmd); + device->BindResource(&res.scratch[0][0], 2, cmd); + device->BindResource(&res.scratch[1][0], 3, cmd); + device->BindResource(&res.scratch[2][0], 4, cmd); + device->BindResource(&res.scratch[3][0], 5, cmd); const GPUResource* uavs[] = { &res.scratch[0][1], &res.scratch[1][1], @@ -9826,10 +9803,10 @@ void Postprocess_RTShadow( // pass1: { - device->BindResource(&res.scratch[0][1], TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.scratch[1][1], TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&res.scratch[2][1], TEXSLOT_ONDEMAND4, cmd); - device->BindResource(&res.scratch[3][1], TEXSLOT_ONDEMAND5, cmd); + device->BindResource(&res.scratch[0][1], 2, cmd); + device->BindResource(&res.scratch[1][1], 3, cmd); + device->BindResource(&res.scratch[2][1], 4, cmd); + device->BindResource(&res.scratch[3][1], 5, cmd); const GPUResource* uavs[] = { &res.scratch[0][0], &res.scratch[1][0], @@ -9867,10 +9844,10 @@ void Postprocess_RTShadow( // pass2: { - device->BindResource(&res.scratch[0][0], TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.scratch[1][0], TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&res.scratch[2][0], TEXSLOT_ONDEMAND4, cmd); - device->BindResource(&res.scratch[3][0], TEXSLOT_ONDEMAND5, cmd); + device->BindResource(&res.scratch[0][0], 2, cmd); + device->BindResource(&res.scratch[1][0], 3, cmd); + device->BindResource(&res.scratch[2][0], 4, cmd); + device->BindResource(&res.scratch[3][0], 5, cmd); const GPUResource* uavs[] = { &res.scratch[0][1], &res.scratch[1][1], @@ -9927,9 +9904,9 @@ void Postprocess_RTShadow( device->EventBegin("Temporal Denoise", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_RTSHADOW_DENOISE_TEMPORAL], cmd); - device->BindResource(&res.temp, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.temporal[temporal_history], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.denoised, TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&res.temp, 0, cmd); + device->BindResource(&res.temporal[temporal_history], 1, cmd); + device->BindResource(&res.denoised, 3, cmd); const GPUResource* uavs[] = { &res.temporal[temporal_output], @@ -10039,7 +10016,7 @@ void Postprocess_LightShafts( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_LIGHTSHAFTS], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const TextureDesc& desc = output.GetDesc(); @@ -10205,7 +10182,7 @@ void Postprocess_DepthOfField( &res.texture_tilemax_horizontal, &res.texture_tilemin_horizontal }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.texture_tilemax, @@ -10249,7 +10226,7 @@ void Postprocess_DepthOfField( &res.texture_tilemax, &res.texture_tilemin }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.buffer_tile_statistics, @@ -10290,7 +10267,7 @@ void Postprocess_DepthOfField( device->EventBegin("Kickjobs", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_DEPTHOFFIELD_KICKJOBS], cmd); - device->BindResource(&res.texture_tilemax, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.texture_tilemax, 0, cmd); const GPUResource* uavs[] = { &res.buffer_tile_statistics, @@ -10326,7 +10303,7 @@ void Postprocess_DepthOfField( &input, &res.texture_neighborhoodmax, }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.texture_presort, @@ -10345,15 +10322,15 @@ void Postprocess_DepthOfField( device->Barrier(barriers, arraysize(barriers), cmd); } - device->BindResource(&res.buffer_tiles_earlyexit, TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.buffer_tiles_earlyexit, 2, cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_DEPTHOFFIELD_PREPASS_EARLYEXIT], cmd); device->DispatchIndirect(&res.buffer_tile_statistics, INDIRECT_OFFSET_EARLYEXIT, cmd); - device->BindResource(&res.buffer_tiles_cheap, TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.buffer_tiles_cheap, 2, cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_DEPTHOFFIELD_PREPASS], cmd); device->DispatchIndirect(&res.buffer_tile_statistics, INDIRECT_OFFSET_CHEAP, cmd); - device->BindResource(&res.buffer_tiles_expensive, TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.buffer_tiles_expensive, 2, cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_DEPTHOFFIELD_PREPASS], cmd); device->DispatchIndirect(&res.buffer_tile_statistics, INDIRECT_OFFSET_EXPENSIVE, cmd); @@ -10381,7 +10358,7 @@ void Postprocess_DepthOfField( &res.buffer_tiles_cheap, &res.buffer_tiles_expensive }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.texture_main, @@ -10427,7 +10404,7 @@ void Postprocess_DepthOfField( &res.texture_main, &res.texture_alpha1 }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.texture_postfilter, @@ -10480,7 +10457,7 @@ void Postprocess_DepthOfField( &res.texture_alpha2, &res.texture_neighborhoodmax }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &output, @@ -10528,7 +10505,7 @@ void Postprocess_Outline( device->BindPipelineState(&PSO_outline, cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); PostProcess postprocess; postprocess.resolution.x = (uint)input.GetDesc().width; @@ -10643,7 +10620,7 @@ void Postprocess_MotionBlur( device->EventBegin("TileMax - Vertical", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_MOTIONBLUR_TILEMAXVELOCITY_VERTICAL], cmd); - device->BindResource(&res.texture_tilemax_horizontal, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.texture_tilemax_horizontal, 0, cmd); const GPUResource* uavs[] = { &res.texture_tilemax, @@ -10687,7 +10664,7 @@ void Postprocess_MotionBlur( &res.texture_tilemax, &res.texture_tilemin }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &res.buffer_tile_statistics, @@ -10728,7 +10705,7 @@ void Postprocess_MotionBlur( device->EventBegin("Kickjobs", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_MOTIONBLUR_KICKJOBS], cmd); - device->BindResource(&res.texture_tilemax, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&res.texture_tilemax, 0, cmd); const GPUResource* uavs[] = { &res.buffer_tile_statistics, @@ -10760,7 +10737,7 @@ void Postprocess_MotionBlur( &res.buffer_tiles_cheap, &res.buffer_tiles_expensive, }; - device->BindResources(resarray, TEXSLOT_ONDEMAND0, arraysize(resarray), cmd); + device->BindResources(resarray, 0, arraysize(resarray), cmd); const GPUResource* uavs[] = { &output, @@ -10870,10 +10847,10 @@ void Postprocess_VolumetricClouds( device->EventBegin("Volumetric Cloud Rendering", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_RENDER], cmd); - device->BindResource(&texture_shapeNoise, TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&texture_detailNoise, TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&texture_curlNoise, TEXSLOT_ONDEMAND3, cmd); - device->BindResource(&texture_weatherMap, TEXSLOT_ONDEMAND4, cmd); + device->BindResource(&texture_shapeNoise, 1, cmd); + device->BindResource(&texture_detailNoise, 2, cmd); + device->BindResource(&texture_curlNoise, 3, cmd); + device->BindResource(&texture_weatherMap, 4, cmd); const GPUResource* uavs[] = { &res.texture_cloudRender, @@ -10923,10 +10900,10 @@ void Postprocess_VolumetricClouds( device->EventBegin("Volumetric Cloud Reproject", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_REPROJECT], cmd); - device->BindResource(&res.texture_cloudRender, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.texture_cloudDepth, TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.texture_reproject[temporal_history], TEXSLOT_ONDEMAND2, cmd); - device->BindResource(&res.texture_reproject_depth[temporal_history], TEXSLOT_ONDEMAND3, cmd); + device->BindResource(&res.texture_cloudRender, 0, cmd); + device->BindResource(&res.texture_cloudDepth, 1, cmd); + device->BindResource(&res.texture_reproject[temporal_history], 2, cmd); + device->BindResource(&res.texture_reproject_depth[temporal_history], 3, cmd); const GPUResource* uavs[] = { &res.texture_reproject[temporal_output], @@ -10966,9 +10943,9 @@ void Postprocess_VolumetricClouds( device->EventBegin("Volumetric Cloud Temporal", cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_VOLUMETRICCLOUDS_TEMPORAL], cmd); - device->BindResource(&res.texture_reproject[temporal_output], TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&res.texture_reproject_depth[temporal_output], TEXSLOT_ONDEMAND1, cmd); - device->BindResource(&res.texture_temporal[temporal_history], TEXSLOT_ONDEMAND2, cmd); + device->BindResource(&res.texture_reproject[temporal_output], 0, cmd); + device->BindResource(&res.texture_reproject_depth[temporal_output], 1, cmd); + device->BindResource(&res.texture_temporal[temporal_history], 2, cmd); const GPUResource* uavs[] = { &res.texture_temporal[temporal_output], @@ -11017,7 +10994,7 @@ void Postprocess_FXAA( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_FXAA], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const TextureDesc& desc = output.GetDesc(); @@ -11071,8 +11048,8 @@ void Postprocess_TemporalAA( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_TEMPORALAA], cmd); - device->BindResource(&input_current, TEXSLOT_ONDEMAND0, cmd); - device->BindResource(&input_history, TEXSLOT_ONDEMAND1, cmd); + device->BindResource(&input_current, 0, cmd); + device->BindResource(&input_history, 1, cmd); const TextureDesc& desc = output.GetDesc(); @@ -11125,7 +11102,7 @@ void Postprocess_Sharpen( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_SHARPEN], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const TextureDesc& desc = output.GetDesc(); @@ -11277,7 +11254,7 @@ void Postprocess_FSR( ); device->PushConstants(&fsr, sizeof(fsr), cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const GPUResource* uavs[] = { &temp, @@ -11310,7 +11287,7 @@ void Postprocess_FSR( FsrRcasCon(fsr.const0, sharpness); device->PushConstants(&fsr, sizeof(fsr), cmd); - device->BindResource(&temp, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&temp, 0, cmd); const GPUResource* uavs[] = { &output, @@ -11350,7 +11327,7 @@ void Postprocess_Chromatic_Aberration( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_CHROMATIC_ABERRATION], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const TextureDesc& desc = output.GetDesc(); @@ -11425,7 +11402,7 @@ void Postprocess_Upsample_Bilateral( { device->BindPipelineState(&PSO_upsample_bilateral, cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); device->Draw(3, 0, cmd); } @@ -11462,7 +11439,7 @@ void Postprocess_Upsample_Bilateral( } device->BindComputeShader(&shaders[cs], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const GPUResource* uavs[] = { &output, @@ -11514,7 +11491,7 @@ void Postprocess_Downsample4x( device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_DOWNSAMPLE4X], cmd); - device->BindResource(&input, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&input, 0, cmd); const GPUResource* uavs[] = { &output, @@ -11564,7 +11541,7 @@ void Postprocess_NormalsFromDepth( device->PushConstants(&postprocess, sizeof(postprocess), cmd); device->BindComputeShader(&shaders[CSTYPE_POSTPROCESS_NORMALSFROMDEPTH], cmd); - device->BindResource(&depthbuffer, TEXSLOT_ONDEMAND0, cmd); + device->BindResource(&depthbuffer, 0, cmd); const GPUResource* uavs[] = { &output, diff --git a/WickedEngine/wiRenderer.h b/WickedEngine/wiRenderer.h index b404e8c35..7a3669cd9 100644 --- a/WickedEngine/wiRenderer.h +++ b/WickedEngine/wiRenderer.h @@ -41,7 +41,7 @@ namespace wiRenderer void ModifyObjectSampler(const wiGraphics::SamplerDesc& desc); // Initializes the samplers, including the global static samplers for the device - void InitializeGlobalSamplers(); + void InitializeCommonSamplers(); // Initializes the renderer void Initialize(); diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 688fcfe1e..4882a6823 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates, breaking compatibility changes const int minor = 59; // minor bug fixes, alterations, refactors, updates - const int revision = 5; + const int revision = 6; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision); diff --git a/WickedEngine/wiWidget.cpp b/WickedEngine/wiWidget.cpp index a6d3fddfd..a456756b0 100644 --- a/WickedEngine/wiWidget.cpp +++ b/WickedEngine/wiWidget.cpp @@ -345,7 +345,7 @@ namespace wiWidget_Internal desc.vs = wiRenderer::GetShader(VSTYPE_VERTEXCOLOR); desc.ps = wiRenderer::GetShader(PSTYPE_VERTEXCOLOR); desc.il = wiRenderer::GetInputLayout(ILTYPE_VERTEXCOLOR); - desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_XRAY); + desc.dss = wiRenderer::GetDepthStencilState(DSSTYPE_DEPTHDISABLED); desc.bs = wiRenderer::GetBlendState(BSTYPE_TRANSPARENT); desc.rs = wiRenderer::GetRasterizerState(RSTYPE_DOUBLESIDED); desc.pt = PrimitiveTopology::TRIANGLESTRIP;