The fruits of my labor
This commit is contained in:
@ -7,4 +7,5 @@
|
||||
target_sources(${DAWN_TARGET_NAME}
|
||||
PRIVATE
|
||||
ShaderProgram.cpp
|
||||
SimpleTexturedShader.cpp
|
||||
)
|
@ -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);
|
||||
}
|
@ -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;
|
||||
};
|
||||
}
|
@ -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 {
|
||||
};
|
||||
}
|
43
src/dawnopengl/display/shader/UIShaderProgram.hpp
Normal file
43
src/dawnopengl/display/shader/UIShaderProgram.hpp
Normal 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;
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user