aboutsummaryrefslogtreecommitdiff
path: root/demo/d3d11/shaders/pointGS.hlsl
diff options
context:
space:
mode:
Diffstat (limited to 'demo/d3d11/shaders/pointGS.hlsl')
-rw-r--r--demo/d3d11/shaders/pointGS.hlsl84
1 files changed, 0 insertions, 84 deletions
diff --git a/demo/d3d11/shaders/pointGS.hlsl b/demo/d3d11/shaders/pointGS.hlsl
deleted file mode 100644
index 2d8126e..0000000
--- a/demo/d3d11/shaders/pointGS.hlsl
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "shaderCommon.h"
-
-cbuffer constBuf : register(b0)
-{
- PointShaderConst 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 pointGS(point PointVertexOut input[1], inout TriangleStream<PointGeoOut> triStream)
-{
- float4 gl_Position;
- float4 gl_TexCoord[6];
-
- {
- [unroll]
- for (int i = 0; i < 6; i++)
- gl_TexCoord[i] = float4(0.0f, 0.0f, 0.0f, 0.0f);
- }
-
- const float4x4 gl_ModelViewMatrix = gParams.modelview;
- const float pointRadius = gParams.pointRadius;
- const float pointScale = gParams.pointScale;
- const float4x4 lightTransform = gParams.lightTransform;
- const float3 lightDir = gParams.lightDir.xyz;
- const int mode = gParams.mode;
-
- float4 viewPos = input[0].position;
- float density = input[0].density;
- unsigned int phase = input[0].phase;
- float4 gl_Vertex = input[0].vertex;
-
- //float gl_PointSize = -pointScale * (pointRadius / viewPos.z);
- //float spriteSize = (pointRadius / viewPos.z);
- float spriteSize = pointRadius * 2;
-
- PointGeoOut output;
-
- for (int i = 0; i < 4; ++i)
- {
-
- float4 eyePos = viewPos; // start with point position
- eyePos.xy += spriteSize * (corners[i] - float2(0.5, 0.5)); // add corner position
- gl_Position = mul(gParams.projection, eyePos); // complete transformation
-
- gl_TexCoord[0].xy = corners[i].xy; // use corner as texCoord
- gl_TexCoord[0].y = 1.0f - gl_TexCoord[0].y; // flip the y component of uv (glsl to hlsl conversion)
- gl_TexCoord[1] = mul(lightTransform, float4(gl_Vertex.xyz - lightDir * pointRadius * 2.0, 1.0));
- gl_TexCoord[2] = mul(gl_ModelViewMatrix, float4(lightDir, 0.0));
-
- if (mode == 1)
- {
- // density visualization
- if (density < 0.0f)
- gl_TexCoord[3].xyz = lerp(float3(0.1, 0.1, 1.0), float3(0.1, 1.0, 1.0), -density);
- else
- gl_TexCoord[3].xyz = lerp(float3(1.0, 1.0, 1.0), float3(0.1, 0.2, 1.0), density);
- }
- else if (mode == 2)
- {
- //gl_PointSize *= clamp(gl_Vertex.w * 0.25, 0.0f, 1.0);
- float tmp = clamp(gl_Vertex.w * 0.05, 0.0f, 1.0);
- gl_TexCoord[3].xyzw = float4(tmp, tmp, tmp, tmp);
- }
- else
- {
- gl_TexCoord[3].xyz = lerp(gParams.colors[phase % 8].xyz * 2.0, float3(1.0, 1.0, 1.0), 0.1);
- }
-
- gl_TexCoord[4].xyz = gl_Vertex.xyz;
- gl_TexCoord[5].xyz = viewPos.xyz;
-
- output.position = gl_Position;
- [unroll]
- for (int j = 0; j < 6; j++)
- output.texCoord[j] = gl_TexCoord[j];
-
- triStream.Append(output);
- }
-}