Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,6 @@ set(GLSLSOURCELIST
${ENGINE_DIR}/renderer/glsl_source/ssao_fp.glsl
${ENGINE_DIR}/renderer/glsl_source/ssao_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexAnimation_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexLighting_DBS_entity_fp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexLighting_DBS_entity_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexLighting_DBS_world_fp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexLighting_DBS_world_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexSimple_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexSkinning_vp.glsl
${ENGINE_DIR}/renderer/glsl_source/vertexSprite_vp.glsl
Expand Down
146 changes: 22 additions & 124 deletions src/engine/renderer/gl_shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ ShaderKind shaderKind = ShaderKind::Unknown;

GLShader_generic *gl_genericShader = nullptr;
GLShader_lightMapping *gl_lightMappingShader = nullptr;
GLShader_vertexLighting_DBS_entity *gl_vertexLightingShader_DBS_entity = nullptr;
GLShader_vertexLighting_DBS_world *gl_vertexLightingShader_DBS_world = nullptr;
GLShader_forwardLighting_omniXYZ *gl_forwardLightingShader_omniXYZ = nullptr;
GLShader_forwardLighting_projXYZ *gl_forwardLightingShader_projXYZ = nullptr;
GLShader_forwardLighting_directionalSun *gl_forwardLightingShader_directionalSun = nullptr;
Expand Down Expand Up @@ -1470,62 +1468,14 @@ void GLShader_generic::SetShaderProgramUniforms( shaderProgram_t *shaderProgram
}

GLShader_lightMapping::GLShader_lightMapping( GLShaderManager *manager ) :
GLShader( "lightMapping", ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT | ATTR_COLOR, manager ),
GLShader( "lightMapping",
ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT | ATTR_COLOR, manager ),
u_TextureMatrix( this ),
u_SpecularExponent( this ),
u_ColorModulate( this ),
u_Color( this ),
u_AlphaThreshold( this ),
u_ViewOrigin( this ),
u_ModelViewProjectionMatrix( this ),
u_ParallaxDepthScale( this ),
u_ParallaxOffsetBias( this ),
u_NormalScale( this ),
u_numLights( this ),
u_Lights( this ),
GLDeformStage( this ),
GLCompileMacro_USE_DELUXE_MAPPING( this ),
GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP( this ),
GLCompileMacro_USE_PARALLAX_MAPPING( this ),
GLCompileMacro_USE_PHYSICAL_SHADING( this )
{
}

void GLShader_lightMapping::BuildShaderVertexLibNames( std::string& vertexInlines )
{
vertexInlines += "vertexSimple vertexSkinning vertexAnimation vertexSprite ";
}

void GLShader_lightMapping::BuildShaderFragmentLibNames( std::string& fragmentInlines )
{
fragmentInlines += "computeLight reliefMapping";
}

void GLShader_lightMapping::BuildShaderCompileMacros( std::string& /*compileMacros*/ )
{
}

void GLShader_lightMapping::SetShaderProgramUniforms( shaderProgram_t *shaderProgram )
{
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DiffuseMap" ), 0 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_NormalMap" ), 1 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_MaterialMap" ), 2 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightMap" ), 3 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DeluxeMap" ), 4 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_GlowMap" ), 5 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightTiles" ), 8 );
if( !glConfig2.uniformBufferObjectAvailable ) {
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_Lights" ), 9 );
}
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_HeightMap" ), 15 );
}

