Initial commit
This commit is contained in:
164
binaries/assets/shaders/multiQuad.vertex
Normal file
164
binaries/assets/shaders/multiQuad.vertex
Normal file
@@ -0,0 +1,164 @@
|
||||
#version 460
|
||||
|
||||
layout ( packed, binding = 0 ) uniform events
|
||||
{
|
||||
|
||||
vec2 mouse;
|
||||
|
||||
vec2 window;
|
||||
|
||||
};
|
||||
|
||||
layout ( packed, binding = 1 ) uniform orientation
|
||||
{
|
||||
|
||||
vec2 quadPosition;
|
||||
|
||||
};
|
||||
|
||||
struct quad{
|
||||
|
||||
vec2 position;
|
||||
|
||||
vec2 size;
|
||||
|
||||
vec3 color;
|
||||
|
||||
float zIndex;
|
||||
|
||||
float opacity;
|
||||
|
||||
int textureIndex;
|
||||
|
||||
int features;
|
||||
|
||||
int elementIndex;
|
||||
|
||||
//int characters[];
|
||||
|
||||
};
|
||||
|
||||
|
||||
layout( std430, binding = 2 ) readonly buffer meshes
|
||||
{
|
||||
|
||||
quad meshArray[100];
|
||||
|
||||
};
|
||||
|
||||
|
||||
layout(location = 0) in vec3 position;
|
||||
|
||||
layout(location = 1) in vec2 textureCoordinates;
|
||||
|
||||
layout(location = 2) in int meshIndex;
|
||||
|
||||
|
||||
|
||||
out vec2 vertex_textureCoordinates;
|
||||
|
||||
out float vertex_meshIndex;
|
||||
|
||||
|
||||
out vec3 quad_color;
|
||||
|
||||
out vec2 quad_position;
|
||||
|
||||
out vec2 quad_size;
|
||||
|
||||
flat out int quad_textureIndex;
|
||||
|
||||
flat out int quad_useTexture;
|
||||
|
||||
flat out float quad_opacity;
|
||||
|
||||
|
||||
int checkFeature( int features, int currentFeature ) {
|
||||
|
||||
if ( ( features & currentFeature ) > 0 ) {
|
||||
|
||||
return 1;
|
||||
|
||||
} else {
|
||||
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
quad currentMesh = meshArray[ meshIndex ];
|
||||
|
||||
|
||||
vec2 quadPosition = ( position.xy );
|
||||
|
||||
// vec2( -1.0, -1.0 ) -> vec2( 1.0, 1.0 )
|
||||
|
||||
|
||||
quadPosition += vec2( 1.0 );
|
||||
|
||||
quadPosition /= 2.0;
|
||||
|
||||
// vec2( 0, 0 ) -> vec2( 1.0, 1.0 )
|
||||
|
||||
|
||||
vec2 bias = vec2(0, 0); // ??????
|
||||
|
||||
|
||||
|
||||
quadPosition *= currentMesh.size;
|
||||
|
||||
quadPosition += currentMesh.position.xy;
|
||||
|
||||
quadPosition += bias;
|
||||
|
||||
quadPosition /= window;
|
||||
|
||||
|
||||
|
||||
|
||||
quadPosition *= 2.0;
|
||||
|
||||
quadPosition -= vec2( 1.0 );
|
||||
|
||||
|
||||
//quadPosition.y += .02;
|
||||
|
||||
quadPosition.y *= -1;
|
||||
|
||||
quad_color = currentMesh.color;
|
||||
|
||||
quad_size = currentMesh.size;
|
||||
|
||||
quad_position = currentMesh.position.xy;
|
||||
|
||||
quad_opacity = currentMesh.opacity;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_Position.xy = quadPosition;
|
||||
|
||||
|
||||
|
||||
const int useTexture = 1;
|
||||
|
||||
|
||||
quad_useTexture = checkFeature( currentMesh.features, useTexture );
|
||||
|
||||
quad_textureIndex = currentMesh.textureIndex;
|
||||
|
||||
vertex_textureCoordinates = textureCoordinates;
|
||||
|
||||
vertex_meshIndex = float( meshIndex );
|
||||
|
||||
gl_Position.w = 1.0;
|
||||
|
||||
|
||||
gl_Position.z = -currentMesh.zIndex / 10000;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user