DX12: geometry clipping for mirrors and portals.

This commit is contained in:
Artem Kharytoniuk
2017-12-16 14:50:53 +01:00
parent b68e1600ac
commit a530367647
9 changed files with 259 additions and 20 deletions

View File

@@ -588,9 +588,15 @@ static ID3D12PipelineState* create_pipeline(const Vk_Pipeline_Def& def) {
extern unsigned char single_texture_vs[];
extern long long single_texture_vs_size;
extern unsigned char single_texture_clipping_plane_vs[];
extern long long single_texture_clipping_plane_vs_size;
extern unsigned char multi_texture_vs[];
extern long long multi_texture_vs_size;
extern unsigned char multi_texture_clipping_plane_vs[];
extern long long multi_texture_clipping_plane_vs_size;
extern unsigned char single_texture_ps[];
extern long long single_texture_ps_size;
@@ -604,14 +610,14 @@ static ID3D12PipelineState* create_pipeline(const Vk_Pipeline_Def& def) {
D3D12_SHADER_BYTECODE ps_bytecode;
if (def.shader_type == Vk_Shader_Type::single_texture) {
if (def.clipping_plane) {
vs_bytecode = CD3DX12_SHADER_BYTECODE(single_texture_vs, single_texture_vs_size);
vs_bytecode = CD3DX12_SHADER_BYTECODE(single_texture_clipping_plane_vs, single_texture_clipping_plane_vs_size);
} else {
vs_bytecode = CD3DX12_SHADER_BYTECODE(single_texture_vs, single_texture_vs_size);
}
ps_bytecode = CD3DX12_SHADER_BYTECODE(single_texture_ps, single_texture_ps_size);
} else if (def.shader_type == Vk_Shader_Type::multi_texture_mul) {
if (def.clipping_plane) {
vs_bytecode = CD3DX12_SHADER_BYTECODE(multi_texture_vs, multi_texture_vs_size);
vs_bytecode = CD3DX12_SHADER_BYTECODE(multi_texture_clipping_plane_vs, multi_texture_clipping_plane_vs_size);
} else {
vs_bytecode = CD3DX12_SHADER_BYTECODE(multi_texture_vs, multi_texture_vs_size);
}