Skip to content
Draft
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
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ set(LIBRARY_SOURCES
Src/ModelLoadSDKMESH.cpp
Src/ModelLoadVBO.cpp
Src/NormalMapEffect.cpp
Src/NPREffect.cpp
Src/PBREffect.cpp
Src/PBREffectFactory.cpp
Src/pch.h
Expand All @@ -172,6 +173,7 @@ set(SHADER_SOURCES
Src/Shaders/EnvironmentMapEffect.fx
Src/Shaders/GenerateMips.hlsl
Src/Shaders/NormalMapEffect.fx
Src/Shaders/NPREffect.fx
Src/Shaders/PBREffect.fx
Src/Shaders/PostProcess.fx
Src/Shaders/RootSig.fxh
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Desktop_2022_Win10.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\GraphicsMemory.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -193,6 +194,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3E0E8608-CD9B-4C76-AF33-29CA38F2C9F0}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Desktop_2022_Win10.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\EffectPipelineStateDescription.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -376,6 +379,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="README.md" />
<None Include="Src\Shaders\Skinning.fxh">
<Filter>Src\Shaders\Shared</Filter>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Desktop_2026.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\GraphicsMemory.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -193,6 +194,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3E0E8608-CD9B-4C76-AF33-29CA38F2C9F0}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Desktop_2026.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\EffectPipelineStateDescription.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -376,6 +379,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="README.md" />
<None Include="Src\Shaders\Skinning.fxh">
<Filter>Src\Shaders\Shared</Filter>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKW_2022.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,7 @@
<ClCompile Include="Src\ModelLoadVBO.cpp" />
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -511,6 +512,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="GDKEditionCheck" BeforeTargets="PrepareForBuild" Condition="'$(GDKCrossPlatform)'=='true'">
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKW_2022.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\PBREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -346,6 +349,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\DualTextureEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKX_2022.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,7 @@
<ClCompile Include="Src\ModelLoadVBO.cpp" />
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -693,6 +694,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="GDKEditionCheck" BeforeTargets="PrepareForBuild" Condition="'$(GDKCrossPlatform)'=='true' AND '$(Platform)'=='x64'">
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKX_2022.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\PBREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -355,6 +358,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\DualTextureEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKX_2026.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,7 @@
<ClCompile Include="Src\ModelLoadVBO.cpp" />
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -693,6 +694,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="GDKEditionCheck" BeforeTargets="PrepareForBuild" Condition="'$(GDKCrossPlatform)'=='true' AND '$(Platform)'=='x64'">
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDKX_2026.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\PBREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -355,6 +358,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\DualTextureEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDK_2022.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,7 @@
<ClCompile Include="Src\ModelLoadVBO.cpp" />
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -678,6 +679,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="EnsureGDK" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(Platform)', 'Gaming\..+\.x64'))">
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_GDK_2022.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\PBREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down Expand Up @@ -355,6 +358,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\DualTextureEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Windows10_2022.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@
<ClCompile Include="Src\ModelLoadVBO.cpp" />
<ClCompile Include="Src\Mouse.cpp" />
<ClCompile Include="Src\NormalMapEffect.cpp" />
<ClCompile Include="Src\NPREffect.cpp" />
<ClCompile Include="Src\PBREffect.cpp" />
<ClCompile Include="Src\PBREffectFactory.cpp" />
<ClCompile Include="Src\pch.cpp">
Expand Down Expand Up @@ -195,6 +196,11 @@
<FileType>Document</FileType>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Src\Shaders\NPREffect.fx">
<FileType>Document</FileType>
</None>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{945B8F0E-AE5F-447C-933A-9D069532D3E4}</ProjectGuid>
<Keyword>StaticLibrary</Keyword>
Expand Down
6 changes: 6 additions & 0 deletions DirectXTK_Windows10_2022.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,9 @@
<None Include="Src\Shaders\DebugEffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="Src\Shaders\NPREffect.fx">
<Filter>Src\Shaders</Filter>
</None>
<None Include="README.md" />
<None Include="Src\Shaders\Skinning.fxh">
<Filter>Src\Shaders\Shared</Filter>
Expand Down Expand Up @@ -350,6 +353,9 @@
<ClCompile Include="Src\NormalMapEffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\NPREffect.cpp">
<Filter>Src</Filter>
</ClCompile>
<ClCompile Include="Src\EffectPipelineStateDescription.cpp">
<Filter>Src</Filter>
</ClCompile>
Expand Down
72 changes: 72 additions & 0 deletions Inc/Effects.h
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,78 @@ namespace DirectX
};


