From 567ef97ffb5eca87987bbf777f40642838680b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sun, 27 Dec 2020 13:55:38 +0100 Subject: [PATCH] Moved pixel-/vertex shader to own files --- GlitchyEngine/src/Application.bf | 2 - .../Platform/DX11/Renderer/Dx11PixelShader.bf | 55 ------------------- .../src/Platform/DX11/Renderer/Dx11Shader.bf | 37 +++++++++++++ .../DX11/Renderer/Dx11VertexShader.bf | 38 +++++++++++++ GlitchyEngine/src/Renderer/PixelShader.bf | 12 ++++ GlitchyEngine/src/Renderer/Shader.bf | 16 ------ GlitchyEngine/src/Renderer/VertexShader.bf | 12 ++++ 7 files changed, 99 insertions(+), 73 deletions(-) create mode 100644 GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf create mode 100644 GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf create mode 100644 GlitchyEngine/src/Renderer/PixelShader.bf create mode 100644 GlitchyEngine/src/Renderer/VertexShader.bf diff --git a/GlitchyEngine/src/Application.bf b/GlitchyEngine/src/Application.bf index 67dae97..6d447c8 100644 --- a/GlitchyEngine/src/Application.bf +++ b/GlitchyEngine/src/Application.bf @@ -79,8 +79,6 @@ namespace GlitchyEngine VertexShader _vertexShader ~ delete _; PixelShader _pixelShader ~ delete _; - //ID3D11VertexShader* _vertexShader ~ _?.Release(); - private Vector3 CircleCoord(float angle) { return .(Math.Cos(angle), Math.Sin(angle), 0); diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf index 361d6d0..6839f1b 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11PixelShader.bf @@ -8,33 +8,6 @@ using internal GlitchyEngine.Renderer; namespace GlitchyEngine.Renderer { - extension Shader - { - internal static void PlattformCompileShaderFromSource(String code, ShaderDefine[] macros, String entryPoint, String target, ShaderCompileFlags compileFlags, out ID3DBlob* shaderBlob) - { - ShaderMacro* nativeMacros = macros == null ? null : new:ScopedAlloc! ShaderMacro[macros.Count]*; - - for(int i < macros?.Count ?? 0) - { - nativeMacros[i].Name = macros[i].Name.ToScopedNativeWChar!(); - nativeMacros[i].Definition = macros[i].Definition.ToScopedNativeWChar!(); - } - - // Todo: sourceName, includes, - // Todo: variable shader target? - - ID3DBlob* errorBlob = null; - - shaderBlob = null; - var result = D3DCompiler.D3DCompile(code.CStr(), (.)code.Length, null, nativeMacros, null, entryPoint, target, compileFlags, .None, &shaderBlob, &errorBlob); - if(result.Failed) - { - StringView str = StringView((char8*)errorBlob.GetBufferPointer(), errorBlob.GetBufferSize()); - Log.EngineLogger.Error($"Failed to compile Shader: Error Code({(int)result}): {result} | Error Message: {str}"); - } - } - } - extension PixelShader { internal ID3D11PixelShader* nativeShader ~ _?.Release(); @@ -82,32 +55,4 @@ namespace GlitchyEngine.Renderer reflection.Release(); } } - - extension VertexShader - { - internal ID3D11VertexShader* nativeShader ~ _?.Release(); - - internal ID3DBlob* nativeCode ~ _?.Release(); - - public override void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null) - { - ShaderCompileFlags flags = .Default; - -#if DEBUG - flags |= .Debug; -#else - flags |= .OptimizationLevel3; -#endif - - Shader.PlattformCompileShaderFromSource(code, macros, entryPoint, "vs_5_0", flags, out nativeCode); - - var result = _context.nativeDevice.CreateVertexShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); - if(result.Failed) - { - Log.EngineLogger.Error($"Failed to create vertex shader: Message ({(int)result}): {result}"); - } - - //int i = nativeCode?.Release() ?? (uint32)-1; - } - } } diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf new file mode 100644 index 0000000..9e8d38f --- /dev/null +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf @@ -0,0 +1,37 @@ +using System; +using GlitchyEngine.Renderer; +using DirectX.Common; +using DirectX.D3D11; +using DirectX.D3DCompiler; + +using internal GlitchyEngine.Renderer; + +namespace GlitchyEngine.Renderer +{ + extension Shader + { + internal static void PlattformCompileShaderFromSource(String code, ShaderDefine[] macros, String entryPoint, String target, ShaderCompileFlags compileFlags, out ID3DBlob* shaderBlob) + { + ShaderMacro* nativeMacros = macros == null ? null : new:ScopedAlloc! ShaderMacro[macros.Count]*; + + for(int i < macros?.Count ?? 0) + { + nativeMacros[i].Name = macros[i].Name.ToScopedNativeWChar!(); + nativeMacros[i].Definition = macros[i].Definition.ToScopedNativeWChar!(); + } + + // Todo: sourceName, includes, + // Todo: variable shader target? + + ID3DBlob* errorBlob = null; + + shaderBlob = null; + var result = D3DCompiler.D3DCompile(code.CStr(), (.)code.Length, null, nativeMacros, null, entryPoint, target, compileFlags, .None, &shaderBlob, &errorBlob); + if(result.Failed) + { + StringView str = StringView((char8*)errorBlob.GetBufferPointer(), errorBlob.GetBufferSize()); + Log.EngineLogger.Error($"Failed to compile Shader: Error Code({(int)result}): {result} | Error Message: {str}"); + } + } + } +} diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf new file mode 100644 index 0000000..403399b --- /dev/null +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11VertexShader.bf @@ -0,0 +1,38 @@ +using System; +using GlitchyEngine.Renderer; +using DirectX.Common; +using DirectX.D3D11; +using DirectX.D3DCompiler; + +using internal GlitchyEngine.Renderer; + +namespace GlitchyEngine.Renderer +{ + extension VertexShader + { + internal ID3D11VertexShader* nativeShader ~ _?.Release(); + + internal ID3DBlob* nativeCode ~ _?.Release(); + + public override void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null) + { + ShaderCompileFlags flags = .Default; + +#if DEBUG + flags |= .Debug; +#else + flags |= .OptimizationLevel3; +#endif + + Shader.PlattformCompileShaderFromSource(code, macros, entryPoint, "vs_5_0", flags, out nativeCode); + + var result = _context.nativeDevice.CreateVertexShader(nativeCode.GetBufferPointer(), nativeCode.GetBufferSize(), null, &nativeShader); + if(result.Failed) + { + Log.EngineLogger.Error($"Failed to create vertex shader: Message ({(int)result}): {result}"); + } + + //int i = nativeCode?.Release() ?? (uint32)-1; + } + } +} diff --git a/GlitchyEngine/src/Renderer/PixelShader.bf b/GlitchyEngine/src/Renderer/PixelShader.bf new file mode 100644 index 0000000..f48feae --- /dev/null +++ b/GlitchyEngine/src/Renderer/PixelShader.bf @@ -0,0 +1,12 @@ +using System; + +namespace GlitchyEngine.Renderer +{ + public class PixelShader : Shader + { + public this(GraphicsContext context, String source, String entryPoint, ShaderDefine[] macros = null) + : base(context, source, entryPoint, macros) { } + + public override extern void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null); + } +} diff --git a/GlitchyEngine/src/Renderer/Shader.bf b/GlitchyEngine/src/Renderer/Shader.bf index 87862bd..744a69a 100644 --- a/GlitchyEngine/src/Renderer/Shader.bf +++ b/GlitchyEngine/src/Renderer/Shader.bf @@ -43,20 +43,4 @@ namespace GlitchyEngine.Renderer public abstract void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null); } - - public class PixelShader : Shader - { - public this(GraphicsContext context, String source, String entryPoint, ShaderDefine[] macros = null) - : base(context, source, entryPoint, macros) { } - - public override extern void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null); - } - - public class VertexShader : Shader - { - public this(GraphicsContext context, String source, String entryPoint, ShaderDefine[] macros = null) - : base(context, source, entryPoint, macros) { } - - public override extern void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null); - } } diff --git a/GlitchyEngine/src/Renderer/VertexShader.bf b/GlitchyEngine/src/Renderer/VertexShader.bf new file mode 100644 index 0000000..deb3ec2 --- /dev/null +++ b/GlitchyEngine/src/Renderer/VertexShader.bf @@ -0,0 +1,12 @@ +using System; + +namespace GlitchyEngine.Renderer +{ + public class VertexShader : Shader + { + public this(GraphicsContext context, String source, String entryPoint, ShaderDefine[] macros = null) + : base(context, source, entryPoint, macros) { } + + public override extern void CompileFromSource(String code, String entryPoint, ShaderDefine[] macros = null); + } +}