Add support for SMaterial::EmissiveColor to fixed pipeline simulation with es2 shaders.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@4944 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
b5ac7335b8
commit
25991b1d87
|
@ -18,6 +18,7 @@ uniform mat4 uTMatrix0;
|
|||
uniform vec4 uGlobalAmbient;
|
||||
uniform vec4 uMaterialAmbient;
|
||||
uniform vec4 uMaterialDiffuse;
|
||||
uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
|
@ -138,6 +139,8 @@ void main()
|
|||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
|
|
|
@ -18,6 +18,7 @@ uniform mat4 uTMatrix0;
|
|||
uniform vec4 uGlobalAmbient;
|
||||
uniform vec4 uMaterialAmbient;
|
||||
uniform vec4 uMaterialDiffuse;
|
||||
uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
|
@ -92,7 +93,7 @@ void main()
|
|||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
gl_PointSize = uThickness;
|
||||
|
||||
|
||||
vec4 TextureCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 0.0, 0.0);
|
||||
vTextureCoord0 = vec4(uTMatrix0 * TextureCoord0).xy;
|
||||
|
||||
|
@ -131,6 +132,8 @@ void main()
|
|||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
|
|
|
@ -19,6 +19,7 @@ uniform mat4 uTMatrix1;
|
|||
uniform vec4 uGlobalAmbient;
|
||||
uniform vec4 uMaterialAmbient;
|
||||
uniform vec4 uMaterialDiffuse;
|
||||
uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
|
@ -94,7 +95,7 @@ void main()
|
|||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
gl_PointSize = uThickness;
|
||||
|
||||
|
||||
vec4 TextureCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 0.0, 0.0);
|
||||
vTextureCoord0 = vec4(uTMatrix0 * TextureCoord0).xy;
|
||||
|
||||
|
@ -136,6 +137,8 @@ void main()
|
|||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
|
|
|
@ -17,6 +17,7 @@ uniform mat4 uNMatrix;
|
|||
uniform vec4 uGlobalAmbient;
|
||||
uniform vec4 uMaterialAmbient;
|
||||
uniform vec4 uMaterialDiffuse;
|
||||
uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
|
@ -133,6 +134,8 @@ void main()
|
|||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
|
|
|
@ -18,9 +18,9 @@ namespace video
|
|||
// Base callback
|
||||
|
||||
COGLES2MaterialBaseCB::COGLES2MaterialBaseCB() :
|
||||
FirstUpdateBase(true), WVPMatrixID(-1), WVMatrixID(-1), NMatrixID(-1), GlobalAmbientID(-1), MaterialAmbientID(-1), MaterialDiffuseID(-1), MaterialSpecularID(-1), MaterialShininessID(-1), LightCountID(-1), LightTypeID(-1),
|
||||
FirstUpdateBase(true), WVPMatrixID(-1), WVMatrixID(-1), NMatrixID(-1), GlobalAmbientID(-1), MaterialAmbientID(-1), MaterialDiffuseID(-1), MaterialEmissiveID(-1), MaterialSpecularID(-1), MaterialShininessID(-1), LightCountID(-1), LightTypeID(-1),
|
||||
LightPositionID(-1), LightDirectionID(-1), LightAttenuationID(-1), LightAmbientID(-1), LightDiffuseID(-1), LightSpecularID(-1), FogEnableID(-1), FogTypeID(-1), FogColorID(-1), FogStartID(-1),
|
||||
FogEndID(-1), FogDensityID(-1), ThicknessID(-1), LightEnable(false), MaterialAmbient(SColorf(0.f, 0.f, 0.f)), MaterialDiffuse(SColorf(0.f, 0.f, 0.f)), MaterialSpecular(SColorf(0.f, 0.f, 0.f)),
|
||||
FogEndID(-1), FogDensityID(-1), ThicknessID(-1), LightEnable(false), MaterialAmbient(SColorf(0.f, 0.f, 0.f)), MaterialDiffuse(SColorf(0.f, 0.f, 0.f)), MaterialEmissive(SColorf(0.f, 0.f, 0.f)), MaterialSpecular(SColorf(0.f, 0.f, 0.f)),
|
||||
MaterialShininess(0.f), FogEnable(0), FogType(1), FogColor(SColorf(0.f, 0.f, 0.f, 1.f)), FogStart(0.f), FogEnd(0.f), FogDensity(0.f), Thickness(1.f)
|
||||
{
|
||||
for (u32 i = 0; i < 8; ++i)
|
||||
|
@ -40,6 +40,7 @@ void COGLES2MaterialBaseCB::OnSetMaterial(const SMaterial& material)
|
|||
LightEnable = material.Lighting;
|
||||
MaterialAmbient = SColorf(material.AmbientColor);
|
||||
MaterialDiffuse = SColorf(material.DiffuseColor);
|
||||
MaterialEmissive = SColorf(material.EmissiveColor);
|
||||
MaterialSpecular = SColorf(material.SpecularColor);
|
||||
MaterialShininess = material.Shininess;
|
||||
|
||||
|
@ -60,6 +61,7 @@ void COGLES2MaterialBaseCB::OnSetConstants(IMaterialRendererServices* services,
|
|||
GlobalAmbientID = services->getVertexShaderConstantID("uGlobalAmbient");
|
||||
MaterialAmbientID = services->getVertexShaderConstantID("uMaterialAmbient");
|
||||
MaterialDiffuseID = services->getVertexShaderConstantID("uMaterialDiffuse");
|
||||
MaterialEmissiveID = services->getVertexShaderConstantID("uMaterialEmissive");
|
||||
MaterialSpecularID = services->getVertexShaderConstantID("uMaterialSpecular");
|
||||
MaterialShininessID = services->getVertexShaderConstantID("uMaterialShininess");
|
||||
LightCountID = services->getVertexShaderConstantID("uLightCount");
|
||||
|
@ -105,6 +107,7 @@ void COGLES2MaterialBaseCB::OnSetConstants(IMaterialRendererServices* services,
|
|||
// TODO: this are all vertex shader constants, why are they all set as pixel shader constants? (it currently works so I'm scared to change it...)
|
||||
services->setPixelShaderConstant(MaterialAmbientID, reinterpret_cast<f32*>(&MaterialAmbient), 4);
|
||||
services->setPixelShaderConstant(MaterialDiffuseID, reinterpret_cast<f32*>(&MaterialDiffuse), 4);
|
||||
services->setPixelShaderConstant(MaterialEmissiveID, reinterpret_cast<f32*>(&MaterialEmissive), 4);
|
||||
services->setPixelShaderConstant(MaterialSpecularID, reinterpret_cast<f32*>(&MaterialSpecular), 4);
|
||||
services->setPixelShaderConstant(MaterialShininessID, &MaterialShininess, 1);
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ protected:
|
|||
s32 GlobalAmbientID;
|
||||
s32 MaterialAmbientID;
|
||||
s32 MaterialDiffuseID;
|
||||
s32 MaterialEmissiveID;
|
||||
s32 MaterialSpecularID;
|
||||
s32 MaterialShininessID;
|
||||
|
||||
|
@ -60,6 +61,7 @@ protected:
|
|||
SColorf GlobalAmbient;
|
||||
SColorf MaterialAmbient;
|
||||
SColorf MaterialDiffuse;
|
||||
SColorf MaterialEmissive;
|
||||
SColorf MaterialSpecular;
|
||||
f32 MaterialShininess;
|
||||
|
||||
|
|
Loading…
Reference in New Issue