//------------------------------------------------------------------------------
// Built-in shader for non-photorealistic rendering (cel shading, Gooch shading).
class NPREffect : public IEffect, public IEffectMatrices, public IEffectLights
{
public:
enum Mode : uint32_t
{
Mode_Cel = 0, // Cel (toon) shading
Mode_Gooch, // Gooch shading
};

DIRECTX_TOOLKIT_API NPREffect(
_In_ ID3D12Device* device,
uint32_t effectFlags,
const EffectPipelineStateDescription& pipelineDescription,
Mode nprMode = Mode_Cel);

DIRECTX_TOOLKIT_API NPREffect(NPREffect&&) noexcept;
DIRECTX_TOOLKIT_API NPREffect& operator= (NPREffect&&) noexcept;

NPREffect(NPREffect const&) = delete;
NPREffect& operator= (NPREffect const&) = delete;

DIRECTX_TOOLKIT_API ~NPREffect() override;

// IEffect methods.
DIRECTX_TOOLKIT_API void __cdecl Apply(_In_ ID3D12GraphicsCommandList* commandList) override;

// Camera settings.
DIRECTX_TOOLKIT_API void XM_CALLCONV SetWorld(FXMMATRIX value) override;
DIRECTX_TOOLKIT_API void XM_CALLCONV SetView(FXMMATRIX value) override;
DIRECTX_TOOLKIT_API void XM_CALLCONV SetProjection(FXMMATRIX value) override;
DIRECTX_TOOLKIT_API void XM_CALLCONV SetMatrices(FXMMATRIX world, CXMMATRIX view, CXMMATRIX projection) override;

// Material settings.
DIRECTX_TOOLKIT_API void XM_CALLCONV SetDiffuseColor(FXMVECTOR value);
DIRECTX_TOOLKIT_API void XM_CALLCONV SetSpecularColor(FXMVECTOR value);
DIRECTX_TOOLKIT_API void __cdecl SetSpecularPower(float value);
DIRECTX_TOOLKIT_API void __cdecl DisableSpecular();
DIRECTX_TOOLKIT_API void __cdecl SetAlpha(float value);
DIRECTX_TOOLKIT_API void XM_CALLCONV SetColorAndAlpha(FXMVECTOR value);

// Light settings.
void XM_CALLCONV SetLightDirection(int whichLight, FXMVECTOR value) override;
DIRECTX_TOOLKIT_API void __cdecl EnableDefaultLighting() override;

static constexpr int MaxDirectionalLights = 1;

// Texture settings.
// TODO: Implement texture settings.

// Cel shading settings.
DIRECTX_TOOLKIT_API void __cdecl SetCelShaderBands(int bands);

// Gooch shading settings.
DIRECTX_TOOLKIT_API void XM_CALLCONV SetGoochCoolColor(FXMVECTOR value, float alpha = 0.25f);
DIRECTX_TOOLKIT_API void XM_CALLCONV SetGoochWarmColor(FXMVECTOR value, float beta = 0.25f);

private:
// Private implementation.
class Impl;

std::unique_ptr<Impl> pImpl;

// Unsupported interface methods.
DIRECTX_TOOLKIT_API void XM_CALLCONV SetAmbientLightColor(FXMVECTOR value) override;
DIRECTX_TOOLKIT_API void __cdecl SetLightEnabled(int whichLight, bool value) override;
DIRECTX_TOOLKIT_API void XM_CALLCONV SetLightDiffuseColor(int whichLight, FXMVECTOR value) override;
DIRECTX_TOOLKIT_API void XM_CALLCONV SetLightSpecularColor(int whichLight, FXMVECTOR value) override;
};


//------------------------------------------------------------------------------
// Abstract interface to factory texture resources
class DIRECTX_TOOLKIT_API IEffectTextureFactory
Expand Down
Loading
Loading