54 lines
1.5 KiB
C++
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;
|
|
};
|