ULRE/ShaderLibrary/Std2D/RectTexture2DArray.mtl

80 lines
1.3 KiB
Plaintext
Raw Normal View History

2023-10-07 20:09:16 +08:00
#Material
Name RectTexture2DArray
Base Std2D
Prim SolidRectangles,WireRectangles
#MaterialInstance
Length 16
Stage Fragment
Code
{
uvec4 id;
}
#VertexInput
vec4 TexCoord
2023-10-07 20:09:16 +08:00
#Vertex
2023-10-07 20:09:16 +08:00
Output
{
vec4 TexCoord
}
Code
{
void main()
{
HandoverMI();
Output.TexCoord=TexCoord;
gl_Position=GetPosition2D();
}
}
#Geometry
in points
out triangle_strip,4
Output
{
vec2 TexCoord
}
Code
{
void main()
{
vec2 vlt=gl_in[0].gl_Position.xy;
vec2 vrb=gl_in[0].gl_Position.zw;
vec2 tlt=Input[0].TexCoord.xy;
vec2 trb=Input[0].TexCoord.zw;
HandoverMI();gl_Position=vec4(vlt, vec2(0,1));Output.TexCoord=tlt; EmitVertex();
HandoverMI();gl_Position=vec4(vlt.x, vrb.y, vec2(0,1));Output.TexCoord=vec2(tlt.x,trb.y); EmitVertex();
HandoverMI();gl_Position=vec4(vrb.x, vlt.y, vec2(0,1));Output.TexCoord=vec2(trb.x,tlt.y); EmitVertex();
HandoverMI();gl_Position=vec4(vrb, vec2(0,1));Output.TexCoord=trb; EmitVertex();
EndPrimitive();
}
}
#Fragment
sampler2DArray TextureBaseColor
2023-10-07 20:09:16 +08:00
Output
{
vec4 FragColor;
2023-10-07 20:09:16 +08:00
}
Code
{
void main()
{
MaterialInstance mi=GetMI();
FragColor=texture(TextureBaseColor,vec3(Input.TexCoord,mi.id.x));
2023-10-07 20:09:16 +08:00
}
}