]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/OpenGL/FixedPipelineRenderer.h
Merge branch 'opengl3' of https://github.com/numberZero/irrlicht
[irrlicht.git] / source / Irrlicht / OpenGL / FixedPipelineRenderer.h
diff --git a/source/Irrlicht/OpenGL/FixedPipelineRenderer.h b/source/Irrlicht/OpenGL/FixedPipelineRenderer.h
new file mode 100644 (file)
index 0000000..aea935f
--- /dev/null
@@ -0,0 +1,180 @@
+// 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;
+};
+
+}
+}