The fruits of my labor

This commit is contained in:
2023-01-20 00:00:36 -08:00
parent 97fd59f28d
commit 3ee07af4db
55 changed files with 563 additions and 459 deletions

View File

@ -7,4 +7,5 @@
target_sources(${DAWN_TARGET_NAME}
PRIVATE
ShaderProgram.cpp
SimpleTexturedShader.cpp
)

View File

@ -11,16 +11,25 @@ void SimpleTexturedShader::compile() {
this->program.compile();
}
std::vector<struct ShaderPass> SimpleTexturedShader::getItemPasses(
MeshRenderer *mesh, Material *material
std::vector<struct ShaderPassItem> SimpleTexturedShader::getPassItems(
Mesh *mesh,
Material *material,
Camera *camera
) {
SimpleTexturedMaterial *simpleMaterial = dynamic_cast<SimpleTexturedMaterial*>(material);
assertNotNull(simpleMaterial);
struct ShaderPass onlyPass;
struct ShaderPassItem onlyPass;
onlyPass.mesh = mesh;
onlyPass.shaderProgram = &program;
onlyPass.colorValues[program.paramColor] = simpleMaterial->color;
onlyPass.matrixValues[program.paramModel] = mesh->transform->getWorldTransform();
onlyPass.matrixValues[program.paramModel] = material->transform->getWorldTransform();
onlyPass.matrixValues[program.paramView] = camera->transform->getWorldTransform();
onlyPass.matrixValues[program.paramProjection] = camera->projection;
onlyPass.renderFlags = (
RENDER_MANAGER_RENDER_FLAG_BLEND |
RENDER_MANAGER_RENDER_FLAG_DEPTH_TEST
);
if(simpleMaterial->texture != nullptr) {
onlyPass.boolValues[program.paramHasTexture] = true;
@ -30,14 +39,7 @@ std::vector<struct ShaderPass> SimpleTexturedShader::getItemPasses(
onlyPass.boolValues[program.paramHasTexture] = false;
}
std::vector<struct ShaderPass> passes;
std::vector<struct ShaderPassItem> 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

@ -16,12 +16,10 @@ namespace Dawn {
public:
void compile() override;
std::vector<struct ShaderPass> getItemPasses(
MeshRenderer *mesh, Material *material
) override;
void setGlobalParameters(
glm::mat4 cameraProjection, glm::mat4 cameraView
std::vector<struct ShaderPassItem> getPassItems(
Mesh *mesh,
Material *material,
Camera *camera
) override;
};
}

View File

@ -1,12 +0,0 @@
// Copyright (c) 2022 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "SimpleTexturedShader.hpp"
namespace Dawn {
class UIShader : public SimpleTexturedShader {
};
}

View File

@ -0,0 +1,43 @@
// Copyright (c) 2022 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "SimpleTexturedShaderProgram.hpp"
#define UI_SHADER_PROGRAM_PRIORITY 100
namespace Dawn {
class UIShaderProgram : public SimpleTexturedShaderProgram {
public:
struct ShaderPassItem getUIPassItem(
glm::mat4 projection,
glm::mat4 view,
glm::mat4 transform,
Texture *texture,
struct Color color,
Mesh *mesh,
float_t z
) {
struct ShaderPassItem item;
item.shaderProgram = this;
item.colorValues[this->paramColor] = color;
if(texture == nullptr) {
item.boolValues[this->paramHasTexture] = false;
} else {
item.textureSlots[0] = texture;
item.textureValues[this->paramTexture] = 0;
item.boolValues[this->paramHasTexture] = true;
}
item.matrixValues[this->paramProjection] = projection;
item.matrixValues[this->paramView] = view;
item.matrixValues[this->paramModel] = transform;
item.priority = UI_SHADER_PROGRAM_PRIORITY;
item.w = z;
item.renderFlags = RENDER_MANAGER_RENDER_FLAG_BLEND;
item.mesh = mesh;
return item;
}
};
}