提交 cea5bd2a 编写于 作者: GamebabyRockSun_QQ's avatar GamebabyRockSun_QQ

修正18号示例中的小bug

上级 792a6172
......@@ -53,6 +53,7 @@ float3 CalcPerPixelNormal(float2 vTexcoord, float3 vVertNormal, float3 vVertTang
float3 vBumpNormal = (float3)g_t2dNormalMap.Sample(g_SampleWrap, vTexcoord);
// 符号化还原
vBumpNormal = 2.0f * vBumpNormal - 1.0f;
vBumpNormal.z = -vBumpNormal.z;
return mul(vBumpNormal, mTangentSpaceToWorldSpace);
}
......@@ -157,6 +158,7 @@ float4 PSMain(PSInput input) : SV_TARGET
float4 fPixelColor = diffuseColor;
float fDepthValue = g_t2dShadowMap.Sample(g_SampleClamp, v2LightCoord);
vLightSpacePos.z -= 0.05f;
if ( vLightSpacePos.z < fDepthValue )
{
fPixelColor += v4AmbientColor;
......@@ -171,7 +173,7 @@ float4 PSMain(PSInput input) : SV_TARGET
{
fPixelColor -= v4AmbientColor;
}
return fPixelColor;
return fPixelColor;
//return float4(vLightSpacePos.z, vLightSpacePos.z, vLightSpacePos.z, 1.0f);
//return vLightSpacePos;
......
......@@ -151,6 +151,10 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</FxCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Commons\GRS_D3D12_Utility.h" />
<ClInclude Include="..\Commons\GRS_Mem.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
......
......@@ -30,4 +30,12 @@
<Filter>Shader</Filter>
</FxCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Commons\GRS_D3D12_Utility.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\Commons\GRS_Mem.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -112,7 +112,11 @@ float4 PSMain( PSInput stPSInput ) : SV_TARGET
// 中间向量(入射光与法线的角平分线)
float3 H = normalize( V + L );
float distance = length( g_v4LightPos[i].xyz - stPSInput.g_v4PosWorld.xyz );
float attenuation = 1.0 / ( distance * distance );
//float attenuation = 1.0 / ( distance * distance );
// 已经Gamma矫正了,就不要二次反比衰减了,单次衰减就可以了
float attenuation = 1.0 / distance ;
float3 radiance = g_v4LightClr[i].xyz * attenuation;
// Cook-Torrance光照模型 BRDF
......
......@@ -109,3 +109,10 @@
&emsp;&emsp;该示例展示了使用Assimp导入动画文件,并用基本的D3D12渲染框架渲染,还没有加任何的光照效果,只是简单的展示3D骨骼动画的基本原理。
![16233246465942021610193211](ScreenShot/16233246465942021610193211.gif)
# 18-PBR-Base-Point-Lights
&emsp;&emsp;该示例展示基础的PBR渲染过程,重点在PS_PBR_Base_Point_Lights.hlsl文件中。基于物理的渲染(PBR)是现代渲染的主流技术,与传统光照纯几何式的光照渲染方式已经大相径庭,本系列示例即直接跳过传统光照,直接进入现代化的PBR渲染的学习与展示。本例中用了8个点光源,照明了一个球体,使用了PBR中比较流行的“金属工作流”渲染模型,即主要材质参数是金属度、粗糙度、反射率等,其中反射率模拟了8种金属,可以使用Tab键切换反射率,用A、Q键对-控制金属度、W、E键对-控制粗糙度、E、D键对-控制环境遮挡系数。由于使用的是点光源,这个示例在纯金属最低粗糙度时,仅有高光点,这其实是不对的。例子的真实目的是给大家展示基本的PBR光照方程变成代码的样子。最终需要注意的是,学习D3D12接口编程的终极目的是掌握现代渲染算法和技术,因此后续的例子都希望大家对前面各个例子中的一些D3D12基本操作都有了牢固的掌握,或者说D3D12本身不应再成为大家学习的障碍,而是一个有力的工具!如果前序例子还有疑问或者我可能没有交代清楚的细节,大家都可以随时到本人博客:[Gamebaby Rock Sun的博客](https://blog.csdn.net/u014038143?spm=1000.2115.3001.5343) 留言提问。本示例运行效果截图如下(一个略显粗糙的金色金属球,可以通过按键调整至此效果):
![image-20210627151630910](ScreenShot/image-20210627151630910.png)
......@@ -94,3 +94,9 @@ D3D12 ERROR: ID3D12CommandQueue::Present: Resource state (0x800: D3D12_RESOURCE_
2021-6-22
1、添加第18个示例,18-PBR-Base-Point-Lights,开启高级光照之旅,直接略过无聊的传统光照;
2021-6-25
1、修正了第18号示例Shader中的BUG,之前用的是二次衰减,因为开始已经Gamma矫正了,二次衰减的话会使衰减过度,所以改成1次衰减,这样Gamma矫正的2.2次方近似等于二次方了,这样相当于已经二次衰减了。
2、14号示例还是没有修正好,先提交,大家可以先略过;重点是修改了18号示例中光线衰减计算的错误,并且更新了18号示例的说明;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册