mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 21:30:53 +00:00
Implement OpVectorExtract/InsertDynamic
This commit is contained in:
@@ -711,6 +711,44 @@ void ThreadState::StepNext(ShaderDebugState *state,
|
||||
|
||||
break;
|
||||
}
|
||||
case Op::VectorExtractDynamic:
|
||||
{
|
||||
OpVectorExtractDynamic extract(it);
|
||||
|
||||
ShaderVariable var = GetSrc(extract.vector);
|
||||
ShaderVariable idx = GetSrc(extract.index);
|
||||
|
||||
uint32_t comp = idx.value.u.x;
|
||||
|
||||
if(VarTypeByteSize(var.type) == 8)
|
||||
var.value.u64v[0] = var.value.u64v[comp];
|
||||
else
|
||||
var.value.uv[0] = var.value.uv[comp];
|
||||
|
||||
// result is now scalar
|
||||
var.columns = 1;
|
||||
|
||||
SetDst(state, extract.result, var);
|
||||
break;
|
||||
}
|
||||
case Op::VectorInsertDynamic:
|
||||
{
|
||||
OpVectorInsertDynamic insert(it);
|
||||
|
||||
ShaderVariable var = GetSrc(insert.vector);
|
||||
ShaderVariable scalar = GetSrc(insert.component);
|
||||
ShaderVariable idx = GetSrc(insert.index);
|
||||
|
||||
uint32_t comp = idx.value.u.x;
|
||||
|
||||
if(VarTypeByteSize(var.type) == 8)
|
||||
var.value.u64v[comp] = scalar.value.u64v[0];
|
||||
else
|
||||
var.value.uv[comp] = scalar.value.uv[0];
|
||||
|
||||
SetDst(state, insert.result, var);
|
||||
break;
|
||||
}
|
||||
case Op::Select:
|
||||
{
|
||||
OpSelect select(it);
|
||||
|
||||
@@ -563,6 +563,8 @@ void main()
|
||||
38 %test_38
|
||||
39 %test_39
|
||||
40 %test_40
|
||||
41 %test_41
|
||||
42 %test_42
|
||||
|
||||
; test OpVectorShuffle
|
||||
%test_0 = OpLabel
|
||||
@@ -1085,6 +1087,8 @@ void main()
|
||||
%scale_31 = OpFAdd %float %zerof %float_1_234
|
||||
%Color_31 = OpVectorTimesScalar %float4 %vec_31 %scale_31
|
||||
|
||||
)EOSHADER"
|
||||
R"EOSHADER(
|
||||
OpStore %Color %Color_31
|
||||
OpBranch %break
|
||||
|
||||
@@ -1187,6 +1191,37 @@ void main()
|
||||
OpStore %Color %Color_40
|
||||
OpBranch %break
|
||||
|
||||
%test_41 = OpLabel
|
||||
%a_41 = OpFAdd %float %zerof %float_15
|
||||
%b_41 = OpFAdd %float %zerof %float_4
|
||||
%c_41 = OpFAdd %float %zerof %float_neg4
|
||||
%d_41 = OpFAdd %float %zerof %float_1_234
|
||||
%x_41 = OpFAdd %float %zerof %float_neg15
|
||||
|
||||
%comp_41 = OpIAdd %uint %zerou %uint_3
|
||||
|
||||
%vec_41 = OpCompositeConstruct %float4 %a_41 %b_41 %c_41 %d_41
|
||||
%extracted_41 = OpVectorExtractDynamic %float %vec_41 %comp_41
|
||||
%Color_41 = OpCompositeConstruct %float4 %extracted_41 %extracted_41 %extracted_41 %extracted_41
|
||||
|
||||
OpStore %Color %Color_41
|
||||
OpBranch %break
|
||||
|
||||
%test_42 = OpLabel
|
||||
%a_42 = OpFAdd %float %zerof %float_15
|
||||
%b_42 = OpFAdd %float %zerof %float_4
|
||||
%c_42 = OpFAdd %float %zerof %float_neg4
|
||||
%d_42 = OpFAdd %float %zerof %float_1_234
|
||||
%x_42 = OpFAdd %float %zerof %float_neg15
|
||||
|
||||
%comp_42 = OpIAdd %uint %zerou %uint_2
|
||||
|
||||
%vec_42 = OpCompositeConstruct %float4 %a_42 %b_42 %c_42 %d_42
|
||||
%Color_42 = OpVectorInsertDynamic %float4 %vec_42 %x_42 %comp_42
|
||||
|
||||
OpStore %Color %Color_42
|
||||
OpBranch %break
|
||||
|
||||
%default = OpLabel
|
||||
OpStore %Color %float_0000
|
||||
OpBranch %break
|
||||
|
||||
Reference in New Issue
Block a user