Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions Automatic Versions/Version.h

This file was deleted.

18 changes: 0 additions & 18 deletions Automatic Versions/Version.h_old

This file was deleted.

6 changes: 0 additions & 6 deletions EngineDemo.sln
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,6 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
GlobalSection(AutomaticVersions) = postSolution
PrimaryVersionType.Release|Win32 = AssemblyVersionAttribute
UpdateAssemblyVersion.Release|Win32 = True
Expand Down
2 changes: 1 addition & 1 deletion EngineDemo/RenderStates.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ HRESULT RenderStates::InitAll(ID3D11Device1 * device)

// Bilinear Clamp Com Less
D3D11_SAMPLER_DESC BilinearClampComLessDesc = {};
BilinearClampComLessDesc.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;
BilinearClampComLessDesc.Filter = D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
BilinearClampComLessDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
BilinearClampComLessDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
BilinearClampComLessDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
Expand Down
131 changes: 68 additions & 63 deletions EngineDemo/Terrain2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,67 @@ TerrainClass2::~TerrainClass2()
}

bool TerrainClass2::Init(ID3D11Device1 * device, ID3D11DeviceContext1 * mImmediateContext)
{
CreateDDSTextureFromFile(device, L"ring.dds", nullptr, &mHeighmapRawSRV);
CreateDDSTextureFromFile(device, L"processedHeighmap.dds", nullptr, &mProDF);
//mImmediateContext->VSSetShaderResources(40, 1, mProDF.GetAddressOf());

terrainQuadTree.Init(device, -2048.0f, -2048.0f, 4096.0f, 4096.0f, 7, 20, XMFLOAT3(1.0, 80.0, 1.0));

CreateConstantBuffer(device, sizeof(MatrixBuffer), mMatrixCB);

mPixelShader = ShaderManager::Instance()->GetPS("Terrain2::TerrainPS");

// vs & il quad
const D3D11_INPUT_ELEMENT_DESC vertexQuadDesc[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "PSIZE", 0, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "PSIZE", 1, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "BLENDINDICES", 0, DXGI_FORMAT_R32_UINT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "PSIZE", 2, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
};

UINT numElements = sizeof(vertexQuadDesc) / sizeof(vertexQuadDesc[0]);

CreateVSAndInputLayout(L"..\\Debug\\Shaders\\Terrain2\\TerrainVS.cso", device, mVertexShader, vertexQuadDesc, numElements, mQuadIL);

return true;
}

void TerrainClass2::Draw(ID3D11DeviceContext1 * mImmediateContext, std::shared_ptr<CameraClass> Camera, DirectionalLight & light)
{
terrainQuadTree.GenerateTree(mImmediateContext, Camera);

XMMATRIX ViewProjTrans = Camera->GetViewProjTransMatrix();
XMStoreFloat3(&MatrixBuffer.camPos, Camera->GetPosition());
MatrixBuffer.gWorldProj = ViewProjTrans;
MapResources(mImmediateContext, mMatrixCB.Get(), MatrixBuffer);

// IA
mImmediateContext->IASetInputLayout(mQuadIL.Get());
mImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

// VS
mImmediateContext->VSSetShader(mVertexShader.Get(), nullptr, 0);
mImmediateContext->VSSetConstantBuffers(4, 1, mMatrixCB.GetAddressOf());
mImmediateContext->VSSetShaderResources(10, 1, mHeighmap->GetAddressOfSRV());
mImmediateContext->VSSetSamplers(0, 1, &RenderStates::Sampler::BilinearClampSS);

// PS
mImmediateContext->PSSetShader(mPixelShader, nullptr, 0);
mImmediateContext->PSSetShaderResources(0, 1, mHeighmapRawSRV.GetAddressOf());
mImmediateContext->PSSetSamplers(0, 1, &RenderStates::Sampler::BilinearWrapSS);

// RS
mImmediateContext->RSSetState(RenderStates::Rasterizer::DefaultRS);

terrainQuadTree.Draw(mImmediateContext);

mImmediateContext->RSSetState(RenderStates::Rasterizer::DefaultRS);
}

