Before this change, the example is rejected by DXC:
$ dxc -T ps_6_0 hlsl.namespace.frag
hlsl.namespace.frag:22:73: error: call to non-static member function
without an object argument
return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf;
~~~~~~~~~~~~^~~~~~
The call to the class member function requires an object, or we ned to
make the function static. This update makes the function static.
This also fixes SPIR-V validation: without this change the call
to that getVec does not have enough arguments:
error: line 69: OpFunctionCall Function <id>'s parameter count does not
match the argument count.
%43 = OpFunctionCall %v4float %N2__N3__C1__getVec_
24 lines
462 B
GLSL
24 lines
462 B
GLSL
static float4 v1;
|
|
static float4 v2;
|
|
|
|
namespace N1 {
|
|
float4 getVec() { return v1; }
|
|
}
|
|
|
|
namespace N2 {
|
|
static float gf;
|
|
float4 getVec() { return v2; }
|
|
namespace N3 {
|
|
float4 getVec() { return v2; }
|
|
|
|
class C1 {
|
|
static float4 getVec() { return v2; }
|
|
};
|
|
}
|
|
}
|
|
|
|
float4 main() : SV_Target0
|
|
{
|
|
return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf;
|
|
}
|