First pass of new shader manager
This commit is contained in:
@ -7,4 +7,5 @@
|
||||
target_sources(${DAWN_TARGET_NAME}
|
||||
PRIVATE
|
||||
SimpleTexturedMaterial.cpp
|
||||
SimpleBillboardedMaterial.cpp
|
||||
)
|
@ -0,0 +1,27 @@
|
||||
// Copyright (c) 2023 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "display/shader/SimpleBillboardedShader.hpp"
|
||||
#include "SimpleBillboardedMaterial.hpp"
|
||||
#include "game/DawnGame.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
SimpleBillboardedMaterial::SimpleBillboardedMaterial(SceneItem *i) :
|
||||
Material(i)
|
||||
{
|
||||
}
|
||||
|
||||
void SimpleBillboardedMaterial::onStart() {
|
||||
this->shaderLock = this->getGame()->renderManager.getShaderManager()->lockShader<SimpleBillboardedShader>();
|
||||
}
|
||||
|
||||
void SimpleBillboardedMaterial::onDispose() {
|
||||
this->getGame()->renderManager.getShaderManager()->releaseShader<SimpleBillboardedShader>(this->shaderLock);
|
||||
}
|
||||
|
||||
Shader * SimpleBillboardedMaterial::getShader() {
|
||||
return this->getGame()->renderManager.getShaderManager()->getShader<SimpleBillboardedShader>(this->shaderLock);
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
// Copyright (c) 2023 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "scene/components/display/Material.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class SimpleBillboardedMaterial : public Material {
|
||||
private:
|
||||
shaderlock_t shaderLock = -1;
|
||||
|
||||
public:
|
||||
// @optional
|
||||
Texture *texture = nullptr;
|
||||
// @optional
|
||||
struct Color color = COLOR_WHITE;
|
||||
|
||||
/**
|
||||
* SimpleBillboardMaterial scene item component interface.
|
||||
*
|
||||
* @param i Scene Item this interface belongs to.
|
||||
*/
|
||||
SimpleBillboardedMaterial(SceneItem *i);
|
||||
|
||||
void onStart() override;
|
||||
void onDispose() override;
|
||||
|
||||
Shader * getShader() override;
|
||||
};
|
||||
}
|
@ -13,6 +13,14 @@ SimpleTexturedMaterial::SimpleTexturedMaterial(SceneItem *i) :
|
||||
{
|
||||
}
|
||||
|
||||
void SimpleTexturedMaterial::onStart() {
|
||||
this->shaderLock = this->getGame()->renderManager.getShaderManager()->lockShader<SimpleTexturedShader>();
|
||||
}
|
||||
|
||||
void SimpleTexturedMaterial::onDispose() {
|
||||
this->getGame()->renderManager.getShaderManager()->releaseShader<SimpleTexturedShader>(this->shaderLock);
|
||||
}
|
||||
|
||||
Shader * SimpleTexturedMaterial::getShader() {
|
||||
return &this->getGame()->renderManager.simpleShader;
|
||||
return this->getGame()->renderManager.getShaderManager()->getShader<SimpleTexturedShader>(this->shaderLock);
|
||||
}
|
@ -8,6 +8,9 @@
|
||||
|
||||
namespace Dawn {
|
||||
class SimpleTexturedMaterial : public Material {
|
||||
private:
|
||||
shaderlock_t shaderLock = -1;
|
||||
|
||||
public:
|
||||
// @optional
|
||||
Texture *texture = nullptr;
|
||||
@ -20,6 +23,9 @@ namespace Dawn {
|
||||
* @param i Scene Item this interface belongs to.
|
||||
*/
|
||||
SimpleTexturedMaterial(SceneItem *i);
|
||||
|
||||
void onStart() override;
|
||||
void onDispose() override;
|
||||
|
||||
Shader * getShader() override;
|
||||
};
|
||||
|
Reference in New Issue
Block a user