From 1abee730ec8bc92a4c0d13ffbc9553229044f312 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Mon, 19 Oct 2015 14:08:12 +0200 Subject: [PATCH] Moved shaders to separate OpenGL and DirectX folders --- src/game/Rendering/DirectX/Renderer.cpp | 4 +- src/game/Rendering/DirectX/Shaders/pixel.hlsl | 48 ++++++++++++++ .../Rendering/DirectX/Shaders/vertex.hlsl | 66 +++++++++++++++++++ src/game/Rendering/OpenGL/Renderer.cpp | 14 ++-- .../OpenGL}/Shaders/Deferred/1/Fragment.glsl | 0 .../OpenGL}/Shaders/Deferred/1/Vertex.glsl | 0 .../OpenGL}/Shaders/Deferred/2/Fragment.glsl | 0 .../OpenGL}/Shaders/Deferred/2/Vertex.glsl | 0 .../OpenGL}/Shaders/Deferred/3/Fragment.glsl | 0 .../OpenGL}/Shaders/Deferred/3/Vertex.glsl | 0 .../Shaders/Deferred/water/Fragment.glsl | 0 .../Shaders/Deferred/water/Vertex.glsl | 0 .../Shaders/Deferred/water2/Fragment.glsl | 0 .../Shaders/Deferred/water2/Vertex.glsl | 0 .../OpenGL}/Shaders/Forward/Fragment.glsl | 0 .../OpenGL}/Shaders/Forward/Vertex.glsl | 0 .../OpenGL}/Shaders/PureForward/Fragment.glsl | 0 .../OpenGL}/Shaders/PureForward/Vertex.glsl | 0 .../OpenGL}/Shaders/Screen/Fragment.glsl | 0 .../OpenGL}/Shaders/Screen/Vertex.glsl | 0 tools/deploy.bat | 8 ++- 21 files changed, 130 insertions(+), 10 deletions(-) create mode 100644 src/game/Rendering/DirectX/Shaders/pixel.hlsl create mode 100644 src/game/Rendering/DirectX/Shaders/vertex.hlsl rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/1/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/1/Vertex.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/2/Fragment.glsl (100%) rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/2/Vertex.glsl (100%) rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/3/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/3/Vertex.glsl (100%) rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/water/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/water/Vertex.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/water2/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Deferred/water2/Vertex.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Forward/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Forward/Vertex.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/PureForward/Fragment.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/PureForward/Vertex.glsl (100%) mode change 100755 => 100644 rename src/game/{Core => Rendering/OpenGL}/Shaders/Screen/Fragment.glsl (100%) rename src/game/{Core => Rendering/OpenGL}/Shaders/Screen/Vertex.glsl (100%) diff --git a/src/game/Rendering/DirectX/Renderer.cpp b/src/game/Rendering/DirectX/Renderer.cpp index f587047..f0ca907 100644 --- a/src/game/Rendering/DirectX/Renderer.cpp +++ b/src/game/Rendering/DirectX/Renderer.cpp @@ -110,8 +110,8 @@ void dd::Renderer::Initialize() m_DeviceContext->RSSetViewports(1, &viewport); shaderProgram = new ShaderProgram(); - shaderProgram->CompileVertexShader(L"vertex.hlsl"); - shaderProgram->CompilePixelShader(L"pixel.hlsl"); + shaderProgram->CompileVertexShader(L"Shaders/DirectX/vertex.hlsl"); + shaderProgram->CompilePixelShader(L"Shaders/DirectX/pixel.hlsl"); D3D11_INPUT_ELEMENT_DESC VertexIED[] = { {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0}, {"NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0}, diff --git a/src/game/Rendering/DirectX/Shaders/pixel.hlsl b/src/game/Rendering/DirectX/Shaders/pixel.hlsl new file mode 100644 index 0000000..c5e40b4 --- /dev/null +++ b/src/game/Rendering/DirectX/Shaders/pixel.hlsl @@ -0,0 +1,48 @@ +cbuffer ConstantBuffer +{ + float4x4 MVP; + float4x4 ModelMatrix; + float4x4 ViewMatrix; + float4x4 ProjectionMatrix; + float4x4 InverseTransposeViewModel; + float3 LightPosition; +} + +Texture2D Texture; +SamplerState samplerState; + +struct VOut +{ + float4 PixelPosition : SV_POSITION; + float4 Position : POSITION; + float4 Normal : NORMAL; + float4 Tangent : TANGENT0; + float4 BiTangent : TANGENT1; + float2 TextureCoord : TEXCOORD; + float4 DiffuseColor : COLOR0; + float4 SpecularColor : COLOR1; + float4 BoneIndices1 : BLENDINDICES0; + float4 BoneIndices2 : BLENDINDICES1; + float4 BoneWeights1 : BLENDWEIGHT0; + float4 BoneWeights2 : BLENDWEIGHT1; +}; + +float4 main(VOut input) : SV_TARGET +{ + float4 ambientLight = float4(1.0f, 1.0f, 1.0f, 1.0f) * 0.1f; + ////float4 lightPos = float4(0.0f, -1.0f, 2.0f, 0.0f); + float4 lightColor = float4(1.0f, 1.0f, 1.0f, 1.0f); + + + float3 lightToPixel = normalize(LightPosition - mul(input.Position, transpose(ModelMatrix))); + + //float3 lightModelPos = mul(ModelMatrix, LightPosition); + float diffuseBrightness = saturate(dot(lightToPixel, normalize(mul(input.Normal, transpose(ModelMatrix))))); + + //input.texcoord.y = 1 - input.texcoord.y; + //return float4(input.normal.xy, 0.0f, 0.0f); + return Texture.Sample(samplerState, input.TextureCoord); + //return float4(input.color.xy, 0.0f, 0.0f); + //return (ambientLight + lightColor * diffuseBrightness) * Texture.Sample(samplerState, input.texcoord); + //return float4(0.0f, 0.0f, 1.0f, 1.0f); +} \ No newline at end of file diff --git a/src/game/Rendering/DirectX/Shaders/vertex.hlsl b/src/game/Rendering/DirectX/Shaders/vertex.hlsl new file mode 100644 index 0000000..e9358a2 --- /dev/null +++ b/src/game/Rendering/DirectX/Shaders/vertex.hlsl @@ -0,0 +1,66 @@ +cbuffer ConstantBuffer +{ + float4x4 MVP; + float4x4 ModelMatrix; + float4x4 ViewMatrix; + float4x4 ProjectionMatrix; + float4x4 InverseTransposeViewModel; + float3 LightPosition; +} + +struct VIn +{ + float4 Position : POSITION; + float4 Normal : NORMAL; + float4 Tangent : TANGENT0; + float4 BiTangent : TANGENT1; + float2 TextureCoord : TEXCOORD; + float4 DiffuseColor : COLOR0; + float4 SpecularColor : COLOR1; + float4 BoneIndices1 : BLENDINDICES0; + float4 BoneIndices2 : BLENDINDICES1; + float4 BoneWeights1 : BLENDWEIGHT0; + float4 BoneWeights2 : BLENDWEIGHT1; +}; + +struct VOut +{ + float4 PixelPosition : SV_POSITION; + float4 Position : POSITION; + float4 Normal : NORMAL; + float4 Tangent : TANGENT0; + float4 BiTangent : TANGENT1; + float2 TextureCoord : TEXCOORD; + float4 DiffuseColor : COLOR0; + float4 SpecularColor : COLOR1; + float4 BoneIndices1 : BLENDINDICES0; + float4 BoneIndices2 : BLENDINDICES1; + float4 BoneWeights1 : BLENDWEIGHT0; + float4 BoneWeights2 : BLENDWEIGHT1; +}; + +VOut main(VIn input) +{ + /*float4 ambientLight = float4(1.0f, 1.0f, 1.0f, 1.0f) * 0.1f; + float4 lightPos = float4(0.0f, 0.0f, 8.0f, 0.0f); + float4 lightColor = float4(1.0f, 1.0f, 1.0f, 1.0f); + float diffuseBrightness = saturate(dot(normal, lightPos));*/ + + VOut output; + + output.PixelPosition = mul(MVP, input.Position); + //TODO: Make sure that boneTransform works here. + //output.Position = (V * M * boneTransform * vec4(Position, 1.0)).xyz; + //output.Normal = (inverse(transpose(V * M)) * boneTransform * vec4(Normal, 0.0)).xyz; + output.Tangent = input.Tangent; + output.BiTangent = input.BiTangent; + output.TextureCoord = input.TextureCoord; + output.DiffuseColor = input.DiffuseColor; + output.SpecularColor = input.SpecularColor; + output.BoneIndices1 = input.BoneIndices1; + output.BoneIndices2 = input.BoneIndices2; + output.BoneWeights1 = input.BoneWeights1; + output.BoneWeights2 = input.BoneWeights2; + + return output; +} \ No newline at end of file diff --git a/src/game/Rendering/OpenGL/Renderer.cpp b/src/game/Rendering/OpenGL/Renderer.cpp index 06bf90c..ace3d2a 100644 --- a/src/game/Rendering/OpenGL/Renderer.cpp +++ b/src/game/Rendering/OpenGL/Renderer.cpp @@ -80,7 +80,7 @@ void dd::Renderer::LoadShaders() */ // Pass #1: Fill G-buffers - m_SpDeferred1 = ResourceManager::Load("Shaders/Deferred/1/"); + m_SpDeferred1 = ResourceManager::Load("Shaders/OpenGL/Deferred/1/"); m_SpDeferred1->BindFragDataLocation(0, "GDiffuse"); m_SpDeferred1->BindFragDataLocation(1, "GPosition"); m_SpDeferred1->BindFragDataLocation(2, "GNormal"); @@ -88,30 +88,30 @@ void dd::Renderer::LoadShaders() m_SpDeferred1->Link(); // Pass #2: Lighting - m_SpDeferred2 = ResourceManager::Load("Shaders/Deferred/2/"); + m_SpDeferred2 = ResourceManager::Load("Shaders/OpenGL/Deferred/2/"); //glBindFragDataLocation(m_SPDeferred2, 0, "FragmentLighting"); m_SpDeferred2->Link(); //Water Pass - m_SpWater = ResourceManager::Load("Shaders/Deferred/water/"); + m_SpWater = ResourceManager::Load("Shaders/OpenGL/Deferred/water/"); m_SpWater->Link(); - m_SpWater2 = ResourceManager::Load("Shaders/Deferred/water2/"); + m_SpWater2 = ResourceManager::Load("Shaders/OpenGL/Deferred/water2/"); m_SpWater2->Link(); // Pass #3: Combining into final image - m_SpDeferred3 = ResourceManager::Load("Shaders/Deferred/3/"); + m_SpDeferred3 = ResourceManager::Load("Shaders/OpenGL/Deferred/3/"); m_SpDeferred3->Link(); /* Forward rendering */ - m_SpForward = ResourceManager::Load("Shaders/Forward/"); + m_SpForward = ResourceManager::Load("Shaders/OpenGL/Forward/"); m_SpForward->Link(); /* Screen draw */ - m_SpScreen = ResourceManager::Load("Shaders/Screen/"); + m_SpScreen = ResourceManager::Load("Shaders/OpenGL/Screen/"); m_SpScreen->Link(); } diff --git a/src/game/Core/Shaders/Deferred/1/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/1/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/1/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/1/Fragment.glsl diff --git a/src/game/Core/Shaders/Deferred/1/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/1/Vertex.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/1/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/1/Vertex.glsl diff --git a/src/game/Core/Shaders/Deferred/2/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/2/Fragment.glsl similarity index 100% rename from src/game/Core/Shaders/Deferred/2/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/2/Fragment.glsl diff --git a/src/game/Core/Shaders/Deferred/2/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/2/Vertex.glsl similarity index 100% rename from src/game/Core/Shaders/Deferred/2/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/2/Vertex.glsl diff --git a/src/game/Core/Shaders/Deferred/3/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/3/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/3/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/3/Fragment.glsl diff --git a/src/game/Core/Shaders/Deferred/3/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/3/Vertex.glsl similarity index 100% rename from src/game/Core/Shaders/Deferred/3/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/3/Vertex.glsl diff --git a/src/game/Core/Shaders/Deferred/water/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/water/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/water/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/water/Fragment.glsl diff --git a/src/game/Core/Shaders/Deferred/water/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/water/Vertex.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/water/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/water/Vertex.glsl diff --git a/src/game/Core/Shaders/Deferred/water2/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/water2/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/water2/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/water2/Fragment.glsl diff --git a/src/game/Core/Shaders/Deferred/water2/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Deferred/water2/Vertex.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Deferred/water2/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Deferred/water2/Vertex.glsl diff --git a/src/game/Core/Shaders/Forward/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Forward/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Forward/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Forward/Fragment.glsl diff --git a/src/game/Core/Shaders/Forward/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Forward/Vertex.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/Forward/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Forward/Vertex.glsl diff --git a/src/game/Core/Shaders/PureForward/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/PureForward/Fragment.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/PureForward/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/PureForward/Fragment.glsl diff --git a/src/game/Core/Shaders/PureForward/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/PureForward/Vertex.glsl old mode 100755 new mode 100644 similarity index 100% rename from src/game/Core/Shaders/PureForward/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/PureForward/Vertex.glsl diff --git a/src/game/Core/Shaders/Screen/Fragment.glsl b/src/game/Rendering/OpenGL/Shaders/Screen/Fragment.glsl similarity index 100% rename from src/game/Core/Shaders/Screen/Fragment.glsl rename to src/game/Rendering/OpenGL/Shaders/Screen/Fragment.glsl diff --git a/src/game/Core/Shaders/Screen/Vertex.glsl b/src/game/Rendering/OpenGL/Shaders/Screen/Vertex.glsl similarity index 100% rename from src/game/Core/Shaders/Screen/Vertex.glsl rename to src/game/Rendering/OpenGL/Shaders/Screen/Vertex.glsl diff --git a/tools/deploy.bat b/tools/deploy.bat index 249b16d..2715ad1 100644 --- a/tools/deploy.bat +++ b/tools/deploy.bat @@ -4,13 +4,19 @@ SET DeployLocation=bin\ ECHO Deploying resources to %DeployLocation% :: Asset folders +RMDIR "%DeployLocation%\Models" +RMDIR "%DeployLocation%\Textures" +RMDIR "%DeployLocation%\Sounds" MKLINK "%DeployLocation%\Models\" "assets\Models" /J MKLINK "%DeployLocation%\Textures\" "assets\Textures\" /J MKLINK "%DeployLocation%\Sounds\" "assets\Sounds\" /J :: Configuration files MKLINK "%DeployLocation%\DefaultConfig.ini" "assets\DefaultConfig.ini" /H :: Shaders -MKLINK "%DeployLocation%\Shaders\" "src\game\Core\Shaders\" /J +RMDIR /S /Q "%DeployLocation%\Shaders" +MKDIR "%DeployLocation%\Shaders" +MKLINK "%DeployLocation%\Shaders\OpenGL\" "src\game\Rendering\OpenGL\Shaders\" /J +MKLINK "%DeployLocation%\Shaders\DirectX\" "src\game\Rendering\DirectX\Shaders\" /J :: Platform specific binaries IF "%~1"=="" GOTO :EOF ECHO Deploying %1 binaries to %DeployLocation%