法线
获取方法:世界法线 = dot(从法线贴图采样法线(rgb),世界TBN)
静态采样器:法线的采样方法各向异性是最好的
//Shader.hlsl
SamplerState TextureSampler: register(s0);
SamplerState AnisotropicSampler : register(s1);
SamplerComparisonState ShadowSampler : register(s2);
//对应C++ RootSign
void FStaticSamplerObject::BuildStaticSampler()
{
SamplerDescs.push_back(
CD3DX12_STATIC_SAMPLER_DESC(0,
D3D12_FILTER_MIN_MAG_MIP_POINT));
SamplerDescs.push_back(
CD3DX12_STATIC_SAMPLER_DESC(1,
D3D12_FILTER_ANISOTROPIC,
D3D12_TEXTURE_ADDRESS_MODE_WRAP,
D3D12_TEXTURE_ADDRESS_MODE_WRAP,
D3D12_TEXTURE_ADDRESS_MODE_WRAP,0,8));
//Shader
SamplerDescs.push_back(
CD3DX12_STATIC_SAMPLER_DESC(2,
D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT,
D3D12_TEXTURE_ADDRESS_MODE_BORDER,
D3D12_TEXTURE_ADDRESS_MODE_BORDER,
D3D12_TEXTURE_ADDRESS_MODE_BORDER,
0,
16.f,
D3D12_COMPARISON_FUNC_LESS_EQUAL,
D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK));
}
高光Specular
CubeMap:
准备六张图片