From 688b5f42e9bfe498d7af7075d4d8f4429867f3a3 Mon Sep 17 00:00:00 2001 From: Miles Macklin Date: Fri, 9 Jun 2017 13:41:15 +1200 Subject: 1.2.0.beta.1 --- demo/d3d/shaders/diffusePS.hlsl | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 demo/d3d/shaders/diffusePS.hlsl (limited to 'demo/d3d/shaders/diffusePS.hlsl') diff --git a/demo/d3d/shaders/diffusePS.hlsl b/demo/d3d/shaders/diffusePS.hlsl new file mode 100644 index 0000000..b548b49 --- /dev/null +++ b/demo/d3d/shaders/diffusePS.hlsl @@ -0,0 +1,29 @@ +#include "shaderCommon.h" + +cbuffer constBuf : register(b0) +{ + DiffuseShaderConst gParams; +}; + +float sqr(float x) { return x * x; } + +float4 diffusePS(DiffuseGeometryOut input) : SV_TARGET +{ + float attenuation = 1.0f; + float lifeTime = input.worldPos.w; + float lifeFade = min(1.0, lifeTime*0.125); + float velocityFade = input.viewVel.w; + + // calculate normal from texture coordinates + float3 normal = float3(input.uv * 2.0 + float2(-1.0, -1.0), 0.0); + float mag = dot(normal.xy, normal.xy); + + // kill pixels outside circle + if (mag > 1.0) + discard; + + normal.z = 1.0-mag; + + float alpha = lifeFade*velocityFade*sqr(normal.z); + return float4(alpha, alpha, alpha, alpha); +} -- cgit v1.2.3