Moved a few things to shader buffers, added some bugs that I have to fix
This commit is contained in:
@ -21,8 +21,8 @@ void RenderManager::init() {
|
||||
this->lockSimpleTextured = this->shaderManager.lockShader<SimpleTexturedShader>();
|
||||
this->simpleTexturedShader = this->shaderManager.getShader<SimpleTexturedShader>(this->lockSimpleTextured);
|
||||
|
||||
this->lockUIShaderProgram = this->shaderManager.lockShader<SimpleTexturedShader>();
|
||||
this->uiShader = this->shaderManager.getShader<SimpleTexturedShader>(this->lockUIShaderProgram);
|
||||
this->lockUIShaderProgram = this->shaderManager.lockShader<UIShader>();
|
||||
this->uiShader = this->shaderManager.getShader<UIShader>(this->lockUIShaderProgram);
|
||||
|
||||
this->lockFontShader = this->shaderManager.lockShader<FontShader>();
|
||||
this->fontShader = this->shaderManager.getShader<FontShader>(this->lockFontShader);
|
||||
@ -78,6 +78,6 @@ void RenderManager::update() {
|
||||
|
||||
RenderManager::~RenderManager() {
|
||||
this->shaderManager.releaseShader<SimpleTexturedShader>(this->lockSimpleTextured);
|
||||
this->shaderManager.releaseShader<SimpleTexturedShader>(this->lockUIShaderProgram);
|
||||
this->shaderManager.releaseShader<UIShader>(this->lockUIShaderProgram);
|
||||
this->shaderManager.releaseShader<FontShader>(this->lockFontShader);
|
||||
}
|
@ -27,7 +27,7 @@ namespace Dawn {
|
||||
public:
|
||||
BackBufferRenderTarget backBuffer;
|
||||
SimpleTexturedShader *simpleTexturedShader = nullptr;
|
||||
SimpleTexturedShader *uiShader = nullptr;
|
||||
UIShader *uiShader = nullptr;
|
||||
FontShader *fontShader = nullptr;
|
||||
ExampleFont defaultFont;
|
||||
|
||||
|
@ -9,4 +9,5 @@ target_sources(${DAWN_TARGET_NAME}
|
||||
FontShader.cpp
|
||||
SimpleTexturedShader.cpp
|
||||
SimpleBillboardedShader.cpp
|
||||
UIShader.cpp
|
||||
)
|
||||
|
@ -10,9 +10,6 @@
|
||||
namespace Dawn {
|
||||
class SimpleTexturedShader : public Shader {
|
||||
public:
|
||||
shaderparameter_t paramProjection;
|
||||
shaderparameter_t paramView;
|
||||
|
||||
shaderparameter_t paramModel;
|
||||
shaderparameter_t paramColor;
|
||||
shaderparameter_t paramTexture;
|
||||
|
61
src/dawnopengl/display/shader/shaders/UIShader.cpp
Normal file
61
src/dawnopengl/display/shader/shaders/UIShader.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
// Copyright (c) 2023 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "UIShader.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
void UIShader::compile() {
|
||||
#if DAWN_OPENGL_GLSL
|
||||
this->compileShader(
|
||||
{
|
||||
{ "aPos", 0 },
|
||||
{ "aTexCoord", 1 }
|
||||
},
|
||||
// Vertex Shader
|
||||
"#version 330 core\n"
|
||||
"layout (location = 0) in vec3 aPos;\n"
|
||||
"layout (location = 1) in vec2 aTexCoord;\n"
|
||||
|
||||
"layout (std140) uniform ub_UICanvas {\n"
|
||||
"mat4 u_View;\n"
|
||||
"mat4 u_Projection;\n"
|
||||
"};"
|
||||
|
||||
"uniform mat4 u_Model;\n"
|
||||
|
||||
"out vec2 o_TextCoord;\n"
|
||||
"void main() {\n"
|
||||
"gl_Position = u_Projection * u_View * u_Model * vec4(aPos, 1.0);\n"
|
||||
"o_TextCoord = vec2(aTexCoord.x, aTexCoord.y);\n"
|
||||
"}",
|
||||
|
||||
// Fragment Shader
|
||||
"#version 330 core\n"
|
||||
|
||||
"in vec2 o_TextCoord;\n"
|
||||
"out vec4 o_Color;\n"
|
||||
"uniform vec4 u_Color;\n"
|
||||
"uniform bool u_HasTexture;\n"
|
||||
"uniform sampler2D u_Text;\n"
|
||||
|
||||
"void main() {\n"
|
||||
"if(u_HasTexture) {\n"
|
||||
"o_Color = texture(u_Text, o_TextCoord) * u_Color;\n"
|
||||
"} else {\n"
|
||||
"o_Color = u_Color;"
|
||||
"}\n"
|
||||
"}\n"
|
||||
);
|
||||
#else
|
||||
#error Shader Type must be GLSL
|
||||
#endif
|
||||
|
||||
this->paramModel = this->getParameterByName("u_Model");
|
||||
this->paramColor = this->getParameterByName("u_Color");
|
||||
this->paramTexture = this->getParameterByName("u_Text");
|
||||
this->paramHasTexture = this->getParameterByName("u_HasTexture");
|
||||
this->bufferUiCanvas = this->getBufferLocationByName("ub_UICanvas");
|
||||
}
|
@ -4,11 +4,30 @@
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "SimpleTexturedShader.hpp"
|
||||
#include "display/shader/buffers/RenderPipelineShaderBuffer.hpp"
|
||||
#include "display/shader/Shader.hpp"
|
||||
|
||||
#define UI_SHADER_PROGRAM_PRIORITY 100
|
||||
|
||||
namespace Dawn {
|
||||
class UIShader : public SimpleTexturedShader {
|
||||
struct UICanvasShaderParameterBufferData {
|
||||
glm::mat4 projection;
|
||||
glm::mat4 view;
|
||||
};
|
||||
|
||||
class UICanvasShaderParameterBuffer :
|
||||
public ShaderParameterBuffer<struct UICanvasShaderParameterBufferData>
|
||||
{
|
||||
};
|
||||
|
||||
class UIShader : public Shader {
|
||||
public:
|
||||
shaderparameter_t paramModel;
|
||||
shaderparameter_t paramColor;
|
||||
shaderparameter_t paramTexture;
|
||||
shaderparameter_t paramHasTexture;
|
||||
shaderbufferlocation_t bufferUiCanvas;
|
||||
|
||||
void compile() override;
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user