Working on shader stuff
This commit is contained in:
10
src/duskgl/display/shader/data/CMakeLists.txt
Normal file
10
src/duskgl/display/shader/data/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
||||
# Copyright (c) 2025 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
# Sources
|
||||
target_sources(${DUSK_TARGET_NAME}
|
||||
PRIVATE
|
||||
transforms.c
|
||||
)
|
7
src/duskgl/display/shader/data/entities.h
Normal file
7
src/duskgl/display/shader/data/entities.h
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
46
src/duskgl/display/shader/data/transforms.c
Normal file
46
src/duskgl/display/shader/data/transforms.c
Normal file
@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "transforms.h"
|
||||
#include "display/window.h"
|
||||
|
||||
shaderbuffer_t TRANSFORMS_BUFFER;
|
||||
transformsdata_t TRANSFORMS_DATA;
|
||||
|
||||
void transformsInit() {
|
||||
shaderBufferInit(&TRANSFORMS_BUFFER, sizeof(transformsdata_t));
|
||||
|
||||
glm_mat4_identity(TRANSFORMS_DATA.projection);
|
||||
glm_mat4_identity(TRANSFORMS_DATA.view);
|
||||
}
|
||||
|
||||
void transformsUpdate() {
|
||||
TRANSFORMS_DATA.resolution[0] = WINDOW_WIDTH;
|
||||
TRANSFORMS_DATA.resolution[1] = WINDOW_HEIGHT;
|
||||
|
||||
glm_perspective(
|
||||
glm_rad(45.0f),
|
||||
TRANSFORMS_DATA.resolution[0] / TRANSFORMS_DATA.resolution[1],
|
||||
0.1f,
|
||||
100.0f,
|
||||
TRANSFORMS_DATA.projection
|
||||
);
|
||||
|
||||
glm_lookat(
|
||||
(vec3){ 3, 3, 3 },
|
||||
(vec3){ 0, 0, 0 },
|
||||
(vec3){ 0, 1, 0 },
|
||||
TRANSFORMS_DATA.view
|
||||
);
|
||||
|
||||
shaderBufferBind(&TRANSFORMS_BUFFER);
|
||||
shaderBufferSetData(&TRANSFORMS_BUFFER, &TRANSFORMS_DATA);
|
||||
}
|
||||
|
||||
void transformsDispose() {
|
||||
shaderBufferDispose(&TRANSFORMS_BUFFER);
|
||||
}
|
35
src/duskgl/display/shader/data/transforms.h
Normal file
35
src/duskgl/display/shader/data/transforms.h
Normal file
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "display/shader/shaderbuffer.h"
|
||||
|
||||
#define TRANSFORMS_BLOCK_NAME "b_Transforms"
|
||||
|
||||
typedef struct {
|
||||
mat4 projection;
|
||||
mat4 view;
|
||||
vec2 resolution;
|
||||
} transformsdata_t;
|
||||
|
||||
extern shaderbuffer_t TRANSFORMS_BUFFER;
|
||||
extern transformsdata_t TRANSFORMS_DATA;
|
||||
|
||||
/**
|
||||
* Initializes the transforms buffer and data.
|
||||
*/
|
||||
void transformsInit();
|
||||
|
||||
/**
|
||||
* Updates the transforms buffer with the current data.
|
||||
*/
|
||||
void transformsUpdate();
|
||||
|
||||
/**
|
||||
* Destroys the transforms buffer.
|
||||
*/
|
||||
void transformsDispose();
|
Reference in New Issue
Block a user