Tilesets working.

This commit is contained in:
2025-03-05 14:04:50 -06:00
parent 40c97d6eb7
commit 43f943eb25
17 changed files with 129 additions and 34 deletions

View File

@ -14,6 +14,6 @@ in vec2 v_TextureCoord;
out vec4 FragColor;
void main() {
vec4 tColor = tilesetGetColor(0, v_TextureCoord);
vec4 tColor = tilesetGetColor(uint(TILESET_SLOT_ENTITIES), v_TextureCoord);
FragColor = vec4(1, 1, 1, 1) * tColor;
}

View File

@ -6,6 +6,7 @@
#include "../fragments/header.glsl"
#include "../data/transforms.glsl"
#include "../data/entities.glsl"
#include "../data/tilesets.glsl"
// Outputs to fragment shader
out vec2 v_TextureCoord;
@ -14,8 +15,10 @@ void main() {
uint instanceIndex = uint(gl_InstanceID);
uint indiceIndex = quadGetIndiceIndex(gl_VertexID);
vec4 tilesetUVs = tilesetGetUVsByIndex(uint(TILESET_SLOT_ENTITIES), 1u);
vec2 vert = entityGetVertice(instanceIndex, indiceIndex);
vec2 uv = quadGetTextureCoordinate(indiceIndex);
vec2 uv = quadGetTextureCoordinate(indiceIndex, tilesetUVs);
gl_Position = transforms.projection * transforms.view * vec4(vert, 0.0, 1.0);
v_TextureCoord = uv;

View File

@ -13,6 +13,7 @@
#include "entity_frag.glsl.h"
#include "display/shader/data/transforms.h"
#include "display/shader/data/entities.h"
#include "display/shader/data/tilesetshaderdata.h"
entityshader_t ENTITY_SHADER;
@ -36,13 +37,26 @@ void entityShaderInit() {
ENTITIES_BLOCK_NAME
);
ENTITY_SHADER.tilesetsBlock = shaderGetBlock(
&ENTITY_SHADER.shader,
TILESET_SHADER_DATA_BLOCK_NAME
);
// Uniforms
ENTITY_SHADER.tilesetTexturesUniform = shaderGetUniform(
&ENTITY_SHADER.shader,
TILESET_UNIFORM_TEXTURES_NAME
);
}
void entityShaderUse() {
shaderUse(&ENTITY_SHADER.shader);
shaderBufferBindToBlock(&TRANSFORMS_BUFFER, ENTITY_SHADER.transformsBlock);
shaderBufferBindToBlock(&ENTITIES_BUFFER, ENTITY_SHADER.entitiesBlock);
shaderBufferBindToBlock(
&TILESET_SHADER_DATA_BUFFER, ENTITY_SHADER.tilesetsBlock
);
tilesetShaderTexturesBind(ENTITY_SHADER.tilesetTexturesUniform);
}
void entityShaderDispose() {

View File

@ -10,8 +10,12 @@
typedef struct {
shader_t shader;
GLuint entitiesBlock;
GLuint transformsBlock;
GLuint tilesetsBlock;
GLuint tilesetTexturesUniform;
} entityshader_t;
extern entityshader_t ENTITY_SHADER;