HRESULT TerrainClass2::GenerateDistanceField(ID3D11Device1* device, ID3D11DeviceContext1 * mImmediateContext)
{
mInitJFA = ShaderManager::Instance()->GetCS("Terrain2::initJFA");
mStepJFA = ShaderManager::Instance()->GetCS("Terrain2::stepJFA");
Expand All @@ -29,10 +90,6 @@ bool TerrainClass2::Init(ID3D11Device1 * device, ID3D11DeviceContext1 * mImmedia

mCreateHM = ShaderManager::Instance()->GetCS("Terrain2::createHM");

CreateDDSTextureFromFile(device, L"ring.dds", nullptr, &mHeighmapRawSRV);
CreateDDSTextureFromFile(device, L"processedHeighmap.dds", nullptr, &mProDF);
//mImmediateContext->VSSetShaderResources(40, 1, mProDF.GetAddressOf());

D3D11_TEXTURE2D_DESC textDesc;

ZeroMemory(&textDesc, sizeof(textDesc));
Expand All @@ -48,16 +105,16 @@ bool TerrainClass2::Init(ID3D11Device1 * device, ID3D11DeviceContext1 * mImmedia
textDesc.CPUAccessFlags = 0;
textDesc.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS;

EXIT_ON_NULL(mOceanDFA =
TextureFactory::CreateTexture(textDesc));
EXIT_ON_NULL(mOceanDFA =
TextureFactory::CreateTexture(textDesc));

EXIT_ON_NULL(mOceanDFB =
TextureFactory::CreateTexture(textDesc));
TextureFactory::CreateTexture(textDesc));

EXIT_ON_NULL(mHeighmap =
TextureFactory::CreateTexture(D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS,
DXGI_FORMAT_R16_FLOAT,
4096, 4096));
TextureFactory::CreateTexture(D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS,
DXGI_FORMAT_R16_FLOAT,
4096, 4096));

//textDesc.Format = DXGI_FORMAT_R32_FLOAT;
EXIT_ON_NULL(mGenHeightmap =
Expand Down Expand Up @@ -144,57 +201,5 @@ bool TerrainClass2::Init(ID3D11Device1 * device, ID3D11DeviceContext1 * mImmedia
mImmediateContext->PSSetShaderResources(86, 1, mHeighmap->GetAddressOfSRV());
mImmediateContext->PSSetShaderResources(84, 1, mHeighmapRawSRV.GetAddressOf());

terrainQuadTree.Init(device, -2048.0f, -2048.0f, 4096.0f, 4096.0f, 7, 20, XMFLOAT3(1.0, 80.0, 1.0));

CreateConstantBuffer(device, sizeof(MatrixBuffer), mMatrixCB);

mPixelShader = ShaderManager::Instance()->GetPS("Terrain2::TerrainPS");

// vs & il quad
const D3D11_INPUT_ELEMENT_DESC vertexQuadDesc[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "PSIZE", 0, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "PSIZE", 1, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "BLENDINDICES", 0, DXGI_FORMAT_R32_UINT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "PSIZE", 2, DXGI_FORMAT_R32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
};

UINT numElements = sizeof(vertexQuadDesc) / sizeof(vertexQuadDesc[0]);

CreateVSAndInputLayout(L"..\\Debug\\Shaders\\Terrain2\\TerrainVS.cso", device, mVertexShader, vertexQuadDesc, numElements, mQuadIL);

return true;
}

void TerrainClass2::Draw(ID3D11DeviceContext1 * mImmediateContext, std::shared_ptr<CameraClass> Camera, DirectionalLight & light)
{
terrainQuadTree.GenerateTree(mImmediateContext, Camera);

XMMATRIX ViewProjTrans = Camera->GetViewProjTransMatrix();
XMStoreFloat3(&MatrixBuffer.camPos, Camera->GetPosition());
MatrixBuffer.gWorldProj = ViewProjTrans;
MapResources(mImmediateContext, mMatrixCB.Get(), MatrixBuffer);

// IA
mImmediateContext->IASetInputLayout(mQuadIL.Get());
mImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

// VS
mImmediateContext->VSSetShader(mVertexShader.Get(), nullptr, 0);
mImmediateContext->VSSetConstantBuffers(4, 1, mMatrixCB.GetAddressOf());
mImmediateContext->VSSetShaderResources(10, 1, mHeighmap->GetAddressOfSRV());
mImmediateContext->VSSetSamplers(0, 1, &RenderStates::Sampler::BilinearClampSS);

// PS
mImmediateContext->PSSetShader(mPixelShader, nullptr, 0);
mImmediateContext->PSSetShaderResources(0, 1, mHeighmapRawSRV.GetAddressOf());
mImmediateContext->PSSetSamplers(0, 1, &RenderStates::Sampler::BilinearWrapSS);

// RS
mImmediateContext->RSSetState(RenderStates::Rasterizer::DefaultRS);

terrainQuadTree.Draw(mImmediateContext);

mImmediateContext->RSSetState(RenderStates::Rasterizer::DefaultRS);
return S_OK;
}
2 changes: 2 additions & 0 deletions EngineDemo/Terrain2.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ __declspec(align(16)) class TerrainClass2 : public HasLogger
void Draw(ID3D11DeviceContext1* mImmediateContext, std::shared_ptr<CameraClass> Camera, DirectionalLight& light);

private:
HRESULT GenerateDistanceField(ID3D11Device1* device, ID3D11DeviceContext1* mImmediateContext);

Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> mHeighmapRawSRV;
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> mProDF;

Expand Down
2 changes: 1 addition & 1 deletion EngineDemo/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Version
const unsigned int iMajor = 0;
const unsigned int iMinor = 1;
const unsigned int iPatch = 0;
const unsigned int iBuild = 60;
const unsigned int iBuild = 69;

const std::wstring strMajor = std::to_wstring(iMajor);
const std::wstring strMinor = std::to_wstring(iMinor);
Expand Down
2 changes: 1 addition & 1 deletion EngineDemo/Version.h_old
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Version
const unsigned int iMajor = 0;
const unsigned int iMinor = 1;
const unsigned int iPatch = 0;
const unsigned int iBuild = 59;
const unsigned int iBuild = 68;

const std::wstring strMajor = std::to_wstring(iMajor);
const std::wstring strMinor = std::to_wstring(iMinor);
Expand Down
4 changes: 2 additions & 2 deletions EngineDemo/imgui.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[Debug]
Pos=882,6
Pos=814,23
Size=374,274
Collapsed=0
Collapsed=1

[Log]
Pos=0,570
Expand Down
37 changes: 35 additions & 2 deletions EngineDemo/map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,35 @@ bool MapClass::Init(ID3D11Device1* device, ID3D11DeviceContext1 * dc)
Clouds2 = std::make_shared<CloudsClass2>();
Clouds2->Init(device, dc);

Terrain = std::make_shared<TerrainClass>();
TerrainClass::InitInfo tii;
tii.HeightMapFilename = L"Textures/terrain.raw";
tii.LayerMapFilename0 = L"Textures/grass.dds";
tii.LayerMapFilename1 = L"Textures/darkdirt.dds";
tii.LayerMapFilename2 = L"Textures/stone.dds";
tii.LayerMapFilename3 = L"Textures/lightdirt.dds";
tii.LayerMapFilename4 = L"Textures/snow.dds";
tii.BlendMapFilename = L"Textures/blend.dds";
tii.HeightScale = 100.0f;
tii.HeightmapWidth = 2049;
tii.HeightmapHeight = 2049;
tii.CellSpacing = 0.5f;
if (!Terrain->Init(device, dc, tii))
{
LogError(L"Failed to initiate terrain");
return false;
}

Terrain2 = std::make_unique<TerrainClass2>();
Terrain2->Init(device, dc);

light.Ambient(XMFLOAT4(0.2f, 0.2f, 0.2f, 1.0f));
light.Diffuse(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
light.Specular(XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f));
light.Direction(XMFLOAT3(-0.707f, -0.707f, 0.0f));

ShadowMap = std::make_unique<ShadowMapClass>(device, 2048, 2048);

// DS
D3D11_BUFFER_DESC matrixBufferDesc;
matrixBufferDesc.Usage = D3D11_USAGE_DYNAMIC;
Expand Down Expand Up @@ -137,15 +161,24 @@ void MapClass::Update(float dt, ID3D11DeviceContext1 * mImmediateContext, std::s

XMStoreFloat3(&dir_f, dir);
light.Direction(dir_f);*/
light.SetLitWorld(XMFLOAT3(-768.0f, -150.0f, -768.0f), XMFLOAT3(768.0f, 150.0f, 768.0f));

Clouds2->Update(dt);
}

void MapClass::Draw(ID3D11DeviceContext1 * mImmediateContext, std::shared_ptr<CameraClass> Camera)
{
Sky->Draw(mImmediateContext, Camera, light);
ShadowMap->BindDsvAndSetNullRenderTarget(mImmediateContext);
ShadowMap->ClearDepthMap(mImmediateContext);

Terrain->Draw(mImmediateContext, Camera, light, nullptr);

Clouds2->Draw(mImmediateContext, Camera, light, Sky->getTransmittanceSRV());
RenderTargetStack::Pop(mImmediateContext);
ViewportStack::Pop(mImmediateContext);

Terrain->Draw(mImmediateContext, Camera, light, ShadowMap->DepthMapSRV());

Sky->Draw(mImmediateContext, Camera, light);
}

void MapClass::Draw20(ID3D11DeviceContext1 * mImmediateContext, std::shared_ptr<CameraClass> Camera)
Expand Down
Loading