Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
11 changes: 8 additions & 3 deletions EngineDemo/EngineDemo.vcxproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\VisualCppTools.14.0.25023-Pre\build\native\VisualCppTools.props" Condition="Exists('..\packages\VisualCppTools.14.0.25023-Pre\build\native\VisualCppTools.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
Expand Down Expand Up @@ -1185,9 +1186,7 @@
</FxCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
<None Include="settings.ini" />
<None Include="Shaders\Clouds\generateCurl.hlsli" />
<None Include="Shaders\Clouds\SimplexNoise.hlsli" />
Expand All @@ -1206,4 +1205,10 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\VisualCppTools.14.0.25023-Pre\build\native\VisualCppTools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\VisualCppTools.14.0.25023-Pre\build\native\VisualCppTools.props'))" />
</Target>
</Project>
10 changes: 10 additions & 0 deletions EngineDemo/EngineDemo.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -733,6 +733,16 @@
<FxCompile Include="Shaders\Clouds\GenerateNoise.hlsl">
<Filter>Shaders\Clouds</Filter>
</FxCompile>
<FxCompile Include="cubeVS.hlsl" />
<FxCompile Include="Shaders\Deferred Shaders\phongLingtingPS.hlsl" />
<FxCompile Include="Shaders\PostFX\LuminancePass.hlsl" />
<FxCompile Include="Shaders\PostFX\ToneMapping.hlsl" />
<FxCompile Include="Shaders\Sky2\inscatterAdd.hlsl" />
<FxCompile Include="Shaders\Sky2\inscatterCopy.hlsl" />
<FxCompile Include="Shaders\Sky2\inscatterMultipleA.hlsl" />
<FxCompile Include="Shaders\Sky2\inscatterMultipleB.hlsl" />
<FxCompile Include="Shaders\Sky2\irradianceAdd.hlsl" />
<FxCompile Include="Shaders\Sky\SkyPostFX.hlsl" />
</ItemGroup>
<ItemGroup>
<None Include="settings.ini" />
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
6 changes: 4 additions & 2 deletions EngineDemo/Utilities/CreateShader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,19 @@ bool LoadShader(std::wstring fileName, char *& data, size_t & size)
return false;
}

void LoadCompiledShader(const fs::path & fileName, ID3DBlob *& shaderBlob, const std::string target, const std::string entry_point)
void LoadCompiledShader(const fs::path & fileName, Microsoft::WRL::ComPtr<ID3DBlob>& shaderBlob, const std::string& target, const std::string& entry_point)
{
HRESULT hr;
ID3DBlob* errorBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> errorBlob{ nullptr };

#ifndef DEPLOYMENT
if (fileName.extension() == ".hlsl")
{
hr = D3DCompileFromFile(fileName.wstring().c_str(), nullptr, D3D_COMPILE_STANDARD_FILE_INCLUDE, entry_point.c_str(), target.c_str(),
D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION | D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY, 0, &shaderBlob, &errorBlob);
}
#endif

if (fileName.extension() == ".cso")
{
hr = D3DReadFileToBlob(fileName.wstring().c_str(), &shaderBlob);
Expand Down
27 changes: 14 additions & 13 deletions EngineDemo/Utilities/CreateShader.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@
namespace fs = std::experimental::filesystem;

// Load content of file given by 'fileName' to memory at 'data' alocating needed memory at returning size in 'size'. Calle is responsible for dealocating memory
[[deprecated("Use LoadCompileShader insteead")]]
bool LoadShader(_In_ std::wstring fileName, _Out_ char* &data, _Out_ size_t &size);

// Read compiled shader to the blob (only cso and hlsl in not deployment build)
void LoadCompiledShader(_In_ const fs::path& fileName, _Out_ ID3DBlob* &blob, _In_ const std::string target = "", _In_ const std::string entry_point = "main");
void LoadCompiledShader(_In_ const fs::path& fileName, _Out_ Microsoft::WRL::ComPtr<ID3DBlob> &blob, _In_ const std::string& target = "", _In_ const std::string& entry_point = "main");

template <typename T>
bool CreatePSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &ps, const std::string& name = "")
bool CreatePSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * &device, _Out_opt_ T &ps, const std::string& name = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11PixelShader* shader{ nullptr };

LoadCompiledShader(fileName, shaderBlob, "ps_5_0");
Expand All @@ -42,9 +43,9 @@ bool CreatePSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
}

template <typename T>
bool CreateCSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &cs, const std::string& name = "")
bool CreateCSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * &device, _Out_opt_ T &cs, const std::string& name = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11ComputeShader* shader{ nullptr };

LoadCompiledShader(fileName, shaderBlob, "cs_5_0");
Expand All @@ -62,9 +63,9 @@ bool CreateCSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
}

template <typename T>
bool CreateDSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &ds, const std::string& name = "")
bool CreateDSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * &device, _Out_opt_ T &ds, const std::string& name = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11DomainShader* shader{ nullptr };

LoadCompiledShader(fileName, shaderBlob, "ds_5_0");
Expand All @@ -82,9 +83,9 @@ bool CreateDSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
}

template <typename T>
bool CreateHSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &hs, const std::string& name = "")
bool CreateHSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * &device, _Out_opt_ T &hs, const std::string& name = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11HullShader* shader{ nullptr };

LoadCompiledShader(fileName, shaderBlob, "hs_5_0");
Expand All @@ -102,9 +103,9 @@ bool CreateHSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
}

template <typename T>
bool CreateVSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &vs, const std::string& name = "")
bool CreateVSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * &device, _Out_opt_ T &vs, const std::string& name = "")
{
ID3DBlob* blob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> blob{ nullptr };

LoadCompiledShader(fileName, blob, "vs_5_0");

Expand All @@ -121,7 +122,7 @@ bool CreateVSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
template <typename T>
bool CreateGSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ T &gs, const std::string& name = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11GeometryShader* shader{ nullptr };

LoadCompiledShader(fileName, shaderBlob, "hs_5_0");
Expand All @@ -141,7 +142,7 @@ bool CreateGSFromFile(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device
template <typename Tvs, typename Til>
bool CreateVSAndInputLayout(_In_ const fs::path& fileName, _In_ ID3D11Device1 * device, _Out_opt_ Tvs &vs, const D3D11_INPUT_ELEMENT_DESC* ilDesc, const UINT numElements, _Out_opt_ Til &il, const std::string& vsname = "", const std::string& ilname = "")
{
ID3DBlob* shaderBlob{ nullptr };
Microsoft::WRL::ComPtr<ID3DBlob> shaderBlob{ nullptr };
ID3D11VertexShader* shader{ nullptr };
ID3D11InputLayout* input{ nullptr };

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 = 71;

const std::wstring strMajor = std::to_wstring(iMajor);
const std::wstring strMinor = std::to_wstring(iMinor);
Expand Down
Loading