GLShader_vertexLighting_DBS_entity::GLShader_vertexLighting_DBS_entity( GLShaderManager *manager ) :
GLShader( "vertexLighting_DBS_entity", ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT, manager ),
u_TextureMatrix( this ),
u_SpecularExponent( this ),
u_AlphaThreshold( this ),
u_ViewOrigin( this ),
u_ModelMatrix( this ),
u_ModelViewProjectionMatrix( this ),
u_Bones( this ),
Expand All @@ -1534,105 +1484,53 @@ GLShader_vertexLighting_DBS_entity::GLShader_vertexLighting_DBS_entity( GLShader
u_ParallaxOffsetBias( this ),
u_NormalScale( this ),
u_EnvironmentInterpolation( this ),
u_LightWrapAround( this ),
u_LightGridOrigin( this ),
u_LightGridScale( this ),
u_numLights( this ),
u_Lights( this ),
GLDeformStage( this ),
GLCompileMacro_USE_BSP_SURFACE( this ),
GLCompileMacro_USE_VERTEX_SKINNING( this ),
GLCompileMacro_USE_VERTEX_ANIMATION( this ),
GLCompileMacro_USE_LIGHT_MAPPING( this ),
GLCompileMacro_USE_DELUXE_MAPPING( this ),
GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP( this ),
GLCompileMacro_USE_PARALLAX_MAPPING( this ),
GLCompileMacro_USE_REFLECTIVE_SPECULAR( this ),
GLCompileMacro_USE_PHYSICAL_SHADING( this )
{
}

void GLShader_vertexLighting_DBS_entity::BuildShaderVertexLibNames( std::string& vertexInlines )
{
vertexInlines += "vertexSimple vertexSkinning vertexAnimation ";
}

void GLShader_vertexLighting_DBS_entity::BuildShaderFragmentLibNames( std::string& fragmentInlines )
{
fragmentInlines += "computeLight reliefMapping";
}

void GLShader_vertexLighting_DBS_entity::BuildShaderCompileMacros( std::string& )
{
}

void GLShader_vertexLighting_DBS_entity::SetShaderProgramUniforms( shaderProgram_t *shaderProgram )
{
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DiffuseMap" ), 0 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_NormalMap" ), 1 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_MaterialMap" ), 2 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_EnvironmentMap0" ), 3 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_EnvironmentMap1" ), 4 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_GlowMap" ), 5 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightGrid1" ), 6 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightGrid2" ), 7 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightTiles" ), 8 );
if( !glConfig2.uniformBufferObjectAvailable ) {
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_Lights" ), 9 );
}
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_HeightMap" ), 15 );
}

GLShader_vertexLighting_DBS_world::GLShader_vertexLighting_DBS_world( GLShaderManager *manager ) :
GLShader( "vertexLighting_DBS_world",
ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT | ATTR_COLOR,
manager
),
u_TextureMatrix( this ),
u_SpecularExponent( this ),
u_ColorModulate( this ),
u_Color( this ),
u_AlphaThreshold( this ),
u_ViewOrigin( this ),
u_ModelMatrix( this ),
u_ModelViewProjectionMatrix( this ),
u_ParallaxDepthScale( this ),
u_ParallaxOffsetBias( this ),
u_NormalScale( this ),
u_LightWrapAround( this ),
u_LightGridOrigin( this ),
u_LightGridScale( this ),
u_numLights( this ),
u_Lights( this ),
GLDeformStage( this ),
GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP( this ),
GLCompileMacro_USE_PARALLAX_MAPPING( this ),
GLCompileMacro_USE_PHYSICAL_SHADING( this )
{
}

void GLShader_vertexLighting_DBS_world::BuildShaderVertexLibNames( std::string& vertexInlines )
void GLShader_lightMapping::BuildShaderVertexLibNames( std::string& vertexInlines )
{
vertexInlines += "vertexSimple vertexSkinning vertexAnimation vertexSprite ";
}
void GLShader_vertexLighting_DBS_world::BuildShaderFragmentLibNames( std::string& fragmentInlines )

void GLShader_lightMapping::BuildShaderFragmentLibNames( std::string& fragmentInlines )
{
fragmentInlines += "computeLight reliefMapping";
}

void GLShader_vertexLighting_DBS_world::BuildShaderCompileMacros( std::string& )
void GLShader_lightMapping::BuildShaderCompileMacros( std::string& /*compileMacros*/ )
{
}

