diff --git a/packages/wolf_3d_renderer/shaders/wolf_world.frag b/packages/wolf_3d_renderer/shaders/wolf_world.frag index faa0f2f..8f64370 100644 --- a/packages/wolf_3d_renderer/shaders/wolf_world.frag +++ b/packages/wolf_3d_renderer/shaders/wolf_world.frag @@ -29,17 +29,21 @@ void main() { centered *= 1.0 + radius2 * 0.045; uv = centered * 0.5 + 0.5; - // Fill outside warped bounds with a subtle gray plastic TV bezel. + // Fill outside warped bounds with a darker consumer-TV charcoal bezel. if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) { vec2 clampedUv = clamp(uv, 0.0, 1.0); vec2 edgeDelta = abs(uv - clampedUv); float overflow = max(edgeDelta.x, edgeDelta.y); - float verticalShade = 0.96 + 0.06 * (1.0 - (FlutterFragCoord().y / uResolution.y)); - float depthShade = 1.0 - smoothstep(0.0, 0.06, overflow) * 0.18; - float grain = sin(FlutterFragCoord().x * 0.21 + FlutterFragCoord().y * 0.11) * 0.01; + float verticalShade = 0.90 + 0.08 * (1.0 - (FlutterFragCoord().y / uResolution.y)); + float depthShade = 1.0 - smoothstep(0.0, 0.06, overflow) * 0.24; + float grain = sin(FlutterFragCoord().x * 0.21 + FlutterFragCoord().y * 0.11) * 0.007; + float moldedHighlight = smoothstep(0.08, 0.0, overflow) * 0.045; - vec3 bezelColor = vec3(0.46, 0.46, 0.44) * verticalShade * depthShade + vec3(grain); + vec3 bezelColor = + vec3(0.26, 0.26, 0.25) * verticalShade * depthShade + + vec3(moldedHighlight) + + vec3(grain); fragColor = vec4(bezelColor, 1.0); return; }