Tilesets working.
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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() {
|
||||
|
@ -10,8 +10,12 @@
|
||||
|
||||
typedef struct {
|
||||
shader_t shader;
|
||||
|
||||
GLuint entitiesBlock;
|
||||
GLuint transformsBlock;
|
||||
GLuint tilesetsBlock;
|
||||
|
||||
GLuint tilesetTexturesUniform;
|
||||
} entityshader_t;
|
||||
|
||||
extern entityshader_t ENTITY_SHADER;
|
||||
|
Reference in New Issue
Block a user