mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-09 21:31:04 +00:00
shader_recompiler: Initialize all ClipDistance and CullDistance values (#3478)
* Initialize all values in clip_distances Co-Authored-By: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> * Clang * Apply initializer for CullDistance --------- Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
This commit is contained in:
@@ -540,14 +540,20 @@ void EmitContext::DefineInputs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EmitContext::DefineVertexBlock() {
|
void EmitContext::DefineVertexBlock() {
|
||||||
|
const std::array<Id, 8> zero{f32_zero_value, f32_zero_value, f32_zero_value, f32_zero_value,
|
||||||
|
f32_zero_value, f32_zero_value, f32_zero_value, f32_zero_value};
|
||||||
output_position = DefineVariable(F32[4], spv::BuiltIn::Position, spv::StorageClass::Output);
|
output_position = DefineVariable(F32[4], spv::BuiltIn::Position, spv::StorageClass::Output);
|
||||||
if (info.stores.GetAny(IR::Attribute::ClipDistance)) {
|
if (info.stores.GetAny(IR::Attribute::ClipDistance)) {
|
||||||
clip_distances = DefineVariable(TypeArray(F32[1], ConstU32(8U)), spv::BuiltIn::ClipDistance,
|
const Id type{TypeArray(F32[1], ConstU32(8U))};
|
||||||
spv::StorageClass::Output);
|
const Id initializer{ConstantComposite(type, zero)};
|
||||||
|
clip_distances = DefineVariable(type, spv::BuiltIn::ClipDistance, spv::StorageClass::Output,
|
||||||
|
initializer);
|
||||||
}
|
}
|
||||||
if (info.stores.GetAny(IR::Attribute::CullDistance)) {
|
if (info.stores.GetAny(IR::Attribute::CullDistance)) {
|
||||||
cull_distances = DefineVariable(TypeArray(F32[1], ConstU32(8U)), spv::BuiltIn::CullDistance,
|
const Id type{TypeArray(F32[1], ConstU32(8U))};
|
||||||
spv::StorageClass::Output);
|
const Id initializer{ConstantComposite(type, zero)};
|
||||||
|
cull_distances = DefineVariable(type, spv::BuiltIn::CullDistance, spv::StorageClass::Output,
|
||||||
|
initializer);
|
||||||
}
|
}
|
||||||
if (info.stores.GetAny(IR::Attribute::RenderTargetId)) {
|
if (info.stores.GetAny(IR::Attribute::RenderTargetId)) {
|
||||||
output_layer = DefineVariable(S32[1], spv::BuiltIn::Layer, spv::StorageClass::Output);
|
output_layer = DefineVariable(S32[1], spv::BuiltIn::Layer, spv::StorageClass::Output);
|
||||||
|
|||||||
Reference in New Issue
Block a user