Skip to content

Commit

Permalink
Merge pull request #1560 from ruddygreat/unshaded-displacements
Browse files Browse the repository at this point in the history
Add support for unshaded displacements
  • Loading branch information
Darkmajia authored Feb 10, 2025
2 parents e25ee5c + 222b74e commit ef1ac0b
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 1 deletion.
9 changes: 8 additions & 1 deletion Content.Client/DisplacementMap/DisplacementMapSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ public sealed class DisplacementMapSystem : EntitySystem
public bool TryAddDisplacement(DisplacementData data, SpriteComponent sprite, int index, string key, HashSet<string> revealedLayers)
{
if (data.ShaderOverride != null)
sprite.LayerSetShader(index, data.ShaderOverride);
{
//imp edit start - replaced the simple shader replacement w/ a ternary that checks if the layer is unshaded before setting the shader
sprite.LayerSetShader(index,
sprite[index] is SpriteComponent.Layer { ShaderPrototype: "unshaded" }
? data.ShaderOverrideUnshaded
: data.ShaderOverride);
//imp edit end
}

var displacementKey = $"{key}-displacement";
if (!revealedLayers.Add(displacementKey))
Expand Down
3 changes: 3 additions & 0 deletions Content.Shared/DisplacementMap/DisplacementData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,7 @@ public sealed partial class DisplacementData

[DataField]
public string? ShaderOverride = "DisplacedStencilDraw";

[DataField]
public string ShaderOverrideUnshaded = "DisplacedStencilDrawUnshaded";
}
11 changes: 11 additions & 0 deletions Resources/Prototypes/_Impstation/Shaders/shaders.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,14 @@
id: AccessibleFullStealth
kind: source
path: "/Textures/_Impstation/Shaders/accessible_full_stealth.swsl"

- type: shader
id: DisplacedStencilDrawUnshaded
kind: source
path: "/Textures/_Impstation/Shaders/displacement_unshaded.swsl"
stencil:
ref: 1
op: Keep
func: NotEqual
params:
displacementSize: 127
20 changes: 20 additions & 0 deletions Resources/Textures/_Impstation/Shaders/displacement_unshaded.swsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
light_mode unshaded;

uniform sampler2D displacementMap;
uniform highp float displacementSize;
uniform highp vec4 displacementUV;

varying highp vec2 displacementUVOut;

void vertex() {
displacementUVOut = mix(displacementUV.xy, displacementUV.zw, tCoord2);
}

void fragment() {
highp vec4 displacementSample = texture2D(displacementMap, displacementUVOut);
highp vec2 displacementValue = (displacementSample.xy - vec2(128.0 / 255.0)) / (1.0 - 128.0 / 255.0);
COLOR = zTexture(UV + displacementValue * TEXTURE_PIXEL_SIZE * displacementSize * vec2(1.0, -1.0));
COLOR.a *= displacementSample.a;
}


0 comments on commit ef1ac0b

Please sign in to comment.