64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "BaseEffect.h"
|
|
#include <array>
|
|
|
|
|
|
|
|
enum class CullMode {
|
|
None = 0,
|
|
Front = 1,
|
|
Back = 2
|
|
};
|
|
|
|
|
|
class Effect: public BaseEffect {
|
|
public:
|
|
Effect(ID3D11Device *devicePtr, const std::wstring &filePath);
|
|
|
|
virtual ~Effect() override;
|
|
|
|
void SetWorldMatrix(const dae::Matrix &world) const override;
|
|
|
|
void SetCameraPos(const dae::Vector3 &pos) const override;
|
|
|
|
void SetMaterial(Material *material) override;
|
|
|
|
void ToggleNormals() override;
|
|
|
|
void NextSamplingState() override;
|
|
|
|
void NextCullMode() override;
|
|
|
|
private:
|
|
|
|
void InitSamplers(ID3D11Device* devicePtr);
|
|
void InitRasterizer(ID3D11Device* devicePtr);
|
|
|
|
ID3DX11EffectMatrixVariable *m_MatWorldVariablePtr{};
|
|
|
|
ID3DX11EffectShaderResourceVariable *m_DiffuseMapVariablePtr{};
|
|
ID3DX11EffectShaderResourceVariable *m_NormalMapVariablePtr{};
|
|
ID3DX11EffectShaderResourceVariable *m_SpecularMapVariablePtr{};
|
|
ID3DX11EffectShaderResourceVariable *m_GlossMapVariablePtr{};
|
|
|
|
ID3DX11EffectVectorVariable *m_CameraPosVariablePtr{};
|
|
ID3DX11EffectVectorVariable *m_LightPosVariablePtr{};
|
|
ID3DX11EffectVectorVariable *m_LightColorVariablePtr{};
|
|
|
|
ID3DX11EffectScalarVariable *m_UseNormalMapVariablePtr{};
|
|
|
|
ID3DX11EffectSamplerVariable *m_SamplerVariablePtr{};
|
|
|
|
ID3DX11EffectRasterizerVariable* m_RasterizerVariablePtr{};
|
|
|
|
TechniqueType m_TechniqueType{TechniqueType::Linear};
|
|
|
|
std::array<ID3D11SamplerState*, 3> m_SamplerStates{};
|
|
std::array<ID3D11RasterizerState*, 3> m_RasterizerStates{};
|
|
|
|
CullMode m_CullMode{ CullMode::Back };
|
|
|
|
bool m_UseNormalMap{true};
|
|
};
|