void GLShader_vertexLighting_DBS_world::SetShaderProgramUniforms( shaderProgram_t *shaderProgram )
void GLShader_lightMapping::SetShaderProgramUniforms( shaderProgram_t *shaderProgram )
{
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DiffuseMap" ), 0 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_NormalMap" ), 1 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_MaterialMap" ), 2 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_GlowMap" ), 5 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightGrid1" ), 6 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightGrid2" ), 7 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightTiles" ), 8 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DiffuseMap" ), BIND_DIFFUSEMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_NormalMap" ), BIND_NORMALMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_HeightMap" ), BIND_HEIGHTMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_MaterialMap" ), BIND_MATERIALMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightMap" ), BIND_LIGHTMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_DeluxeMap" ), BIND_DELUXEMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_GlowMap" ), BIND_GLOWMAP );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_EnvironmentMap0" ), BIND_ENVIRONMENTMAP0 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_EnvironmentMap1" ), BIND_ENVIRONMENTMAP1 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_LightTiles" ), BIND_LIGHTTILES );
if( !glConfig2.uniformBufferObjectAvailable ) {
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_Lights" ), 9 );
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_Lights" ), BIND_LIGHTS );
}
glUniform1i( glGetUniformLocation( shaderProgram->program, "u_HeightMap" ), 15 );
}

GLShader_forwardLighting_omniXYZ::GLShader_forwardLighting_omniXYZ( GLShaderManager *manager ):
Expand Down
117 changes: 57 additions & 60 deletions src/engine/renderer/gl_shader.h
Original file line number Diff line number Diff line change
Expand Up @@ -778,11 +778,13 @@ class GLCompileMacro
// It also works regardless of RTTI is enabled or not.
enum EGLCompileMacro
{
USE_BSP_SURFACE,
USE_VERTEX_SKINNING,
USE_VERTEX_ANIMATION,
USE_VERTEX_SPRITE,
USE_TCGEN_ENVIRONMENT,
USE_TCGEN_LIGHTMAP,
USE_LIGHT_MAPPING,
USE_DELUXE_MAPPING,
USE_HEIGHTMAP_IN_NORMALMAP,
USE_PARALLAX_MAPPING,
Expand Down Expand Up @@ -837,6 +839,31 @@ class GLCompileMacro
virtual ~GLCompileMacro() = default;
};

class GLCompileMacro_USE_BSP_SURFACE :
GLCompileMacro
{
public:
GLCompileMacro_USE_BSP_SURFACE( GLShader *shader ) :
GLCompileMacro( shader )
{
}

const char *GetName() const
{
return "USE_BSP_SURFACE";
}

EGLCompileMacro GetType() const
{
return EGLCompileMacro::USE_BSP_SURFACE;
}

void SetBspSurface( bool enable )
{
SetMacro( enable );
}
};

class GLCompileMacro_USE_VERTEX_SKINNING :
GLCompileMacro
{
Expand Down Expand Up @@ -985,6 +1012,31 @@ class GLCompileMacro_USE_TCGEN_LIGHTMAP :
}
};

class GLCompileMacro_USE_LIGHT_MAPPING :
GLCompileMacro
{
public:
GLCompileMacro_USE_LIGHT_MAPPING( GLShader *shader ) :
GLCompileMacro( shader )
{
}

const char *GetName() const
{
return "USE_LIGHT_MAPPING";
}

EGLCompileMacro GetType() const
{
return EGLCompileMacro::USE_LIGHT_MAPPING;
}

void SetLightMapping( bool enable )
{
SetMacro( enable );
}
};

