Files
bluflame/aiwaz/Aiwaz/Resources/Shader/Shader.h
2026-04-18 22:31:51 +02:00

54 lines
1.5 KiB
C++

#pragma once
#include "IFileSystem.h"
#include "IEngine.h"
#include "IShader.h"
#include "../Commands/CommandUserBase.h"
class Shader
: public IShader
, public CommandUserBase
{
protected:
static const unsigned char ApplyFirstPassCommandType = 0;
static const unsigned char NextPassCommandType = 1;
public:
Shader(IEngine& argEngine);
virtual ~Shader();
virtual void LoadFromFile(const string16& argValue);
virtual string8 get_TechniqueName() const { return m_TechniqueName; }
virtual void set_TechniqueName(const string8& argValue);
virtual ID3D10EffectTechnique* get_DX10Technique() const { return m_Technique; }
virtual IInternalShader* get_InternalShader() const { return m_InternalShader; }
virtual bool TryApplyNextPass();
virtual void ApplyFirstPass();
virtual uint32 get_CurrentRenderPass() const { return m_CurrentPass; }
virtual void set_Priority(unsigned char argValue);
virtual unsigned char get_Priority() const;
protected:
virtual void Uninitialize();
IInternalShader* CreateOrFindShader(const string16& argFileName);
// ICommandUser
virtual CommandExecuteResult::Enumeration ExecuteCommand(unsigned char argCommandType, ICommandBuffer& argCurrentBuffer, uint32 argCurrentPositon);
virtual string8 get_UserName() const { return "Shader"; }
private:
IEngine& m_Engine;
string8 m_TechniqueName;
uint32 m_CurrentPass;
ID3D10EffectTechnique* m_Technique;
IInternalShader* m_InternalShader;
D3D10_TECHNIQUE_DESC m_TechDesc;
unsigned char m_Priority;
};