aboutsummaryrefslogtreecommitdiff
path: root/demo/d3d11/shaders/diffuseGS.hlsl
diff options
context:
space:
mode:
Diffstat (limited to 'demo/d3d11/shaders/diffuseGS.hlsl')
-rw-r--r--demo/d3d11/shaders/diffuseGS.hlsl176
1 files changed, 0 insertions, 176 deletions
diff --git a/demo/d3d11/shaders/diffuseGS.hlsl b/demo/d3d11/shaders/diffuseGS.hlsl
deleted file mode 100644
index e7a92db..0000000
--- a/demo/d3d11/shaders/diffuseGS.hlsl
+++ /dev/null
@@ -1,176 +0,0 @@
-#include "shaderCommon.h"
-
-cbuffer constBuf : register(b0)
-{
- DiffuseShaderConst gParams;
-};
-
-static const float2 corners[4] =
-{
- float2(0.0, 1.0),
- float2(0.0, 0.0),
- float2(1.0, 1.0),
- float2(1.0, 0.0)
-};
-
-[maxvertexcount(4)]
-void diffuseGS(point DiffuseVertexOut input[1], inout TriangleStream<DiffuseGeometryOut> triStream)
-{
- float4 ndcPos = input[0].ndcPos;
-
- // frustrum culling
- const float ndcBound = 1.0;
- if (ndcPos.x < -ndcBound) return;
- if (ndcPos.x > ndcBound) return;
- if (ndcPos.y < -ndcBound) return;
- if (ndcPos.y > ndcBound) return;
-
- float pointScale = gParams.diffuseScale;
- float velocityScale = 1.0;
-
- float3 v = input[0].viewVel.xyz;
- float3 p = input[0].viewPos.xyz;
-
- // billboard in eye space
- float3 u = float3(0.0, pointScale, 0.0);
- float3 l = float3(pointScale, 0.0, 0.0);
-
- // increase size based on life
- float lifeTime = input[0].worldPos.w;
-
- float lifeFade = lerp(1.0f + gParams.diffusion, 1.0, min(1.0, lifeTime*0.25f));
- u *= lifeFade;
- l *= lifeFade;
-
- float fade = 1.0/(lifeFade*lifeFade);
- float vlen = length(v)*gParams.motionBlurScale;
-
- if (vlen > 0.5)
- {
- float len = max(pointScale, vlen*0.016);
- fade = min(1.0, 2.0/(len/pointScale));
-
- u = normalize(v)*max(pointScale, vlen*0.016); // assume 60hz
- l = normalize(cross(u, float3(0.0, 0.0, -1.0)))*pointScale;
- }
-
-
- {
-
- DiffuseGeometryOut output;
-
- output.worldPos = input[0].worldPos; // vertex world pos (life in w)
- output.viewPos = input[0].viewPos; // vertex eye pos
- output.viewVel.xyz = input[0].viewVel.xyz; // vertex velocity in view space
- output.viewVel.w = fade;
- output.lightDir = mul(gParams.modelView, float4(gParams.lightDir, 0.0));
- output.color = input[0].color;
-
- output.uv = float4(0.0, 1.0, 0.0, 0.0);
- output.clipPos = mul(gParams.projection, float4(p + u - l, 1.0));
- triStream.Append(output);
-
- output.uv = float4(0.0, 0.0, 0.0, 0.0);
- output.clipPos = mul(gParams.projection, float4(p - u - l, 1.0));
- triStream.Append(output);
-
- output.uv = float4(1.0, 1.0, 0.0, 0.0);
- output.clipPos = mul(gParams.projection, float4(p + u + l, 1.0));
- triStream.Append(output);
-
- output.uv = float4(1.0, 0.0, 0.0, 0.0);
- output.clipPos = mul(gParams.projection, float4(p - u + l, 1.0));
- triStream.Append(output);
- }
-
-}
-
-#if 0
-
-
-const char *geometryDiffuseShader =
-"#version 120\n"
-"#extension GL_EXT_geometry_shader4 : enable\n"
-STRINGIFY(
-
-uniform float pointScale; // point size in world space
-uniform float motionBlurScale;
-uniform float diffusion;
-uniform vec3 lightDir;
-
-void main()
-{
- vec4 ndcPos = gl_TexCoordIn[0][5];
-
- // frustrum culling
- const float ndcBound = 1.0;
- if (ndcPos.x < -ndcBound) return;
- if (ndcPos.x > ndcBound) return;
- if (ndcPos.y < -ndcBound) return;
- if (ndcPos.y > ndcBound) return;
-
- float velocityScale = 1.0;
-
- vec3 v = gl_TexCoordIn[0][3].xyz*velocityScale;
- vec3 p = gl_TexCoordIn[0][2].xyz;
-
- // billboard in eye space
- vec3 u = vec3(0.0, pointScale, 0.0);
- vec3 l = vec3(pointScale, 0.0, 0.0);
-
- // increase size based on life
- float lifeFade = mix(1.0f+diffusion, 1.0, min(1.0, gl_TexCoordIn[0][1].w*0.25f));
- u *= lifeFade;
- l *= lifeFade;
-
- //lifeFade = 1.0;
-
- float fade = 1.0/(lifeFade*lifeFade);
- float vlen = length(v)*motionBlurScale;
-
- if (vlen > 0.5)
- {
- float len = max(pointScale, vlen*0.016);
- fade = min(1.0, 2.0/(len/pointScale));
-
- u = normalize(v)*max(pointScale, vlen*0.016); // assume 60hz
- l = normalize(cross(u, vec3(0.0, 0.0, -1.0)))*pointScale;
- }
-
- {
-
- gl_TexCoord[1] = gl_TexCoordIn[0][1]; // vertex world pos (life in w)
- gl_TexCoord[2] = gl_TexCoordIn[0][2]; // vertex eye pos
- gl_TexCoord[3] = gl_TexCoordIn[0][3]; // vertex velocity in view space
- gl_TexCoord[3].w = fade;
- gl_TexCoord[4] = gl_ModelViewMatrix*vec4(lightDir, 0.0);
- gl_TexCoord[4].w = gl_TexCoordIn[0][3].w; // attenuation
- gl_TexCoord[5].xyzw = gl_TexCoordIn[0][4].xyzw; // color
-
- float zbias = 0.0f;//0.00125*2.0;
-
- gl_TexCoord[0] = vec4(0.0, 1.0, 0.0, 0.0);
- gl_Position = gl_ProjectionMatrix * vec4(p + u - l, 1.0);
- gl_Position.z -= zbias;
- EmitVertex();
-
- gl_TexCoord[0] = vec4(0.0, 0.0, 0.0, 0.0);
- gl_Position = gl_ProjectionMatrix * vec4(p - u - l, 1.0);
- gl_Position.z -= zbias;
- EmitVertex();
-
- gl_TexCoord[0] = vec4(1.0, 1.0, 0.0, 0.0);
- gl_Position = gl_ProjectionMatrix * vec4(p + u + l, 1.0);
- gl_Position.z -= zbias;
- EmitVertex();
-
- gl_TexCoord[0] = vec4(1.0, 0.0, 0.0, 0.0);
- gl_Position = gl_ProjectionMatrix * vec4(p - u + l, 1.0);
- gl_Position.z -= zbias;
- EmitVertex();
- }
-}
-);
-
-
-#endif \ No newline at end of file