Skip to content

Commit

Permalink
Cleanup shader generation code (#10663)
Browse files Browse the repository at this point in the history
Shader generation is a mess. This commit cleans some parts up, including dropping remains of HLSL support which was never actually implemented.
  • Loading branch information
numberZero committed Dec 19, 2020
1 parent 664f5ce commit ccbf802
Show file tree
Hide file tree
Showing 11 changed files with 164 additions and 384 deletions.
4 changes: 2 additions & 2 deletions client/shaders/nodes_shader/opengl_fragment.glsl
Expand Up @@ -22,7 +22,7 @@ varying vec3 eyeVec;
const float fogStart = FOG_START;
const float fogShadingParameter = 1.0 / ( 1.0 - fogStart);

#ifdef ENABLE_TONE_MAPPING
#if ENABLE_TONE_MAPPING

This comment has been minimized.

Copy link
@randomMesh

randomMesh Dec 20, 2020

I think this change is not good.

The reason for this is that it's common for such flags to be left undefined, leading to the #if statement having an undefined behaviour. Most sane compilers will give undefined macros a value of '0' during such #if comparisons, but some compilers throw errors. So, to play it safe, use #ifdef.

For further reading, refer to the coding convention document of DCSS.

This comment has been minimized.

Copy link
@sfan5

sfan5 Dec 20, 2020

Member

C coding conventions are irrelevant for shaders, we always define all of these flags ourselves in our own code.

This comment has been minimized.

Copy link
@randomMesh

randomMesh Dec 20, 2020

Oops. I just realized it's in the GLSL files. I mistook this for C/C++ sources.
Sorry, my fault.


/* Hable's UC2 Tone mapping parameters
A = 0.22;
Expand Down Expand Up @@ -73,7 +73,7 @@ void main(void)

vec4 col = vec4(color.rgb * varColor.rgb, 1.0);

#ifdef ENABLE_TONE_MAPPING
#if ENABLE_TONE_MAPPING
col = applyToneMapping(col);
#endif

Expand Down
4 changes: 2 additions & 2 deletions client/shaders/object_shader/opengl_fragment.glsl
Expand Up @@ -19,7 +19,7 @@ const float BS = 10.0;
const float fogStart = FOG_START;
const float fogShadingParameter = 1.0 / (1.0 - fogStart);

#ifdef ENABLE_TONE_MAPPING
#if ENABLE_TONE_MAPPING

/* Hable's UC2 Tone mapping parameters
A = 0.22;
Expand Down Expand Up @@ -75,7 +75,7 @@ void main(void)

col.rgb *= emissiveColor.rgb * vIDiff;

#ifdef ENABLE_TONE_MAPPING
#if ENABLE_TONE_MAPPING
col = applyToneMapping(col);
#endif

Expand Down
6 changes: 1 addition & 5 deletions src/client/clientenvironment.cpp
Expand Up @@ -51,12 +51,8 @@ class CAOShaderConstantSetter : public IShaderConstantSetter

~CAOShaderConstantSetter() override = default;

void onSetConstants(video::IMaterialRendererServices *services,
bool is_highlevel) override
void onSetConstants(video::IMaterialRendererServices *services) override
{
if (!is_highlevel)
return;

// Ambient color
video::SColorf emissive_color(m_emissive_color);

Expand Down
6 changes: 1 addition & 5 deletions src/client/game.cpp
Expand Up @@ -475,12 +475,8 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter
g_settings->deregisterChangedCallback("enable_fog", settingsCallback, this);
}

virtual void onSetConstants(video::IMaterialRendererServices *services,
bool is_highlevel)
void onSetConstants(video::IMaterialRendererServices *services) override
{
if (!is_highlevel)
return;

// Background color
video::SColor bgcolor = m_sky->getBgColor();
video::SColorf bgcolorf(bgcolor);
Expand Down
2 changes: 1 addition & 1 deletion src/client/hud.cpp
Expand Up @@ -100,7 +100,7 @@ Hud::Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
if (g_settings->getBool("enable_shaders")) {
IShaderSource *shdrsrc = client->getShaderSource();
u16 shader_id = shdrsrc->getShader(
m_mode == HIGHLIGHT_HALO ? "selection_shader" : "default_shader", 1, 1);
m_mode == HIGHLIGHT_HALO ? "selection_shader" : "default_shader", TILE_MATERIAL_ALPHA);
m_selection_material.MaterialType = shdrsrc->getShaderInfo(shader_id).material;
} else {
m_selection_material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
Expand Down
2 changes: 1 addition & 1 deletion src/client/minimap.cpp
Expand Up @@ -612,7 +612,7 @@ void Minimap::drawMinimap(core::rect<s32> rect) {
material.TextureLayer[1].Texture = data->heightmap_texture;

if (m_enable_shaders && data->mode.type == MINIMAP_TYPE_SURFACE) {
u16 sid = m_shdrsrc->getShader("minimap_shader", 1, 1);
u16 sid = m_shdrsrc->getShader("minimap_shader", TILE_MATERIAL_ALPHA);
material.MaterialType = m_shdrsrc->getShaderInfo(sid).material;
} else {
material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
Expand Down
2 changes: 1 addition & 1 deletion src/client/render/interlaced.cpp
Expand Up @@ -36,7 +36,7 @@ void RenderingCoreInterlaced::initMaterial()
mat.UseMipMaps = false;
mat.ZBuffer = false;
mat.ZWriteEnable = false;
u32 shader = s->getShader("3d_interlaced_merge", TILE_MATERIAL_BASIC, 0);
u32 shader = s->getShader("3d_interlaced_merge", TILE_MATERIAL_BASIC);
mat.MaterialType = s->getShaderInfo(shader).material;
for (int k = 0; k < 3; ++k) {
mat.TextureLayer[k].AnisotropicFilter = false;
Expand Down

0 comments on commit ccbf802

Please sign in to comment.