Removed multiple inheritance, instead made TextureRead inherit from
Shader. work in progress!
This commit is contained in:
@@ -29,8 +29,7 @@
|
||||
|
||||
|
||||
// ============================================================================
|
||||
class Primitive2DList : public Shader<Primitive2DList>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED >
|
||||
class Primitive2DList : public TextureRead<Primitive2DList, 1>
|
||||
{
|
||||
public:
|
||||
Primitive2DList()
|
||||
@@ -43,11 +42,10 @@ public:
|
||||
}; //Primitive2DList
|
||||
|
||||
// ============================================================================
|
||||
class UniformColoredTextureRectShader : public Shader<UniformColoredTextureRectShader,
|
||||
class UniformColoredTextureRectShader : public TextureRead<UniformColoredTextureRectShader,1,
|
||||
core::vector2df, core::vector2df,
|
||||
core::vector2df, core::vector2df,
|
||||
video::SColor>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
video::SColor>
|
||||
{
|
||||
public:
|
||||
UniformColoredTextureRectShader()
|
||||
@@ -62,10 +60,9 @@ public:
|
||||
}; // UniformColoredTextureRectShader
|
||||
|
||||
// ============================================================================
|
||||
class TextureRectShader : public Shader<TextureRectShader, core::vector2df,
|
||||
core::vector2df, core::vector2df,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class TextureRectShader : public TextureRead<TextureRectShader, 1,
|
||||
core::vector2df, core::vector2df,
|
||||
core::vector2df, core::vector2df>
|
||||
{
|
||||
public:
|
||||
TextureRectShader()
|
||||
@@ -93,10 +90,9 @@ public:
|
||||
|
||||
// ============================================================================
|
||||
|
||||
class ColoredTextureRectShader : public Shader<ColoredTextureRectShader,
|
||||
class ColoredTextureRectShader : public TextureRead<ColoredTextureRectShader, 1,
|
||||
core::vector2df, core::vector2df,
|
||||
core::vector2df, core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
core::vector2df, core::vector2df>
|
||||
{
|
||||
#ifdef XX
|
||||
private:
|
||||
|
||||
@@ -26,9 +26,8 @@
|
||||
#include <set>
|
||||
|
||||
|
||||
class SpecularIBLGenerator : public Shader<SpecularIBLGenerator, core::matrix4,
|
||||
float >,
|
||||
public TextureReadNew<ST_TRILINEAR_CUBEMAP>
|
||||
class SpecularIBLGenerator : public TextureRead<SpecularIBLGenerator, 1,
|
||||
core::matrix4, float >
|
||||
{
|
||||
public:
|
||||
GLuint m_tu_samples;
|
||||
|
||||
@@ -54,10 +54,8 @@ public:
|
||||
|
||||
/** A Shader to render particles.
|
||||
*/
|
||||
class SimpleParticleRender : public Shader<SimpleParticleRender, video::SColorf,
|
||||
video::SColorf>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_NEAREST_FILTERED>
|
||||
class SimpleParticleRender : public TextureRead<SimpleParticleRender, 2,
|
||||
video::SColorf, video::SColorf>
|
||||
{
|
||||
public:
|
||||
SimpleParticleRender()
|
||||
@@ -76,9 +74,7 @@ public:
|
||||
|
||||
// ============================================================================
|
||||
|
||||
class FlipParticleRender : public Shader<FlipParticleRender>,
|
||||
public TextureReadNew < ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_NEAREST_FILTERED >
|
||||
class FlipParticleRender : public TextureRead<FlipParticleRender, 2>
|
||||
{
|
||||
public:
|
||||
FlipParticleRender()
|
||||
|
||||
@@ -43,9 +43,8 @@ using namespace video;
|
||||
using namespace scene;
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian3HBlurShader : public Shader<Gaussian3HBlurShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian3HBlurShader : public TextureRead<Gaussian3HBlurShader, 1,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
Gaussian3HBlurShader()
|
||||
@@ -59,10 +58,9 @@ public:
|
||||
}; // Gaussian3HBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeShadowBlurVShader : public Shader<ComputeShadowBlurVShader,
|
||||
class ComputeShadowBlurVShader : public TextureRead<ComputeShadowBlurVShader, 1,
|
||||
core::vector2df,
|
||||
std::vector<float> >,
|
||||
public TextureReadNew<ST_NEARED_CLAMPED_FILTERED>
|
||||
std::vector<float> >
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -78,9 +76,8 @@ public:
|
||||
}; // ComputeShadowBlurVShader
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian6VBlurShader : public Shader<Gaussian6VBlurShader,
|
||||
core::vector2df, float>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian6VBlurShader : public TextureRead<Gaussian6VBlurShader, 1,
|
||||
core::vector2df, float>
|
||||
{
|
||||
public:
|
||||
Gaussian6VBlurShader()
|
||||
@@ -94,9 +91,8 @@ public:
|
||||
}; // Gaussian6VBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian3VBlurShader : public Shader<Gaussian3VBlurShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian3VBlurShader : public TextureRead<Gaussian3VBlurShader, 1,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
Gaussian3VBlurShader()
|
||||
@@ -110,10 +106,9 @@ public:
|
||||
}; // Gaussian3VBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeGaussian6VBlurShader : public Shader<ComputeGaussian6VBlurShader,
|
||||
class ComputeGaussian6VBlurShader : public TextureRead<ComputeGaussian6VBlurShader, 1,
|
||||
core::vector2df,
|
||||
std::vector<float> >,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
std::vector<float> >
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -129,10 +124,9 @@ public:
|
||||
}; // ComputeGaussian6VBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeGaussian6HBlurShader : public Shader<ComputeGaussian6HBlurShader,
|
||||
class ComputeGaussian6HBlurShader : public TextureRead<ComputeGaussian6HBlurShader, 1,
|
||||
core::vector2df,
|
||||
std::vector<float> >,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
std::vector<float> >
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -148,10 +142,9 @@ public:
|
||||
}; // ComputeGaussian6HBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeShadowBlurHShader : public Shader<ComputeShadowBlurHShader,
|
||||
class ComputeShadowBlurHShader : public TextureRead<ComputeShadowBlurHShader, 1,
|
||||
core::vector2df,
|
||||
std::vector<float> >,
|
||||
public TextureReadNew<ST_NEARED_CLAMPED_FILTERED>
|
||||
std::vector<float> >
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -166,9 +159,8 @@ public:
|
||||
}; // ComputeShadowBlurHShader
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian6HBlurShader : public Shader<Gaussian6HBlurShader,
|
||||
core::vector2df, float>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian6HBlurShader : public TextureRead<Gaussian6HBlurShader, 1,
|
||||
core::vector2df, float>
|
||||
{
|
||||
public:
|
||||
Gaussian6HBlurShader()
|
||||
@@ -182,10 +174,8 @@ public:
|
||||
}; // Gaussian6HBlurShader
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian17TapHShader : public Shader<Gaussian17TapHShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED,
|
||||
ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian17TapHShader : public TextureRead<Gaussian17TapHShader, 2,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
Gaussian17TapHShader()
|
||||
@@ -199,10 +189,8 @@ public:
|
||||
}; // Gaussian17TapHShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeGaussian17TapHShader : public Shader<ComputeGaussian17TapHShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_NEARED_CLAMPED_FILTERED,
|
||||
ST_NEARED_CLAMPED_FILTERED>
|
||||
class ComputeGaussian17TapHShader : public TextureRead<ComputeGaussian17TapHShader, 2,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -219,10 +207,8 @@ public:
|
||||
|
||||
|
||||
// ============================================================================
|
||||
class Gaussian17TapVShader : public Shader<Gaussian17TapVShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED,
|
||||
ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class Gaussian17TapVShader : public TextureRead<Gaussian17TapVShader, 2,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
Gaussian17TapVShader()
|
||||
@@ -237,10 +223,8 @@ public:
|
||||
}; // Gaussian17TapVShader
|
||||
|
||||
// ============================================================================
|
||||
class ComputeGaussian17TapVShader : public Shader<ComputeGaussian17TapVShader,
|
||||
core::vector2df>,
|
||||
public TextureReadNew<ST_NEARED_CLAMPED_FILTERED,
|
||||
ST_NEARED_CLAMPED_FILTERED>
|
||||
class ComputeGaussian17TapVShader : public TextureRead<ComputeGaussian17TapVShader, 2,
|
||||
core::vector2df>
|
||||
{
|
||||
public:
|
||||
GLuint m_dest_tu;
|
||||
@@ -257,8 +241,7 @@ public:
|
||||
}; // ComputeGaussian17TapVShader
|
||||
|
||||
// ============================================================================
|
||||
class BloomShader : public Shader<BloomShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class BloomShader : public TextureRead<BloomShader, 1>
|
||||
{
|
||||
public:
|
||||
BloomShader()
|
||||
@@ -273,10 +256,7 @@ public:
|
||||
}; // BloomShader
|
||||
|
||||
// ============================================================================
|
||||
class BloomBlendShader : public Shader<BloomBlendShader>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED>
|
||||
class BloomBlendShader : public TextureRead<BloomBlendShader, 3>
|
||||
{
|
||||
public:
|
||||
BloomBlendShader()
|
||||
@@ -291,10 +271,7 @@ public:
|
||||
}; // BloomBlendShader
|
||||
|
||||
// ============================================================================
|
||||
class LensBlendShader : public Shader<LensBlendShader>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED>
|
||||
class LensBlendShader : public TextureRead<LensBlendShader, 3>
|
||||
{
|
||||
public:
|
||||
LensBlendShader()
|
||||
@@ -310,8 +287,7 @@ public:
|
||||
}; // LensBlendShader
|
||||
|
||||
// ============================================================================
|
||||
class ToneMapShader : public Shader<ToneMapShader, float>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class ToneMapShader : public TextureRead<ToneMapShader, 1, float>
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -327,9 +303,7 @@ public:
|
||||
}; // ToneMapShader
|
||||
|
||||
// ============================================================================
|
||||
class DepthOfFieldShader : public Shader<DepthOfFieldShader>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED,
|
||||
ST_NEAREST_FILTERED>
|
||||
class DepthOfFieldShader : public TextureRead<DepthOfFieldShader, 2>
|
||||
{
|
||||
public:
|
||||
DepthOfFieldShader()
|
||||
@@ -344,10 +318,7 @@ public:
|
||||
}; // DepthOfFieldShader
|
||||
|
||||
// ============================================================================
|
||||
class IBLShader : public Shader<IBLShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_TRILINEAR_CUBEMAP>
|
||||
class IBLShader : public TextureRead<IBLShader, 3>
|
||||
{
|
||||
public:
|
||||
IBLShader()
|
||||
@@ -366,8 +337,7 @@ public:
|
||||
}; // IBLShader
|
||||
|
||||
// ============================================================================
|
||||
class DegradedIBLShader : public Shader<DegradedIBLShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class DegradedIBLShader : public TextureRead<DegradedIBLShader, 1>
|
||||
{
|
||||
public:
|
||||
DegradedIBLShader()
|
||||
|
||||
@@ -77,8 +77,7 @@ layout(location = 6) in vec3 Bitangent;
|
||||
*/
|
||||
|
||||
// ============================================================================
|
||||
class InstancedObjectPass1Shader : public Shader<InstancedObjectPass1Shader>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedObjectPass1Shader : public TextureRead<InstancedObjectPass1Shader, 1>
|
||||
{
|
||||
public:
|
||||
InstancedObjectPass1Shader()
|
||||
@@ -95,9 +94,7 @@ public:
|
||||
}; // class InstancedObjectPass1Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedObjectRefPass1Shader : public Shader<InstancedObjectRefPass1Shader>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedObjectRefPass1Shader : public TextureRead<InstancedObjectRefPass1Shader, 2>
|
||||
{
|
||||
public:
|
||||
InstancedObjectRefPass1Shader()
|
||||
@@ -116,13 +113,8 @@ public:
|
||||
}; // InstancedObjectRefPass1Shader
|
||||
|
||||
// ============================================================================
|
||||
class ObjectRefPass2Shader : public Shader<ObjectRefPass2Shader, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class ObjectRefPass2Shader : public TextureRead<ObjectRefPass2Shader, 5,
|
||||
core::matrix4, core::matrix4>
|
||||
{
|
||||
public:
|
||||
ObjectRefPass2Shader()
|
||||
@@ -141,12 +133,7 @@ public:
|
||||
}; // ObjectRefPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedObjectPass2Shader : public Shader<InstancedObjectPass2Shader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedObjectPass2Shader : public TextureRead<InstancedObjectPass2Shader, 5>
|
||||
{
|
||||
public:
|
||||
InstancedObjectPass2Shader()
|
||||
@@ -165,12 +152,7 @@ public:
|
||||
}; // InstancedObjectPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedObjectRefPass2Shader : public Shader<InstancedObjectRefPass2Shader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedObjectRefPass2Shader : public TextureRead<InstancedObjectRefPass2Shader, 5>
|
||||
{
|
||||
public:
|
||||
InstancedObjectRefPass2Shader()
|
||||
@@ -190,8 +172,7 @@ public:
|
||||
}; // InstancedObjectRefPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class ShadowShader : public Shader<ShadowShader, int, core::matrix4>,
|
||||
public TextureReadNew<>
|
||||
class ShadowShader : public TextureRead<ShadowShader, 0, int, core::matrix4>
|
||||
{
|
||||
public:
|
||||
ShadowShader()
|
||||
@@ -215,8 +196,7 @@ public:
|
||||
}; // ShadowShader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedShadowShader : public Shader<InstancedShadowShader, int>,
|
||||
public TextureReadNew<>
|
||||
class InstancedShadowShader : public TextureRead<InstancedShadowShader, 0, int>
|
||||
{
|
||||
public:
|
||||
InstancedShadowShader()
|
||||
@@ -243,9 +223,8 @@ public:
|
||||
}; // InstancedShadowShader
|
||||
|
||||
// ============================================================================
|
||||
class CRSMShader : public Shader<CRSMShader, core::matrix4, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class CRSMShader : public TextureRead<CRSMShader, 1, core::matrix4, core::matrix4,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
CRSMShader()
|
||||
@@ -261,13 +240,8 @@ public:
|
||||
|
||||
|
||||
// ============================================================================
|
||||
class SplattingRSMShader : public Shader<SplattingRSMShader, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class SplattingRSMShader : public TextureRead<SplattingRSMShader, 5, core::matrix4,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
SplattingRSMShader()
|
||||
@@ -287,8 +261,7 @@ public:
|
||||
}; // SplattingRSMShader
|
||||
|
||||
// ============================================================================
|
||||
class CInstancedRSMShader : public Shader<CInstancedRSMShader, core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class CInstancedRSMShader : public TextureRead<CInstancedRSMShader, 1, core::matrix4>
|
||||
{
|
||||
public:
|
||||
CInstancedRSMShader()
|
||||
@@ -304,12 +277,8 @@ public:
|
||||
}; // CInstancedRSMShader
|
||||
|
||||
// ============================================================================
|
||||
class SphereMapShader : public Shader<SphereMapShader, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class SphereMapShader : public TextureRead<SphereMapShader, 4, core::matrix4,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
SphereMapShader()
|
||||
@@ -328,11 +297,7 @@ public:
|
||||
}; // SphereMapShader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedSphereMapShader : public Shader<InstancedSphereMapShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedSphereMapShader : public TextureRead<InstancedSphereMapShader, 4>
|
||||
{
|
||||
public:
|
||||
InstancedSphereMapShader()
|
||||
@@ -352,15 +317,7 @@ public:
|
||||
}; // InstancedSphereMapShader
|
||||
|
||||
// ============================================================================
|
||||
class SplattingShader : public Shader<SplattingShader, core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class SplattingShader : public TextureRead<SplattingShader, 8, core::matrix4>
|
||||
{
|
||||
public:
|
||||
SplattingShader()
|
||||
@@ -383,10 +340,8 @@ public:
|
||||
}; // SplattingShader
|
||||
|
||||
// ============================================================================
|
||||
class ObjectRefPass1Shader : public Shader<ObjectRefPass1Shader, core::matrix4,
|
||||
core::matrix4, core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class ObjectRefPass1Shader : public TextureRead<ObjectRefPass1Shader, 2, core::matrix4,
|
||||
core::matrix4, core::matrix4>
|
||||
{
|
||||
public:
|
||||
ObjectRefPass1Shader()
|
||||
@@ -403,10 +358,8 @@ public:
|
||||
|
||||
|
||||
// ============================================================================
|
||||
class NormalMapShader : public Shader<NormalMapShader, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class NormalMapShader : public TextureRead<NormalMapShader, 2, core::matrix4,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
NormalMapShader()
|
||||
@@ -423,9 +376,7 @@ public:
|
||||
}; // NormalMapShader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedNormalMapShader : public Shader<InstancedNormalMapShader>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedNormalMapShader : public TextureRead<InstancedNormalMapShader, 2>
|
||||
{
|
||||
public:
|
||||
InstancedNormalMapShader()
|
||||
@@ -442,12 +393,8 @@ public:
|
||||
}; // InstancedNormalMapShader
|
||||
|
||||
// ============================================================================
|
||||
class ObjectUnlitShader : public Shader<ObjectUnlitShader, core::matrix4,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class ObjectUnlitShader : public TextureRead<ObjectUnlitShader, 4, core::matrix4,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
ObjectUnlitShader()
|
||||
@@ -464,11 +411,7 @@ public:
|
||||
}; // ObjectUnlitShader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedObjectUnlitShader : public Shader<InstancedObjectUnlitShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedObjectUnlitShader : public TextureRead<InstancedObjectUnlitShader, 4>
|
||||
{
|
||||
public:
|
||||
InstancedObjectUnlitShader()
|
||||
@@ -605,10 +548,8 @@ const STK::Tuple<size_t> UnlitMat::ShadowTextures = STK::Tuple<size_t>(0);
|
||||
const STK::Tuple<size_t> UnlitMat::RSMTextures = STK::Tuple<size_t>(0);
|
||||
|
||||
// ============================================================================
|
||||
class GrassPass1Shader : public Shader<GrassPass1Shader, core::matrix4,
|
||||
core::matrix4, core::vector3df>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class GrassPass1Shader : public TextureRead<GrassPass1Shader, 2, core::matrix4,
|
||||
core::matrix4, core::vector3df>
|
||||
{
|
||||
public:
|
||||
GrassPass1Shader()
|
||||
@@ -625,10 +566,8 @@ public:
|
||||
}; // class GrassPass1Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedGrassPass1Shader : public Shader<InstancedGrassPass1Shader,
|
||||
core::vector3df>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedGrassPass1Shader : public TextureRead<InstancedGrassPass1Shader, 2,
|
||||
core::vector3df>
|
||||
{
|
||||
public:
|
||||
InstancedGrassPass1Shader()
|
||||
@@ -645,9 +584,8 @@ public:
|
||||
}; // InstancedGrassPass1Shader
|
||||
|
||||
// ============================================================================
|
||||
class GrassShadowShader : public Shader<GrassShadowShader, int, core::matrix4,
|
||||
core::vector3df>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class GrassShadowShader : public TextureRead<GrassShadowShader, 1, int, core::matrix4,
|
||||
core::vector3df>
|
||||
{
|
||||
public:
|
||||
GrassShadowShader()
|
||||
@@ -673,9 +611,8 @@ public:
|
||||
}; // GrassShadowShader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedGrassShadowShader : public Shader<InstancedGrassShadowShader,
|
||||
int, core::vector3df>,
|
||||
public TextureReadNew < ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedGrassShadowShader : public TextureRead<InstancedGrassShadowShader, 1,
|
||||
int, core::vector3df>
|
||||
{
|
||||
public:
|
||||
InstancedGrassShadowShader()
|
||||
@@ -705,13 +642,8 @@ public:
|
||||
|
||||
|
||||
// ============================================================================
|
||||
class GrassPass2Shader : public Shader<GrassPass2Shader, core::matrix4,
|
||||
core::vector3df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class GrassPass2Shader : public TextureRead<GrassPass2Shader, 5, core::matrix4,
|
||||
core::vector3df>
|
||||
{
|
||||
public:
|
||||
GrassPass2Shader()
|
||||
@@ -730,14 +662,8 @@ public:
|
||||
}; // GrassPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedGrassPass2Shader : public Shader<InstancedGrassPass2Shader,
|
||||
core::vector3df, core::vector3df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedGrassPass2Shader : public TextureRead<InstancedGrassPass2Shader, 6,
|
||||
core::vector3df, core::vector3df>
|
||||
{
|
||||
public:
|
||||
InstancedGrassPass2Shader()
|
||||
@@ -758,14 +684,8 @@ public:
|
||||
}; // InstancedGrassPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class DetailedObjectPass2Shader : public Shader<DetailedObjectPass2Shader,
|
||||
core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED,
|
||||
ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class DetailedObjectPass2Shader : public TextureRead<DetailedObjectPass2Shader, 6,
|
||||
core::matrix4>
|
||||
{
|
||||
public:
|
||||
DetailedObjectPass2Shader()
|
||||
@@ -784,11 +704,7 @@ public:
|
||||
}; // DetailedObjectPass2Shader
|
||||
|
||||
// ============================================================================
|
||||
class InstancedDetailedObjectPass2Shader : public Shader<InstancedDetailedObjectPass2Shader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
|
||||
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED >
|
||||
class InstancedDetailedObjectPass2Shader : public TextureRead<InstancedDetailedObjectPass2Shader, 6>
|
||||
{
|
||||
public:
|
||||
InstancedDetailedObjectPass2Shader()
|
||||
@@ -1519,6 +1435,7 @@ static video::ITexture *displaceTex = 0;
|
||||
// ----------------------------------------------------------------------------
|
||||
void IrrDriver::renderTransparent()
|
||||
{
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthMask(GL_FALSE);
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
@@ -34,8 +34,8 @@ class ParticleSystemProxy;
|
||||
|
||||
namespace MeshShader
|
||||
{
|
||||
class ObjectPass1Shader : public Shader<ObjectPass1Shader, core::matrix4, core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class ObjectPass1Shader : public TextureRead<ObjectPass1Shader, 1,
|
||||
core::matrix4, core::matrix4>
|
||||
{
|
||||
public:
|
||||
ObjectPass1Shader();
|
||||
@@ -43,9 +43,7 @@ public:
|
||||
|
||||
|
||||
|
||||
class ObjectPass2Shader : public Shader<ObjectPass2Shader, core::matrix4, core::matrix4>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
|
||||
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class ObjectPass2Shader : public TextureRead<ObjectPass2Shader, 5, core::matrix4, core::matrix4>
|
||||
{
|
||||
public:
|
||||
ObjectPass2Shader();
|
||||
@@ -54,16 +52,14 @@ public:
|
||||
|
||||
|
||||
|
||||
class TransparentShader : public Shader<TransparentShader, core::matrix4, core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class TransparentShader : public TextureRead<TransparentShader, 1, core::matrix4, core::matrix4>
|
||||
{
|
||||
public:
|
||||
TransparentShader();
|
||||
};
|
||||
|
||||
class TransparentFogShader : public Shader<TransparentFogShader, core::matrix4, core::matrix4, float, float,
|
||||
float, float, float, video::SColorf>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class TransparentFogShader : public TextureRead<TransparentFogShader, 1, core::matrix4, core::matrix4, float, float,
|
||||
float, float, float, video::SColorf>
|
||||
{
|
||||
public:
|
||||
TransparentFogShader();
|
||||
@@ -84,15 +80,13 @@ public:
|
||||
|
||||
|
||||
|
||||
class RefShadowShader : public Shader<RefShadowShader, int, core::matrix4>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class RefShadowShader : public TextureRead<RefShadowShader, 1, int, core::matrix4>
|
||||
{
|
||||
public:
|
||||
RefShadowShader();
|
||||
};
|
||||
|
||||
class InstancedRefShadowShader : public Shader<InstancedRefShadowShader, int>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class InstancedRefShadowShader : public TextureRead<InstancedRefShadowShader, 1, int>
|
||||
{
|
||||
public:
|
||||
InstancedRefShadowShader();
|
||||
@@ -105,16 +99,14 @@ public:
|
||||
DisplaceMaskShader();
|
||||
};
|
||||
|
||||
class DisplaceShader : public Shader<DisplaceShader, core::matrix4, core::vector2df, core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED, ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
class DisplaceShader : public TextureRead<DisplaceShader, 4, core::matrix4,
|
||||
core::vector2df, core::vector2df>
|
||||
{
|
||||
public:
|
||||
DisplaceShader();
|
||||
};
|
||||
|
||||
class SkyboxShader : public Shader<SkyboxShader>,
|
||||
public TextureReadNew<ST_TRILINEAR_CUBEMAP>
|
||||
class SkyboxShader : public TextureRead<SkyboxShader,1>
|
||||
{
|
||||
public:
|
||||
SkyboxShader();
|
||||
@@ -154,8 +146,7 @@ namespace LightShader
|
||||
};
|
||||
|
||||
|
||||
class PointLightShader : public Shader<PointLightShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED>
|
||||
class PointLightShader : public TextureRead<PointLightShader, 2>
|
||||
{
|
||||
public:
|
||||
GLuint vbo;
|
||||
@@ -163,8 +154,7 @@ namespace LightShader
|
||||
PointLightShader();
|
||||
};
|
||||
|
||||
class PointLightScatterShader : public Shader<PointLightScatterShader, float, core::vector3df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class PointLightScatterShader : public TextureRead<PointLightScatterShader, 1, float, core::vector3df>
|
||||
{
|
||||
public:
|
||||
GLuint vbo;
|
||||
@@ -187,43 +177,35 @@ namespace FullScreenShader
|
||||
{
|
||||
|
||||
|
||||
class SunLightShader : public Shader<SunLightShader, core::vector3df, video::SColorf>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED>
|
||||
class SunLightShader : public TextureRead<SunLightShader, 2, core::vector3df, video::SColorf>
|
||||
{
|
||||
public:
|
||||
SunLightShader();
|
||||
};
|
||||
|
||||
class ShadowedSunLightShaderPCF : public Shader<ShadowedSunLightShaderPCF, float, float, float, float, float>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_SHADOW_SAMPLER>
|
||||
class ShadowedSunLightShaderPCF : public TextureRead<ShadowedSunLightShaderPCF, 3, float, float, float, float, float>
|
||||
{
|
||||
public:
|
||||
ShadowedSunLightShaderPCF();
|
||||
};
|
||||
|
||||
class ShadowedSunLightShaderESM : public Shader<ShadowedSunLightShaderESM, float, float, float, float>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
|
||||
ST_TRILINEAR_CLAMPED_ARRAY2D>
|
||||
class ShadowedSunLightShaderESM : public TextureRead<ShadowedSunLightShaderESM, 3, float, float, float, float>
|
||||
{
|
||||
public:
|
||||
ShadowedSunLightShaderESM();
|
||||
};
|
||||
|
||||
class RadianceHintsConstructionShader : public Shader<RadianceHintsConstructionShader, core::matrix4,
|
||||
core::matrix4, core::vector3df, video::SColorf>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED, ST_BILINEAR_FILTERED, ST_BILINEAR_FILTERED>
|
||||
class RadianceHintsConstructionShader : public TextureRead<RadianceHintsConstructionShader, 3, core::matrix4,
|
||||
core::matrix4, core::vector3df, video::SColorf>
|
||||
{
|
||||
public:
|
||||
RadianceHintsConstructionShader();
|
||||
};
|
||||
|
||||
// Workaround for a bug found in kepler nvidia linux and fermi nvidia windows
|
||||
class NVWorkaroundRadianceHintsConstructionShader : public Shader<NVWorkaroundRadianceHintsConstructionShader,
|
||||
core::matrix4, core::matrix4, core::vector3df,
|
||||
int, video::SColorf>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED,
|
||||
ST_BILINEAR_FILTERED>
|
||||
class NVWorkaroundRadianceHintsConstructionShader : public TextureRead<NVWorkaroundRadianceHintsConstructionShader,
|
||||
3, core::matrix4, core::matrix4, core::vector3df,
|
||||
int, video::SColorf>
|
||||
{
|
||||
public:
|
||||
NVWorkaroundRadianceHintsConstructionShader();
|
||||
@@ -237,27 +219,21 @@ public:
|
||||
RHDebug();
|
||||
};
|
||||
|
||||
class GlobalIlluminationReconstructionShader : public Shader<GlobalIlluminationReconstructionShader,
|
||||
core::matrix4, core::matrix4, core::vector3df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
|
||||
ST_VOLUME_LINEAR_FILTERED,
|
||||
ST_VOLUME_LINEAR_FILTERED,
|
||||
ST_VOLUME_LINEAR_FILTERED>
|
||||
class GlobalIlluminationReconstructionShader : public TextureRead<GlobalIlluminationReconstructionShader, 5,
|
||||
core::matrix4, core::matrix4, core::vector3df>
|
||||
{
|
||||
public:
|
||||
GlobalIlluminationReconstructionShader();
|
||||
};
|
||||
|
||||
class HorizontalBlurShader : public Shader<HorizontalBlurShader, core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED>
|
||||
class HorizontalBlurShader : public TextureRead<HorizontalBlurShader, 1, core::vector2df>
|
||||
{
|
||||
public:
|
||||
HorizontalBlurShader();
|
||||
};
|
||||
|
||||
|
||||
class PassThroughShader : public Shader<PassThroughShader, int, int>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class PassThroughShader : public TextureRead<PassThroughShader, 1, int, int>
|
||||
{
|
||||
public:
|
||||
PassThroughShader();
|
||||
@@ -272,17 +248,15 @@ public:
|
||||
LayerPassThroughShader();
|
||||
};
|
||||
|
||||
class LinearizeDepthShader : public Shader<LinearizeDepthShader, float, float>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class LinearizeDepthShader : public TextureRead<LinearizeDepthShader, 1, float, float>
|
||||
{
|
||||
public:
|
||||
LinearizeDepthShader();
|
||||
};
|
||||
|
||||
class LightspaceBoundingBoxShader : public Shader<LightspaceBoundingBoxShader,
|
||||
class LightspaceBoundingBoxShader : public TextureRead<LightspaceBoundingBoxShader, 1,
|
||||
core::matrix4, float, float,
|
||||
float, float>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED >
|
||||
float, float>
|
||||
{
|
||||
public:
|
||||
LightspaceBoundingBoxShader();
|
||||
@@ -294,15 +268,13 @@ public:
|
||||
ShadowMatrixesGenerationShader();
|
||||
};
|
||||
|
||||
class DepthHistogramShader : public Shader<DepthHistogramShader>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class DepthHistogramShader : public TextureRead<DepthHistogramShader, 1>
|
||||
{
|
||||
public:
|
||||
DepthHistogramShader();
|
||||
};
|
||||
|
||||
class GlowShader : public Shader<GlowShader>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class GlowShader : public TextureRead<GlowShader, 1>
|
||||
{
|
||||
public:
|
||||
GLuint vao;
|
||||
@@ -310,57 +282,49 @@ public:
|
||||
GlowShader();
|
||||
};
|
||||
|
||||
class SSAOShader : public Shader<SSAOShader, float, float, float>,
|
||||
public TextureReadNew<ST_SEMI_TRILINEAR>
|
||||
class SSAOShader : public TextureRead<SSAOShader, 1, float, float, float>
|
||||
{
|
||||
public:
|
||||
SSAOShader();
|
||||
};
|
||||
|
||||
class FogShader : public Shader<FogShader, float, core::vector3df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class FogShader : public TextureRead<FogShader, 1, float, core::vector3df>
|
||||
{
|
||||
public:
|
||||
FogShader();
|
||||
};
|
||||
|
||||
class MotionBlurShader : public Shader<MotionBlurShader, core::matrix4, core::vector2df, float, float>,
|
||||
public TextureReadNew<ST_BILINEAR_CLAMPED_FILTERED, ST_NEAREST_FILTERED>
|
||||
class MotionBlurShader : public TextureRead<MotionBlurShader, 2, core::matrix4, core::vector2df, float, float>
|
||||
{
|
||||
public:
|
||||
MotionBlurShader();
|
||||
};
|
||||
|
||||
class GodFadeShader : public Shader<GodFadeShader, video::SColorf>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class GodFadeShader : public TextureRead<GodFadeShader, 1, video::SColorf>
|
||||
{
|
||||
public:
|
||||
GodFadeShader();
|
||||
};
|
||||
|
||||
class GodRayShader : public Shader<GodRayShader, core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED>
|
||||
class GodRayShader : public TextureRead<GodRayShader, 1, core::vector2df>
|
||||
{
|
||||
public:
|
||||
GodRayShader();
|
||||
};
|
||||
|
||||
class MLAAColorEdgeDetectionSHader : public Shader<MLAAColorEdgeDetectionSHader, core::vector2df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED>
|
||||
class MLAAColorEdgeDetectionSHader : public TextureRead<MLAAColorEdgeDetectionSHader, 1, core::vector2df>
|
||||
{
|
||||
public:
|
||||
MLAAColorEdgeDetectionSHader();
|
||||
};
|
||||
|
||||
class MLAABlendWeightSHader : public Shader<MLAABlendWeightSHader, core::vector2df>,
|
||||
public TextureReadNew<ST_BILINEAR_FILTERED, ST_NEAREST_FILTERED>
|
||||
class MLAABlendWeightSHader : public TextureRead<MLAABlendWeightSHader, 2, core::vector2df>
|
||||
{
|
||||
public:
|
||||
MLAABlendWeightSHader();
|
||||
};
|
||||
|
||||
class MLAAGatherSHader : public Shader<MLAAGatherSHader, core::vector2df>,
|
||||
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED>
|
||||
class MLAAGatherSHader : public TextureRead<MLAAGatherSHader, 2, core::vector2df>
|
||||
{
|
||||
public:
|
||||
MLAAGatherSHader();
|
||||
|
||||
@@ -30,10 +30,9 @@ using namespace irr;
|
||||
static GLuint billboardvao = 0;
|
||||
|
||||
|
||||
class BillboardShader : public Shader<BillboardShader, core::matrix4,
|
||||
class BillboardShader : public TextureRead<BillboardShader, 1, core::matrix4,
|
||||
core::matrix4, core::vector3df,
|
||||
core::dimension2df>,
|
||||
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED>
|
||||
core::dimension2df>
|
||||
{
|
||||
public:
|
||||
BillboardShader()
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "graphics/central_settings.hpp"
|
||||
#include "graphics/gl_headers.hpp"
|
||||
#include "graphics/shader.hpp"
|
||||
|
||||
#include <assert.h>
|
||||
#include <functional>
|
||||
@@ -76,10 +77,14 @@ protected:
|
||||
static GLuint m_all_texture_types[];
|
||||
}; // TextureReadBaseNew
|
||||
|
||||
// ============================================================================
|
||||
|
||||
template<SamplerTypeNew...tp>
|
||||
class TextureReadNew : public TextureReadBaseNew
|
||||
// ========================================================================
|
||||
/** Class C needs to be the newly declared shaders class (necessary for
|
||||
* the instance template). NUM_TEXTURES is the number of texture units
|
||||
* used in this shader. It is used to test at compile time that the
|
||||
* right number of arguments are supplied to the variadic functions.
|
||||
*/
|
||||
template<class C, int NUM_TEXTURES, typename...tp>
|
||||
class TextureRead : public TextureReadBaseNew, public Shader<C, tp...>
|
||||
{
|
||||
|
||||
private:
|
||||
@@ -99,7 +104,7 @@ private:
|
||||
template<unsigned N, typename...Args>
|
||||
void assignTextureNamesImpl(GLuint)
|
||||
{
|
||||
static_assert(N == sizeof...(tp), "Wrong number of texture name");
|
||||
static_assert(N == NUM_TEXTURES, "Wrong number of texture names");
|
||||
} // assignTextureNamesImpl
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -149,7 +154,7 @@ public:
|
||||
template<int N>
|
||||
void setTextureUnitsImpl()
|
||||
{
|
||||
static_assert(N == sizeof...(tp), "Not enough texture set");
|
||||
static_assert(N == NUM_TEXTURES, "Not enough texture set");
|
||||
} // setTextureUnitsImpl
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -193,7 +198,7 @@ public:
|
||||
template<int N>
|
||||
void setTextureHandlesImpl()
|
||||
{
|
||||
static_assert(N == sizeof...(tp), "Not enough handle set");
|
||||
static_assert(N == NUM_TEXTURES, "Not enough handles set");
|
||||
} // setTextureHandlesImpl
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -225,14 +230,13 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
/** Destructor which frees al lsampler ids.
|
||||
*/
|
||||
~TextureReadNew()
|
||||
~TextureRead()
|
||||
{
|
||||
for (unsigned i = 0; i < m_sampler_ids.size(); i++)
|
||||
glDeleteSamplers(1, &m_sampler_ids[i]);
|
||||
} // ~TextureReadNew
|
||||
} // ~TextureRead
|
||||
|
||||
|
||||
}; // class TextureReadNew
|
||||
|
||||
}; // class TextureRead
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user