From f95f6273f8fcaf59d50b65ea12c2d0a4022ca4db Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Thu, 7 Mar 2019 21:21:00 -0800 Subject: Updated release history --- ReleaseHistory.md | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/ReleaseHistory.md b/ReleaseHistory.md index 18495cd2..e1b8c318 100644 --- a/ReleaseHistory.md +++ b/ReleaseHistory.md @@ -1,11 +1,120 @@ -## Current progress +## v2.4.b * Added cmake options to disable specific back-ends and glslang +* Improved engine support of GLES3.0 devices + +### API changes + * Updated `IRenderDevice::CreateTexture()` and `IRenderDevice::CreateBuffer()` to take pointer to initialization data rather than references. * Added `LayoutElement::AutoOffset` and `LayoutElement::AutoOffset` values to use instead of 0 when automatically computing input layout elements offset and strides. +* Renamed factory interfaces and headers: + * `IRenderDeviceFactoryD3D11` -> `IEngineFactoryD3D11`, RenderDeviceFactoryD3D11.h -> EngineFactoryD3D11.h + * `IRenderDeviceFactoryD3D12` -> `IEngineFactoryD3D12`, RenderDeviceFactoryD3D12.h -> EngineFactoryD3D12.h + * `IRenderDeviceFactoryOpenGL` -> `IEngineFactoryOpenGL`, RenderDeviceFactoryOpenGL.h -> EngineFactoryOpenGL.h + * `IRenderDeviceFactoryVk` -> `IEngineFactoryVk`, RenderDeviceFactoryVk.h -> EngineFactoryVk.h + * `IRenderDeviceFactoryMtl` -> `IEngineFactoryMtl`, RenderDeviceFactoryMtl.h -> EngineFactoryMtl.h +* Renamed `IShaderVariable` -> `IShaderResourceVariable` +* Renamed `SHADER_VARIABLE_TYPE` -> `SHADER_RESOURCE_VARIABLE_TYPE` +* Renamed `ShaderVariableDesc` -> `ShaderResourceVariableDesc` +* Added `SHADER_RESOURCE_TYPE` enum +* Moved shader variable type and static sampler definition from shader creation to PSO creation stage: + * Removed `IShader::GetVariable`, `IShader::GetVariableCount`, and `IShader::BindResources` methods + * Added `IPipelineState::BindStaticResoruces`, `IPipelineState::BindStaticResoruces`, `IPipelineState::GetStaticVariableCount`, + and `IPipelineState::GetStaticShaderVariable` methods + * Added `PipelineResourceLayoutDesc` structure and `ResourceLayout` member to `PipelineStateDesc` +* Added `ShaderResourceDesc` structure +* Added `IShader::GetResourceCount` and `IShader::GetResource` methods +* Replaced `IShaderVariable::GetArraySize` and `IShaderVariable::GetName` methods with `IShaderResourceVariable::GetResourceDesc` method +* Added `HLSLShaderResourceDesc` structure as well as `IShaderResourceVariableD3D` and `IShaderResourceVariableD3D` interfaces + to query HLSL-specific shader resource description (shader register) + +With the new API, shader initialization and pipeline state creation changed as shown below. + +Old API: + +```cpp +RefCntAutoPtr pVS; +{ + CreationAttribs.Desc.ShaderType = SHADER_TYPE_VERTEX; + CreationAttribs.EntryPoint = "main"; + CreationAttribs.Desc.Name = "Cube VS"; + CreationAttribs.FilePath = "cube.vsh"; + pDevice->CreateShader(CreationAttribs, &pVS); + pVS->GetShaderVariable("Constants")->Set(m_VSConstants); +} +RefCntAutoPtr pPS; +{ + CreationAttribs.Desc.ShaderType = SHADER_TYPE_PIXEL; + CreationAttribs.EntryPoint = "main"; + CreationAttribs.Desc.Name = "Cube PS"; + CreationAttribs.FilePath = "cube.psh"; + ShaderVariableDesc Vars[] = + { + {"g_Texture", SHADER_VARIABLE_TYPE_MUTABLE} + }; + CreationAttribs.Desc.VariableDesc = Vars; + CreationAttribs.Desc.NumVariables = _countof(Vars); + + SamplerDesc SamLinearClampDesc( FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR, + TEXTURE_ADDRESS_CLAMP, TEXTURE_ADDRESS_CLAMP, TEXTURE_ADDRESS_CLAMP); + StaticSamplerDesc StaticSamplers[] = + { + {"g_Texture", SamLinearClampDesc} + }; + CreationAttribs.Desc.StaticSamplers = StaticSamplers; + CreationAttribs.Desc.NumStaticSamplers = _countof(StaticSamplers); + + pDevice->CreateShader(CreationAttribs, &pPS); +} +// ... +pDevice->CreatePipelineState(PSODesc, &m_pPSO); +``` + +New API: + +```cpp +RefCntAutoPtr pVS; +{ + ShaderCI.Desc.ShaderType = SHADER_TYPE_VERTEX; + ShaderCI.EntryPoint = "main"; + ShaderCI.Desc.Name = "Cube VS"; + ShaderCI.FilePath = "cube.vsh"; + pDevice->CreateShader(ShaderCI, &pVS); +} +RefCntAutoPtr pVS; +{ + ShaderCI.Desc.ShaderType = SHADER_TYPE_VERTEX; + ShaderCI.EntryPoint = "main"; + ShaderCI.Desc.Name = "Cube VS"; + ShaderCI.FilePath = "cube.vsh"; + pDevice->CreateShader(ShaderCI, &pVS); +} +// ... +ShaderResourceVariableDesc Vars[] = +{ + {SHADER_TYPE_PIXEL, "g_Texture", SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE} +}; +PSODesc.ResourceLayout.Variables = Vars; +PSODesc.ResourceLayout.NumVariables = _countof(Vars); + +// Define static sampler for g_Texture. Static samplers should be used whenever possible +SamplerDesc SamLinearClampDesc( FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR, + TEXTURE_ADDRESS_CLAMP, TEXTURE_ADDRESS_CLAMP, TEXTURE_ADDRESS_CLAMP); +StaticSamplerDesc StaticSamplers[] = +{ + {SHADER_TYPE_PIXEL, "g_Texture", SamLinearClampDesc} +}; +PSODesc.ResourceLayout.StaticSamplers = StaticSamplers; +PSODesc.ResourceLayout.NumStaticSamplers = _countof(StaticSamplers); + +pDevice->CreatePipelineState(PSODesc, &m_pPSO); +m_pPSO->GetStaticShaderVariable(SHADER_TYPE_VERTEX, "Constants")->Set(m_VSConstants); +``` + + ## v2.4.a -- cgit v1.2.3