-
Notifications
You must be signed in to change notification settings - Fork 844
[SPIRV] Useless copy of all VtxInput elements #2381
Copy link
Copy link
Closed
Labels
spirvWork related to SPIR-VWork related to SPIR-V
Description
I have this shader:
#define Bool bool
#define Int int
#define UInt uint
#define Flt float
#define VecI2 int2
#define VecI int3
#define VecI4 int4
#define VecU2 uint2
#define VecU uint3
#define VecU4 uint4
#define Vec2 float2
#define Vec float3
#define Vec4 float4
#define Half min16float
#define VecH2 min16float2
#define VecH min16float3
#define VecH4 min16float4
#define MatrixH3 min16float3x3
#define MatrixH min16float4x3
#define MatrixH4 min16float4x4
struct VtxInput // Vertex Input, use this class to access vertex data in vertex shaders
{
Vec4 _pos :ATTR0 ;
VecH _hlp :ATTR1 ;
VecH _nrm :ATTR2 ;
VecH4 _tan :ATTR3 ;
Vec2 _tex :ATTR4 ;
Vec2 _tex1 :ATTR5 ;
Vec2 _tex2 :ATTR6 ;
Half _size :ATTR7 ;
Vec4 _bone :ATTR8 ;
VecH4 _weight :ATTR9 ;
VecH4 _material:ATTR10;
VecH4 _color :ATTR11;
VecH4 color1()
{
return VecH4(_color.rgb+1, _color.a);
}
};
void Draw2DTexCol_VS(VtxInput vtx,
out VecH4 outCol:COLOR ,
out Vec4 outVtx:POSITION)
{
outCol=vtx.color1();
outVtx=0;
}
void Draw2DTexCol_PS()
{}
After converting to Spir-V to GLSL using https://github.com/KhronosGroup/SPIRV-Cross/
It gives me:
Shader:Draw2DTexCol VS
struct VtxInput
{
vec4 _pos;
mediump vec3 _hlp;
mediump vec3 _nrm;
mediump vec4 _tan;
vec2 _tex;
vec2 _tex1;
vec2 _tex2;
mediump float _size;
vec4 _bone;
mediump vec4 _weight;
mediump vec4 _material;
mediump vec4 _color;
};
layout(location=0)in vec4 ATTR0;
layout(location=1)in mediump vec3 ATTR1;
layout(location=2)in mediump vec3 ATTR2;
layout(location=3)in mediump vec4 ATTR3;
layout(location=4)in vec2 ATTR4;
layout(location=5)in vec2 ATTR5;
layout(location=6)in vec2 ATTR6;
layout(location=7)in mediump float ATTR7;
layout(location=8)in vec4 ATTR8;
layout(location=9)in mediump vec4 ATTR9;
layout(location=10)in mediump vec4 ATTR10;
layout(location=11)in mediump vec4 ATTR11;
out vec4 IO0;
out vec4 IO1;
void main()
{
VtxInput param_var_vtx=VtxInput(ATTR0,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6,ATTR7,ATTR8,ATTR9,ATTR10,ATTR11);
IO0=vec4(param_var_vtx._color.xyz+vec3(1.0),param_var_vtx._color.w);
IO1=vec4(0.0);
}
It performs a useless copy of all VtxInput elements:
VtxInput param_var_vtx=VtxInput(ATTR0,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6,ATTR7,ATTR8,ATTR9,ATTR10,ATTR11);
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
spirvWork related to SPIR-VWork related to SPIR-V