2023-03-25 09:11:09 +01:00
|
|
|
// Copyright (C) 2014 Patryk Nadrowski
|
|
|
|
// This file is part of the "Irrlicht Engine".
|
|
|
|
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "IShaderConstantSetCallBack.h"
|
|
|
|
#include "IMaterialRendererServices.h"
|
|
|
|
|
|
|
|
namespace irr
|
|
|
|
{
|
|
|
|
namespace video
|
|
|
|
{
|
|
|
|
|
|
|
|
class COpenGL3MaterialBaseCB : public IShaderConstantSetCallBack
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialBaseCB();
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdateBase;
|
|
|
|
|
|
|
|
s32 WVPMatrixID;
|
|
|
|
s32 WVMatrixID;
|
|
|
|
s32 NMatrixID;
|
|
|
|
|
|
|
|
s32 GlobalAmbientID;
|
|
|
|
s32 MaterialAmbientID;
|
|
|
|
s32 MaterialDiffuseID;
|
|
|
|
s32 MaterialEmissiveID;
|
|
|
|
s32 MaterialSpecularID;
|
|
|
|
s32 MaterialShininessID;
|
|
|
|
|
|
|
|
s32 FogEnableID;
|
|
|
|
s32 FogTypeID;
|
|
|
|
s32 FogColorID;
|
|
|
|
s32 FogStartID;
|
|
|
|
s32 FogEndID;
|
|
|
|
s32 FogDensityID;
|
|
|
|
|
|
|
|
s32 ThicknessID;
|
|
|
|
|
|
|
|
bool LightEnable;
|
|
|
|
SColorf GlobalAmbient;
|
|
|
|
SColorf MaterialAmbient;
|
|
|
|
SColorf MaterialDiffuse;
|
|
|
|
SColorf MaterialEmissive;
|
|
|
|
SColorf MaterialSpecular;
|
|
|
|
f32 MaterialShininess;
|
|
|
|
|
|
|
|
s32 FogEnable;
|
|
|
|
s32 FogType;
|
|
|
|
SColorf FogColor;
|
|
|
|
f32 FogStart;
|
|
|
|
f32 FogEnd;
|
|
|
|
f32 FogDensity;
|
|
|
|
|
|
|
|
f32 Thickness;
|
|
|
|
};
|
|
|
|
|
|
|
|
class COpenGL3MaterialSolidCB : public COpenGL3MaterialBaseCB
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialSolidCB();
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdate;
|
|
|
|
|
|
|
|
s32 TMatrix0ID;
|
|
|
|
s32 AlphaRefID;
|
|
|
|
s32 TextureUsage0ID;
|
|
|
|
s32 TextureUnit0ID;
|
|
|
|
|
|
|
|
f32 AlphaRef;
|
|
|
|
s32 TextureUsage0;
|
|
|
|
s32 TextureUnit0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class COpenGL3MaterialSolid2CB : public COpenGL3MaterialBaseCB
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialSolid2CB();
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdate;
|
|
|
|
|
|
|
|
s32 TMatrix0ID;
|
|
|
|
s32 TMatrix1ID;
|
|
|
|
s32 TextureUsage0ID;
|
|
|
|
s32 TextureUsage1ID;
|
|
|
|
s32 TextureUnit0ID;
|
|
|
|
s32 TextureUnit1ID;
|
|
|
|
|
|
|
|
s32 TextureUsage0;
|
|
|
|
s32 TextureUsage1;
|
|
|
|
s32 TextureUnit0;
|
|
|
|
s32 TextureUnit1;
|
|
|
|
};
|
|
|
|
|
|
|
|
class COpenGL3MaterialLightmapCB : public COpenGL3MaterialBaseCB
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialLightmapCB(float modulate);
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdate;
|
|
|
|
|
|
|
|
s32 TMatrix0ID;
|
|
|
|
s32 TMatrix1ID;
|
|
|
|
s32 ModulateID;
|
|
|
|
s32 TextureUsage0ID;
|
|
|
|
s32 TextureUsage1ID;
|
|
|
|
s32 TextureUnit0ID;
|
|
|
|
s32 TextureUnit1ID;
|
|
|
|
|
|
|
|
f32 Modulate;
|
|
|
|
s32 TextureUsage0;
|
|
|
|
s32 TextureUsage1;
|
|
|
|
s32 TextureUnit0;
|
|
|
|
s32 TextureUnit1;
|
|
|
|
};
|
|
|
|
|
|
|
|
class COpenGL3MaterialReflectionCB : public COpenGL3MaterialBaseCB
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialReflectionCB();
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdate;
|
|
|
|
|
|
|
|
s32 TMatrix0ID;
|
|
|
|
s32 TextureUsage0ID;
|
|
|
|
s32 TextureUsage1ID;
|
|
|
|
s32 TextureUnit0ID;
|
|
|
|
s32 TextureUnit1ID;
|
|
|
|
|
|
|
|
s32 TextureUsage0;
|
|
|
|
s32 TextureUsage1;
|
|
|
|
s32 TextureUnit0;
|
|
|
|
s32 TextureUnit1;
|
|
|
|
};
|
|
|
|
|
|
|
|
class COpenGL3MaterialOneTextureBlendCB : public COpenGL3MaterialBaseCB
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
COpenGL3MaterialOneTextureBlendCB();
|
|
|
|
|
|
|
|
virtual void OnSetMaterial(const SMaterial& material);
|
|
|
|
virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool FirstUpdate;
|
|
|
|
|
|
|
|
s32 TMatrix0ID;
|
|
|
|
s32 BlendTypeID;
|
|
|
|
s32 TextureUsage0ID;
|
|
|
|
s32 TextureUnit0ID;
|
|
|
|
|
|
|
|
s32 BlendType;
|
|
|
|
s32 TextureUsage0;
|
|
|
|
s32 TextureUnit0;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|