Stuff I've fixed so far.

This commit is contained in:
2023-01-19 20:24:43 -08:00
parent e60002b8dc
commit 97fd59f28d
12 changed files with 72 additions and 43 deletions

View File

@ -14,13 +14,12 @@ RenderManager::RenderManager(DawnGame *game) :
backBuffer(*this),
renderPipeline(this)
{
this->simpleShader = new SimpleTexturedShader();
this->uiShader = new UIShader();
}
void RenderManager::init() {
this->renderPipeline.init();
this->simpleShader->compile();
this->simpleShader.compile();
this->uiShader->compile();
// Prepare the initial values
@ -38,10 +37,6 @@ RenderPipeline * RenderManager::getRenderPipeline() {
return &this->renderPipeline;
}
Shader * RenderManager::getDefaultShader() {
return this->simpleShader;
}
UIShader * RenderManager::getUIShader() {
return this->uiShader;
}
@ -67,6 +62,5 @@ void RenderManager::update() {
}
RenderManager::~RenderManager() {
delete this->simpleShader;
delete this->uiShader;
}

View File

@ -16,7 +16,7 @@ namespace Dawn {
public:
BackBufferRenderTarget backBuffer;
SimpleTexturedShader *simpleShader;
SimpleTexturedShader simpleShader;
UIShader *uiShader;
/**
@ -26,7 +26,6 @@ namespace Dawn {
RenderTarget * getBackBuffer() override;
RenderPipeline * getRenderPipeline() override;
Shader * getDefaultShader() override;
UIShader * getUIShader() override;
void setRenderFlags(renderflag_t renderFlags) override;
void init() override;

View File

@ -0,0 +1,43 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#include "SimpleTexturedShader.hpp"
using namespace Dawn;
void SimpleTexturedShader::compile() {
this->program.compile();
}
std::vector<struct ShaderPass> SimpleTexturedShader::getItemPasses(
MeshRenderer *mesh, Material *material
) {
SimpleTexturedMaterial *simpleMaterial = dynamic_cast<SimpleTexturedMaterial*>(material);
assertNotNull(simpleMaterial);
struct ShaderPass onlyPass;
onlyPass.shaderProgram = &program;
onlyPass.colorValues[program.paramColor] = simpleMaterial->color;
onlyPass.matrixValues[program.paramModel] = mesh->transform->getWorldTransform();
if(simpleMaterial->texture != nullptr) {
onlyPass.boolValues[program.paramHasTexture] = true;
onlyPass.textureSlots[0] = simpleMaterial->texture;
onlyPass.textureValues[program.paramTexture] = 0;
} else {
onlyPass.boolValues[program.paramHasTexture] = false;
}
std::vector<struct ShaderPass> passes;
passes.push_back(onlyPass);
return passes;
}
void SimpleTexturedShader::setGlobalParameters(
glm::mat4 cameraProjection, glm::mat4 cameraView
) {
this->program.setMatrix(this->program.paramProjection, cameraProjection);
this->program.setMatrix(this->program.paramView, cameraView);
}

View File

@ -6,6 +6,7 @@
#pragma once
#include "display/shader/Shader.hpp"
#include "SimpleTexturedShaderProgram.hpp"
#include "scene/components/display/material/SimpleTexturedMaterial.hpp"
namespace Dawn {
class SimpleTexturedShader : public Shader {
@ -13,21 +14,14 @@ namespace Dawn {
SimpleTexturedShaderProgram program;
public:
void compile() override {
this->program.compile();
}
void compile() override;
std::vector<struct ShaderPass> getItemPasses(
MeshRenderer *mesh,
Material *material
) override {
return std::vector<struct ShaderPass>();
}
MeshRenderer *mesh, Material *material
) override;
void setGlobalParameters(
glm::mat4 cameraProjection,
glm::mat4 cameraView
) override {
}
glm::mat4 cameraProjection, glm::mat4 cameraView
) override;
};
}

View File

@ -4,6 +4,7 @@
// https://opensource.org/licenses/MIT
#include "SimpleTexturedMaterial.hpp"
#include "game/DawnGame.hpp"
using namespace Dawn;
@ -13,5 +14,5 @@ SimpleTexturedMaterial::SimpleTexturedMaterial(SceneItem *i) :
}
Shader * SimpleTexturedMaterial::getShader() {
return this->shader;
return &this->getGame()->renderManager.simpleShader;
}

View File

@ -4,13 +4,11 @@
// https://opensource.org/licenses/MIT
#pragma once
#include "display/shader/SimpleTexturedShader.hpp"
#include "scene/components/display/Material.hpp"
namespace Dawn {
class SimpleTexturedMaterial : public Material {
public:
SimpleTexturedShader *shader = nullptr;
Texture *texture = nullptr;
struct Color color = COLOR_WHITE;