class GLCompileMacro_USE_DELUXE_MAPPING :
GLCompileMacro
{
Expand Down Expand Up @@ -2173,32 +2225,6 @@ class GLShader_lightMapping :
public u_Color,
public u_AlphaThreshold,
public u_ViewOrigin,
public u_ModelViewProjectionMatrix,
public u_ParallaxDepthScale,
public u_ParallaxOffsetBias,
public u_NormalScale,
public u_numLights,
public u_Lights,
public GLDeformStage,
public GLCompileMacro_USE_DELUXE_MAPPING,
public GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP,
public GLCompileMacro_USE_PARALLAX_MAPPING,
public GLCompileMacro_USE_PHYSICAL_SHADING
{
public:
GLShader_lightMapping( GLShaderManager *manager );
void BuildShaderVertexLibNames( std::string& vertexInlines );
void BuildShaderFragmentLibNames( std::string& fragmentInlines );
void BuildShaderCompileMacros( std::string& compileMacros );
void SetShaderProgramUniforms( shaderProgram_t *shaderProgram );
};

class GLShader_vertexLighting_DBS_entity :
public GLShader,
public u_TextureMatrix,
public u_SpecularExponent,
public u_AlphaThreshold,
public u_ViewOrigin,
public u_ModelMatrix,
public u_ModelViewProjectionMatrix,
public u_Bones,
Expand All @@ -2207,51 +2233,24 @@ class GLShader_vertexLighting_DBS_entity :
public u_ParallaxOffsetBias,
public u_NormalScale,
public u_EnvironmentInterpolation,
public u_LightWrapAround,
public u_LightGridOrigin,
public u_LightGridScale,
public u_numLights,
public u_Lights,
public GLDeformStage,
public GLCompileMacro_USE_BSP_SURFACE,
public GLCompileMacro_USE_VERTEX_SKINNING,
public GLCompileMacro_USE_VERTEX_ANIMATION,
public GLCompileMacro_USE_LIGHT_MAPPING,
public GLCompileMacro_USE_DELUXE_MAPPING,
public GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP,
public GLCompileMacro_USE_PARALLAX_MAPPING,
public GLCompileMacro_USE_REFLECTIVE_SPECULAR,
public GLCompileMacro_USE_PHYSICAL_SHADING
{
public:
GLShader_vertexLighting_DBS_entity( GLShaderManager *manager );
void BuildShaderVertexLibNames( std::string& vertexInlines );
void BuildShaderFragmentLibNames( std::string& fragmentInlines );
void BuildShaderCompileMacros( std::string& compileMacros );
void SetShaderProgramUniforms( shaderProgram_t *shaderProgram );
};

class GLShader_vertexLighting_DBS_world :
public GLShader,
public u_TextureMatrix,
public u_SpecularExponent,
public u_ColorModulate,
public u_Color,
public u_AlphaThreshold,
public u_ViewOrigin,
public u_ModelMatrix,
public u_ModelViewProjectionMatrix,
public u_ParallaxDepthScale,
public u_ParallaxOffsetBias,
public u_NormalScale,
public u_LightWrapAround,
public u_LightGridOrigin,
public u_LightGridScale,
public u_numLights,
public u_Lights,
public GLDeformStage,
public GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP,
public GLCompileMacro_USE_PARALLAX_MAPPING,
public GLCompileMacro_USE_PHYSICAL_SHADING
{
public:
GLShader_vertexLighting_DBS_world( GLShaderManager *manager );
GLShader_lightMapping( GLShaderManager *manager );
void BuildShaderVertexLibNames( std::string& vertexInlines );
void BuildShaderFragmentLibNames( std::string& fragmentInlines );
void BuildShaderCompileMacros( std::string& compileMacros );
Expand Down Expand Up @@ -2705,8 +2704,6 @@ extern ShaderKind shaderKind;

extern GLShader_generic *gl_genericShader;
extern GLShader_lightMapping *gl_lightMappingShader;
extern GLShader_vertexLighting_DBS_entity *gl_vertexLightingShader_DBS_entity;
extern GLShader_vertexLighting_DBS_world *gl_vertexLightingShader_DBS_world;
extern GLShader_forwardLighting_omniXYZ *gl_forwardLightingShader_omniXYZ;
extern GLShader_forwardLighting_projXYZ *gl_forwardLightingShader_projXYZ;
extern GLShader_forwardLighting_directionalSun *gl_forwardLightingShader_directionalSun;
Expand Down
Loading