From 5aa2621a7651c4d55df419d598e7eda10ad322a3 Mon Sep 17 00:00:00 2001 From: GolfOcean334 <130740013+GolfOcean334@users.noreply.github.com> Date: Fri, 12 Apr 2024 17:34:59 +0200 Subject: [PATCH] Minor: Ajout du Shader de l'eau --- enginecustom/Lightshaderclass.cpp | 6 +- enginecustom/Lightshaderclass.h | 4 +- enginecustom/applicationclass.cpp | 397 ++++++++++++++++++++++++++- enginecustom/applicationclass.h | 5 +- enginecustom/bath.txt | 82 ++++++ enginecustom/ground.txt | 10 + enginecustom/ground01.tga | Bin 0 -> 4194348 bytes enginecustom/lightshaderclass.cpp | 6 +- enginecustom/lightshaderclass.h | 4 +- enginecustom/lightshaderwaterclass.h | 1 + enginecustom/marble01.tga | Bin 0 -> 4194348 bytes enginecustom/shadermanagerclass.cpp | 37 ++- enginecustom/shadermanagerclass.h | 4 +- enginecustom/wall.txt | 40 +++ enginecustom/wall01.tga | Bin 0 -> 4194348 bytes enginecustom/water.txt | 10 + enginecustom/water01.tga | Bin 0 -> 262188 bytes 17 files changed, 577 insertions(+), 29 deletions(-) create mode 100644 enginecustom/bath.txt create mode 100644 enginecustom/ground.txt create mode 100644 enginecustom/ground01.tga create mode 100644 enginecustom/lightshaderwaterclass.h create mode 100644 enginecustom/marble01.tga create mode 100644 enginecustom/wall.txt create mode 100644 enginecustom/wall01.tga create mode 100644 enginecustom/water.txt create mode 100644 enginecustom/water01.tga diff --git a/enginecustom/Lightshaderclass.cpp b/enginecustom/Lightshaderclass.cpp index 392cdac..5f275fb 100644 --- a/enginecustom/Lightshaderclass.cpp +++ b/enginecustom/Lightshaderclass.cpp @@ -68,13 +68,13 @@ void LightShaderClass::Shutdown() } bool LightShaderClass::Render(ID3D11DeviceContext* deviceContext, int indexCount, XMMATRIX worldMatrix, XMMATRIX viewMatrix, XMMATRIX projectionMatrix, - ID3D11ShaderResourceView* texture, XMFLOAT4 diffuseColor[], XMFLOAT4 lightPosition[]) + ID3D11ShaderResourceView* texture, XMFLOAT4 diffuseColor[], XMFLOAT4 lightPosition[], XMFLOAT4 ambientClor[]) { bool result; // Set the shader parameters that it will use for rendering. - result = SetShaderParameters(deviceContext, worldMatrix, viewMatrix, projectionMatrix, texture, diffuseColor, lightPosition); + result = SetShaderParameters(deviceContext, worldMatrix, viewMatrix, projectionMatrix, texture, diffuseColor, lightPosition, ambientClor); if(!result) { return false; @@ -394,7 +394,7 @@ void LightShaderClass::OutputShaderErrorMessage(ID3D10Blob* errorMessage, HWND h bool LightShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, XMMATRIX worldMatrix, XMMATRIX viewMatrix, XMMATRIX projectionMatrix, - ID3D11ShaderResourceView* texture, XMFLOAT4 diffuseColor[], XMFLOAT4 lightPosition[]) + ID3D11ShaderResourceView* texture, XMFLOAT4 diffuseColor[], XMFLOAT4 lightPosition[], XMFLOAT4 ambientColor[]) { HRESULT result; D3D11_MAPPED_SUBRESOURCE mappedResource; diff --git a/enginecustom/Lightshaderclass.h b/enginecustom/Lightshaderclass.h index 8e338b3..9118024 100644 --- a/enginecustom/Lightshaderclass.h +++ b/enginecustom/Lightshaderclass.h @@ -67,14 +67,14 @@ public: bool Initialize(ID3D11Device*, HWND); void Shutdown(); - bool Render(ID3D11DeviceContext*, int, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[]); + bool Render(ID3D11DeviceContext*, int, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[], XMFLOAT4[]); private: bool InitializeShader(ID3D11Device*, HWND, WCHAR*, WCHAR*); void ShutdownShader(); void OutputShaderErrorMessage(ID3D10Blob*, HWND, WCHAR*); - bool SetShaderParameters(ID3D11DeviceContext*, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[]); + bool SetShaderParameters(ID3D11DeviceContext*, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, XMFLOAT4[], XMFLOAT4[], XMFLOAT4[]); void RenderShader(ID3D11DeviceContext*, int); private: diff --git a/enginecustom/applicationclass.cpp b/enginecustom/applicationclass.cpp index f9f5e1e..bcaade2 100644 --- a/enginecustom/applicationclass.cpp +++ b/enginecustom/applicationclass.cpp @@ -19,6 +19,16 @@ ApplicationClass::ApplicationClass() m_Position = 0; m_Frustum = 0; m_DisplayPlane = 0; + m_GroundModel = 0; + m_WallModel = 0; + m_BathModel = 0; + m_WaterModel = 0; + m_Light = 0; + m_RefractionTexture = 0; + m_ReflectionTexture = 0; + m_LightShader = 0; + m_RefractionShader = 0; + m_WaterShader = 0; } @@ -191,6 +201,7 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) m_Light->SetDiffuseColor(1.0f, 1.0f, 1.0f, 1.0f); m_Light->SetDirection(0.0f, 0.0f, -1.0f); + m_Light->SetAmbientColor(0.15f, 0.15f, 0.15f, 1.0f); m_Light->SetSpecularColor(1.0f, 1.0f, 1.0f, 1.0f); m_Light->SetSpecularPower(16.0f); @@ -257,6 +268,122 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) m_ModelList = new ModelListClass; m_ModelList->Initialize(25); + // Set the file names of the ground model. + strcpy_s(modelFilename, "ground.txt"); + strcpy_s(textureFilename1, "ground01.tga"); + + // Create and initialize the ground model object. + m_GroundModel = new ModelClass; + + result = m_GroundModel->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename1, textureFilename2, textureFilename3, textureFilename4, + textureFilename5, textureFilename6); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the ground model object.", L"Error", MB_OK); + return false; + } + + // Set the file names of the wall model. + strcpy_s(modelFilename, "wall.txt"); + strcpy_s(textureFilename1, "wall01.tga"); + + // Create and initialize the wall model object. + m_WallModel = new ModelClass; + + result = m_WallModel->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename1, textureFilename2, textureFilename3, textureFilename4, + textureFilename5, textureFilename6); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the wall model object.", L"Error", MB_OK); + return false; + } + + // Set the file names of the bath model. + strcpy_s(modelFilename, "bath.txt"); + strcpy_s(textureFilename1, "marble01.tga"); + + // Create and initialize the bath model object. + m_BathModel = new ModelClass; + + result = m_BathModel->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename1, textureFilename2, textureFilename3, textureFilename4, + textureFilename5, textureFilename6); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the bath model object.", L"Error", MB_OK); + return false; + } + + // Set the file names of the water model. + strcpy_s(modelFilename, "water.txt"); + strcpy_s(textureFilename1, "water01.tga"); + + // Create and initialize the water model object. + m_WaterModel = new ModelClass; + + result = m_WaterModel->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename1, textureFilename2, textureFilename3, textureFilename4, + textureFilename5, textureFilename6); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the water model object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the refraction render to texture object. + m_RefractionTexture = new RenderTextureClass; + + result = m_RefractionTexture->Initialize(m_Direct3D->GetDevice(), screenWidth, screenHeight, SCREEN_DEPTH, SCREEN_NEAR, 1); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the refraction render texture object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the reflection render to texture object. + m_ReflectionTexture = new RenderTextureClass; + + result = m_ReflectionTexture->Initialize(m_Direct3D->GetDevice(), screenWidth, screenHeight, SCREEN_DEPTH, SCREEN_NEAR, 1); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the reflection render texture object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the light shader object. + m_LightShader = new LightShaderClass; + + result = m_LightShader->Initialize(m_Direct3D->GetDevice(), hwnd); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the light shader object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the refraction shader object. + m_RefractionShader = new RefractionShaderClass; + + result = m_RefractionShader->Initialize(m_Direct3D->GetDevice(), hwnd); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the refraction shader object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the water shader object. + m_WaterShader = new WaterShaderClass; + + result = m_WaterShader->Initialize(m_Direct3D->GetDevice(), hwnd); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the water shader object.", L"Error", MB_OK); + return false; + } + + // Set the height of the water. + m_waterHeight = 2.75f; + + // Initialize the position of the water. + m_waterTranslation = 0.0f; + // Create and initialize the timer object. m_Timer = new TimerClass; @@ -313,6 +440,78 @@ void ApplicationClass::Shutdown() m_ShaderManager = 0; } + // Release the water shader object. + if (m_WaterShader) + { + m_WaterShader->Shutdown(); + delete m_WaterShader; + m_WaterShader = 0; + } + + // Release the refraction shader object. + if (m_RefractionShader) + { + m_RefractionShader->Shutdown(); + delete m_RefractionShader; + m_RefractionShader = 0; + } + + // Release the light shader object. + if (m_LightShader) + { + m_LightShader->Shutdown(); + delete m_LightShader; + m_LightShader = 0; + } + + // Release the reflection render texture object. + if (m_ReflectionTexture) + { + m_ReflectionTexture->Shutdown(); + delete m_ReflectionTexture; + m_ReflectionTexture = 0; + } + + // Release the refraction render texture object. + if (m_RefractionTexture) + { + m_RefractionTexture->Shutdown(); + delete m_RefractionTexture; + m_RefractionTexture = 0; + } + + // Release the water model object. + if (m_WaterModel) + { + m_WaterModel->Shutdown(); + delete m_WaterModel; + m_WaterModel = 0; + } + + // Release the bath model object. + if (m_BathModel) + { + m_BathModel->Shutdown(); + delete m_BathModel; + m_BathModel = 0; + } + + // Release the wall model object. + if (m_WallModel) + { + m_WallModel->Shutdown(); + delete m_WallModel; + m_WallModel = 0; + } + + // Release the ground model object. + if (m_GroundModel) + { + m_GroundModel->Shutdown(); + delete m_GroundModel; + m_GroundModel = 0; + } + // Release the frustum class object. if (m_Frustum) { @@ -532,6 +731,28 @@ bool ApplicationClass::Frame(InputClass* Input) rotation += 360.0f; } + // Update the position of the water to simulate motion. + m_waterTranslation += 0.001f; + if (m_waterTranslation > 1.0f) + { + m_waterTranslation -= 1.0f; + } + + // Render the refraction of the scene to a texture. + result = RenderRefractionToTexture(); + if (!result) + { + return false; + } + + // Render the reflection of the scene to a texture. + result = RenderReflectionToTexture(); + if (!result) + { + return false; + } + + //// Update the x position variable each frame. //x -= 0.0174532925f * 0.6f; @@ -580,6 +801,88 @@ bool ApplicationClass::Frame(InputClass* Input) return true; } +bool ApplicationClass::RenderRefractionToTexture() +{ + XMMATRIX worldMatrix, viewMatrix, projectionMatrix; + XMFLOAT4 clipPlane; + bool result; + + // Setup a clipping plane based on the height of the water to clip everything above it. + clipPlane = XMFLOAT4(0.0f, -1.0f, 0.0f, m_waterHeight + 0.1f); + + // Set the render target to be the refraction render to texture and clear it. + m_RefractionTexture->SetRenderTarget(m_Direct3D->GetDeviceContext()); + m_RefractionTexture->ClearRenderTarget(m_Direct3D->GetDeviceContext(), 0.0f, 0.0f, 0.0f, 1.0f); + + // Generate the view matrix based on the camera's position. + m_Camera->Render(); + + // Get the world, view, and projection matrices from the camera and d3d objects. + m_Direct3D->GetWorldMatrix(worldMatrix); + m_Camera->GetViewMatrix(viewMatrix); + m_Direct3D->GetProjectionMatrix(projectionMatrix); + + // Translate to where the bath model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, 2.0f, 0.0f); + + // Render the bath model using the refraction shader. + m_BathModel->Render(m_Direct3D->GetDeviceContext()); + + result = m_RefractionShader->Render(m_Direct3D->GetDeviceContext(), m_BathModel->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_BathModel->GetTexture(0), + m_Light->GetDirection(), m_Light->GetAmbientColor(), m_Light->GetDiffuseColor(), clipPlane); + if (!result) + { + return false; + } + + // Reset the render target back to the original back buffer and not the render to texture anymore. And reset the viewport back to the original. + m_Direct3D->SetBackBufferRenderTarget(); + m_Direct3D->ResetViewport(); + + return true; +} + +bool ApplicationClass::RenderReflectionToTexture() +{ + XMMATRIX worldMatrix, reflectionViewMatrix, projectionMatrix; + XMFLOAT4 diffuseColor[4], getDirection[4], ambientColor[4]; + bool result; + + + // Set the render target to be the reflection render to texture and clear it. + m_ReflectionTexture->SetRenderTarget(m_Direct3D->GetDeviceContext()); + m_ReflectionTexture->ClearRenderTarget(m_Direct3D->GetDeviceContext(), 0.0f, 0.0f, 0.0f, 1.0f); + + // Use the camera to render the reflection and create a reflection view matrix. + m_Camera->RenderReflection(m_waterHeight); + + // Get the camera reflection view matrix instead of the normal view matrix. + m_Camera->GetReflectionViewMatrix(reflectionViewMatrix); + + // Get the world and projection matrices from the d3d object. + m_Direct3D->GetWorldMatrix(worldMatrix); + m_Direct3D->GetProjectionMatrix(projectionMatrix); + + // Translate to where the wall model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, 6.0f, 8.0f); + + // Render the wall model using the light shader and the reflection view matrix. + m_WallModel->Render(m_Direct3D->GetDeviceContext()); + + result = m_ShaderManager->RenderlightShaderWater(m_Direct3D->GetDeviceContext(), m_WallModel->GetIndexCount(), worldMatrix, reflectionViewMatrix, projectionMatrix, m_WallModel->GetTexture(4), + getDirection, ambientColor, diffuseColor); + if (!result) + { + return false; + } + + // Reset the render target back to the original back buffer and not the render to texture anymore. And reset the viewport back to the original. + m_Direct3D->SetBackBufferRenderTarget(); + m_Direct3D->ResetViewport(); + + return true; +} + bool ApplicationClass::RenderSceneToTexture(float rotation) { XMMATRIX worldMatrix, viewMatrix, projectionMatrix; @@ -619,9 +922,9 @@ bool ApplicationClass::RenderSceneToTexture(float rotation) bool ApplicationClass::Render(float rotation, float x, float y, float z, float textureTranslation) { - XMMATRIX worldMatrix, viewMatrix, orthoMatrix, projectionMatrix, rotateMatrix, translateMatrix, scaleMatrix, srMatrix; + XMMATRIX worldMatrix, viewMatrix, orthoMatrix, projectionMatrix, rotateMatrix, translateMatrix, scaleMatrix, srMatrix, reflectionMatrix; float positionX, positionY, positionZ, radius; - XMFLOAT4 diffuseColor[4], lightPosition[4]; + XMFLOAT4 diffuseColor[4], lightPosition[4], getDirection[4], ambientColor[4]; int modelCount, renderCount, i; bool result, renderModel; float blendAmount; @@ -650,6 +953,9 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t // Create the light position array from the four light positions. lightPosition[i] = m_Lights[i]->GetPosition(); + + // Create the light position array from the four light positions. + ambientColor[i] = m_Lights[i]->GetPosition(); } scaleMatrix = XMMatrixScaling(0.5f, 0.5f, 0.5f); // Build the scaling matrix. @@ -665,7 +971,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t // Render the model using the light shader. result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), - diffuseColor, lightPosition); + diffuseColor, lightPosition, ambientColor); for (auto cube : m_cubes) { @@ -687,7 +993,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t cube->Render(m_Direct3D->GetDeviceContext()); result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), - diffuseColor, lightPosition); + diffuseColor, lightPosition, ambientColor); if (!result) { logger.Log("Could not render the cube model using the light shader", __FILE__, __LINE__, Logger::LogLevel::Error); @@ -711,7 +1017,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t object->Render(m_Direct3D->GetDeviceContext()); result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), - diffuseColor, lightPosition); + diffuseColor, lightPosition, ambientColor); if (!result) { @@ -734,7 +1040,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t chunk->Render(m_Direct3D->GetDeviceContext()); result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), chunk->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, chunk->GetTexture(5), - diffuseColor, lightPosition); + diffuseColor, lightPosition, ambientColor); if (!result) { @@ -816,7 +1122,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t m_Model->Render(m_Direct3D->GetDeviceContext()); result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), - diffuseColor, lightPosition); + diffuseColor, lightPosition, ambientColor); if (!result) { logger.Log("Could not render the model using the light shader", __FILE__, __LINE__, Logger::LogLevel::Error); @@ -925,13 +1231,78 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t } + // Translate to where the ground model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, 1.0f, 0.0f); - // Render the model using the multitexture shader. - //result = m_MultiTextureShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, - // m_Model->GetTexture(0), m_Model->GetTexture(1)); + // Put the ground model vertex and index buffers on the graphics pipeline to prepare them for drawing. + m_GroundModel->Render(m_Direct3D->GetDeviceContext()); - //// Render the model using the multitexture shader. - //m_Model->Render(m_Direct3D->GetDeviceContext()); + // Render the ground model using the light shader. + result = m_ShaderManager->RenderlightShaderWater(m_Direct3D->GetDeviceContext(), m_GroundModel->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_GroundModel->GetTexture(0), + getDirection, ambientColor, diffuseColor); + if (!result) + { + return false; + } + + // Reset the world matrix. + m_Direct3D->GetWorldMatrix(worldMatrix); + + + // Translate to where the wall model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, 6.0f, 8.0f); + + // Put the wall model vertex and index buffers on the graphics pipeline to prepare them for drawing. + m_WallModel->Render(m_Direct3D->GetDeviceContext()); + + // Render the wall model using the light shader. + result = m_ShaderManager->RenderlightShaderWater(m_Direct3D->GetDeviceContext(), m_GroundModel->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_GroundModel->GetTexture(0), + getDirection, ambientColor, diffuseColor); + if (!result) + { + return false; + } + + // Reset the world matrix. + m_Direct3D->GetWorldMatrix(worldMatrix); + + + // Translate to where the bath model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, 2.0f, 0.0f); + + // Put the bath model vertex and index buffers on the graphics pipeline to prepare them for drawing. + m_BathModel->Render(m_Direct3D->GetDeviceContext()); + + // Render the bath model using the light shader. + result = m_ShaderManager->RenderlightShaderWater(m_Direct3D->GetDeviceContext(), m_GroundModel->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_GroundModel->GetTexture(0), + getDirection, ambientColor, diffuseColor); + if (!result) + { + return false; + } + + // Reset the world matrix. + m_Direct3D->GetWorldMatrix(worldMatrix); + + // Get the camera reflection view matrix. + m_Camera->GetReflectionViewMatrix(reflectionMatrix); + + // Translate to where the water model will be rendered. + worldMatrix = XMMatrixTranslation(0.0f, m_waterHeight, 0.0f); + + // Put the water model vertex and index buffers on the graphics pipeline to prepare them for drawing. + m_WaterModel->Render(m_Direct3D->GetDeviceContext()); + + // Render the water model using the water shader. + result = m_WaterShader->Render(m_Direct3D->GetDeviceContext(), m_WaterModel->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, reflectionMatrix, + m_ReflectionTexture->GetShaderResourceView(), m_RefractionTexture->GetShaderResourceView(), m_WaterModel->GetTexture(0), + m_waterTranslation, 0.01f); + if (!result) + { + return false; + } + + // Setup matrices. rotateMatrix = XMMatrixRotationY(rotation); @@ -1055,7 +1426,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t // Render the model using the transparent shader. m_Model->Render(m_Direct3D->GetDeviceContext()); - result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), diffuseColor, lightPosition); + result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), diffuseColor, lightPosition, ambientColor); if (!result) { return false; diff --git a/enginecustom/applicationclass.h b/enginecustom/applicationclass.h index 159f2de..41026e6 100644 --- a/enginecustom/applicationclass.h +++ b/enginecustom/applicationclass.h @@ -28,9 +28,6 @@ #include "frustumclass.h" #include "rendertextureclass.h" #include "displayplaneclass.h" -#include "reflectionshaderclass.h" -#include "refractionshaderclass.h" -#include "watershaderclass.h" ///////////// @@ -140,6 +137,8 @@ private : // ----------------------------------- // ShaderManagerClass* m_ShaderManager; + LightShaderClass* m_LightShader; + RefractionShaderClass* m_RefractionShader; WaterShaderClass* m_WaterShader; FontShaderClass* m_FontShader; BitmapClass* m_Bitmap; diff --git a/enginecustom/bath.txt b/enginecustom/bath.txt new file mode 100644 index 0000000..4f067c7 --- /dev/null +++ b/enginecustom/bath.txt @@ -0,0 +1,82 @@ +Vertex Count: 78 + +Data: + +4 -0.5 -4 0.998008 0.998008 0 1 -0 +-4 -0.5 4 0.001992 0.00199199 0 1 -0 +4 -0.5 4 0.998008 0.00199199 0 1 -0 +4 -0.5 -4 0.998008 0.998008 0 1 -0 +-4 -0.5 -4 0.001992 0.998008 0 1 -0 +-4 -0.5 4 0.001992 0.00199199 0 1 -0 +4 1 4 0.187127 0.998008 0 0 -1 +-4 -0.5 4 0.000374 0.00199199 0 0 -1 +-4 1 4 0.187127 0.00199199 0 0 -1 +4 -0.5 4 0.000374 0.998008 0 0 -1 +-4 -0.5 4 0.000374 0.00199199 0 0 -1 +4 1 4 0.187127 0.998008 0 0 -1 +4 1 -4 0.187126 0.998008 -1 0 -0 +4 -0.5 4 0.000373 0.00199199 -1 0 -0 +4 1 4 0.187126 0.00199199 -1 0 -0 +4 -0.5 -4 0.000373 0.998008 -1 0 -0 +4 -0.5 4 0.000373 0.00199199 -1 0 -0 +4 1 -4 0.187126 0.998008 -1 0 -0 +-4 1 -4 0.000374 0.00199199 0 0 1 +4 -0.5 -4 0.187127 0.998008 0 0 1 +4 1 -4 0.000374 0.998008 0 0 1 +-4 1 -4 0.000374 0.00199199 0 0 1 +-4 -0.5 -4 0.187127 0.00199199 0 0 1 +4 -0.5 -4 0.187127 0.998008 0 0 1 +-4 1 4 0.187127 0.998008 1 0 -0 +-4 -0.5 -4 0.000374 0.00199199 1 0 -0 +-4 1 -4 0.187127 0.00199199 1 0 -0 +-4 -0.5 4 0.000374 0.998008 1 0 -0 +-4 -0.5 -4 0.000374 0.00199199 1 0 -0 +-4 1 4 0.187127 0.998008 1 0 -0 +-5 1 5 0.199602 0.00199199 -1 0 -0 +-5 -1 -5 0.000398 0.998008 -1 0 -0 +-5 -1 5 0.000398 0.00199199 -1 0 -0 +-5 1 -5 0.199602 0.998008 -1 0 -0 +-5 -1 -5 0.000398 0.998008 -1 0 -0 +-5 1 5 0.199602 0.00199199 -1 0 -0 +5 1 -5 0.199602 0.00199199 1 0 -0 +5 -1 5 0.000398 0.998008 1 0 -0 +5 -1 -5 0.000398 0.00199199 1 0 -0 +5 1 5 0.199602 0.998008 1 0 -0 +5 -1 5 0.000398 0.998008 1 0 -0 +5 1 -5 0.199602 0.00199199 1 0 -0 +-5 -1 5 0.199602 0.00199199 0 0 1 +5 1 5 0.000398 0.998008 0 0 1 +-5 1 5 0.000398 0.00199199 0 0 1 +5 -1 5 0.199602 0.998008 0 0 1 +5 1 5 0.000398 0.998008 0 0 1 +-5 -1 5 0.199602 0.00199199 0 0 1 +-5 1 5 0.001992 0.00199199 0 1 -0 +-4 1 -4 0.101594 0.898406 0 1 -0 +-5 1 -5 0.001992 0.998008 0 1 -0 +-5 1 5 0.001992 0.00199199 0 1 -0 +-4 1 4 0.101594 0.101594 0 1 -0 +-4 1 -4 0.101594 0.898406 0 1 -0 +-4 1 -4 0.101594 0.898406 0 1 -0 +5 1 -5 0.998008 0.998008 0 1 -0 +-5 1 -5 0.001992 0.998008 0 1 -0 +4 1 -4 0.898406 0.898406 0 1 -0 +5 1 -5 0.998008 0.998008 0 1 -0 +-4 1 -4 0.101594 0.898406 0 1 -0 +4 1 -4 0.898406 0.898406 0 1 -0 +5 1 5 0.998008 0.00199199 0 1 -0 +5 1 -5 0.998008 0.998008 0 1 -0 +4 1 4 0.898406 0.101594 0 1 -0 +5 1 5 0.998008 0.00199199 0 1 -0 +4 1 -4 0.898406 0.898406 0 1 -0 +4 1 4 0.898406 0.101594 0 1 -0 +-5 1 5 0.001992 0.00199199 0 1 -0 +5 1 5 0.998008 0.00199199 0 1 -0 +-5 1 5 0.001992 0.00199199 0 1 -0 +4 1 4 0.898406 0.101594 0 1 -0 +-4 1 4 0.101594 0.101594 0 1 -0 +-5 1 -5 0.199602 0.00199199 0 0 -1 +5 -1 -5 0.000398 0.998008 0 0 -1 +-5 -1 -5 0.000398 0.00199199 0 0 -1 +5 1 -5 0.199602 0.998008 0 0 -1 +5 -1 -5 0.000398 0.998008 0 0 -1 +-5 1 -5 0.199602 0.00199199 0 0 -1 diff --git a/enginecustom/ground.txt b/enginecustom/ground.txt new file mode 100644 index 0000000..231d065 --- /dev/null +++ b/enginecustom/ground.txt @@ -0,0 +1,10 @@ +Vertex Count: 6 + +Data: + +-20 0 20 0.0 0.0 0 1 0 + 20 0 -20 1.0 1.0 0 1 0 +-20 0 -20 0.0 1.0 0 1 0 + 20 0 20 1.0 0.0 0 1 0 + 20 0 -20 1.0 1.0 0 1 0 +-20 0 20 0.0 0.0 0 1 0 diff --git a/enginecustom/ground01.tga b/enginecustom/ground01.tga new file mode 100644 index 0000000000000000000000000000000000000000..b2160213ed63c38b147abdc45d0c885f230920c9 GIT binary patch literal 4194348 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