diff options
author | Paramat <paramat@users.noreply.github.com> | 2019-03-27 00:18:43 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-27 00:18:43 +0000 |
commit | 42e1a127140965cac1be6e51e48192e341c2a29e (patch) | |
tree | 9c1d824e6b70838a13afa4870f219108d4d97899 /src/client | |
parent | 5e7662ca168b47ed3e81901d53bff2eb712f571c (diff) | |
download | hax-minetest-server-42e1a127140965cac1be6e51e48192e341c2a29e.tar.gz hax-minetest-server-42e1a127140965cac1be6e51e48192e341c2a29e.zip |
Require 'waving = 3' in a nodedef to apply the liquid waving shader (#8418)
Makes the liquid waving shader per-nodedef like waving leaves/plants,
instead of being applied to all liquids.
Like the waving leaves/plants shaders, the liquid waving shader can
also be applied to meshes and nodeboxes.
Derived from a PR by t0ny2.
Diffstat (limited to '')
-rw-r--r-- | src/client/shader.cpp | 10 | ||||
-rw-r--r-- | src/client/tile.h | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/client/shader.cpp b/src/client/shader.cpp index 3b49a36ba..f36ff3d85 100644 --- a/src/client/shader.cpp +++ b/src/client/shader.cpp @@ -527,15 +527,18 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp switch (material_type) { case TILE_MATERIAL_OPAQUE: case TILE_MATERIAL_LIQUID_OPAQUE: + case TILE_MATERIAL_WAVING_LIQUID_OPAQUE: shaderinfo.base_material = video::EMT_SOLID; break; case TILE_MATERIAL_ALPHA: case TILE_MATERIAL_LIQUID_TRANSPARENT: + case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT: shaderinfo.base_material = video::EMT_TRANSPARENT_ALPHA_CHANNEL; break; case TILE_MATERIAL_BASIC: case TILE_MATERIAL_WAVING_LEAVES: case TILE_MATERIAL_WAVING_PLANTS: + case TILE_MATERIAL_WAVING_LIQUID_BASIC: shaderinfo.base_material = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; break; } @@ -631,10 +634,13 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp "TILE_MATERIAL_LIQUID_OPAQUE", "TILE_MATERIAL_WAVING_LEAVES", "TILE_MATERIAL_WAVING_PLANTS", - "TILE_MATERIAL_OPAQUE" + "TILE_MATERIAL_OPAQUE", + "TILE_MATERIAL_WAVING_LIQUID_BASIC", + "TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT", + "TILE_MATERIAL_WAVING_LIQUID_OPAQUE", }; - for (int i = 0; i < 7; i++){ + for (int i = 0; i < 10; i++){ shaders_header += "#define "; shaders_header += materialTypes[i]; shaders_header += " "; diff --git a/src/client/tile.h b/src/client/tile.h index 2a33dd160..d0c45b4a4 100644 --- a/src/client/tile.h +++ b/src/client/tile.h @@ -144,7 +144,10 @@ enum MaterialType{ TILE_MATERIAL_LIQUID_OPAQUE, TILE_MATERIAL_WAVING_LEAVES, TILE_MATERIAL_WAVING_PLANTS, - TILE_MATERIAL_OPAQUE + TILE_MATERIAL_OPAQUE, + TILE_MATERIAL_WAVING_LIQUID_BASIC, + TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT, + TILE_MATERIAL_WAVING_LIQUID_OPAQUE, }; // Material flags @@ -208,16 +211,19 @@ struct TileLayer switch (material_type) { case TILE_MATERIAL_OPAQUE: case TILE_MATERIAL_LIQUID_OPAQUE: + case TILE_MATERIAL_WAVING_LIQUID_OPAQUE: material.MaterialType = video::EMT_SOLID; break; case TILE_MATERIAL_BASIC: case TILE_MATERIAL_WAVING_LEAVES: case TILE_MATERIAL_WAVING_PLANTS: + case TILE_MATERIAL_WAVING_LIQUID_BASIC: material.MaterialTypeParam = 0.5; material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; break; case TILE_MATERIAL_ALPHA: case TILE_MATERIAL_LIQUID_TRANSPARENT: + case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT: material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; break; default: |