Some settings for the normal shaded material.

--HG--
branch : gsoc2013-dfighter
hg/feature/gsoc2013-dfighter
dfighter1985 11 years ago
parent e740fd4aeb
commit c74e279282

@ -54,6 +54,7 @@ namespace NL3D
if( itr != vertexPrograms.end() )
return false;
glGetError();
nglAttachShader( programId, shader->getShaderId() );
GLenum error = glGetError();
@ -78,6 +79,7 @@ namespace NL3D
if( itr != pixelPrograms.end() )
return false;
glGetError();
nglAttachShader( programId, shader->getShaderId() );
GLenum error = glGetError();

@ -239,7 +239,7 @@ namespace NL3D
void CGLSLShaderGenerator::addDiffuse()
{
ss << "float diffuse = vec4( ";
ss << "vec4 diffuse = vec4( ";
ss << float( material->getDiffuse().R / 255.0f ) << ", ";
ss << float( material->getDiffuse().G / 255.0f ) << ", ";
ss << float( material->getDiffuse().B / 255.0f ) << ", ";

@ -1071,6 +1071,9 @@ private:
void setupUVPtr(uint stage, CVertexBufferInfo &VB, uint uvId);
void setupNormalPass();
/// \name Lightmap.
// @{
void computeLightMapInfos(const CMaterial &mat);

@ -577,6 +577,32 @@ void CDriverGL3::endMultiPass()
}
}
const char *samplers[ 4 ] =
{
"sampler0",
"sampler1",
"sampler2",
"sampler3"
};
void CDriverGL3::setupNormalPass()
{
const CMaterial &mat = *_CurrentMaterial;
for( int i = 0; i < 4; i++ )
{
ITexture *t = mat.getTexture( i );
if( t == NULL )
continue;
int index = getUniformLocation( samplers[ i ] );
if( index == -1 )
continue;
setUniform1i( index, i );
}
}
// ***************************************************************************
void CDriverGL3::computeLightMapInfos (const CMaterial &mat)
{

@ -118,6 +118,9 @@ namespace NL3D
bool CDriverGL3::renderTriangles2( CMaterial &mat, uint32 startIndex, uint32 numTris )
{
if( !setupMaterial( mat ) )
return false;
if( !setupProgram( mat ) )
return false;
@ -186,9 +189,7 @@ namespace NL3D
p->attachPixelProgram( pp );
if( !p->link( log ) )
{
delete vp;
vp = NULL;
delete pp;
pp = NULL;
delete p;
p = NULL;
@ -206,6 +207,13 @@ namespace NL3D
setUniformMatrix4fv( mvpIndex, 1, false, mat.get() );
}
switch( mat.getShader() )
{
case CMaterial::Normal:
setupNormalPass();
break;
}
return true;
}

Loading…
Cancel
Save