#ifndef _PC_STYLIZATION_Geometry_SHADER_H_ #define _PC_STYLIZATION_Geometry_SHADER_H_ [maxvertexcount(4)] void PointCloud_GS(point GeometryInput input[1], inout TriangleStream outputStream) { PixelInput output; // Initialize vertex attributes. output.Color = input[0].Color; // Region filtering. if (input[0].DISCARD_PROP > 1.2f) return; // Compute point size offsets in screen space. float2 size = float2( input[0].PSIZE_PROP / gScreenSize.x, input[0].PSIZE_PROP / gScreenSize.y); output.HPos = input[0].HPos; float w = output.HPos.w; // Perspective divide. output.HPos /= w; float x = output.HPos.x; float y = output.HPos.y; // Output tristrip quad. output.HPos.x = x - size.x; output.HPos.y = y + size.y; outputStream.Append(output); //output.HPos.x = x - size.x; output.HPos.y = y - size.y; outputStream.Append(output); output.HPos.x = x + size.x; output.HPos.y = y + size.y; outputStream.Append(output); //output.HPos.x = x + size.x; output.HPos.y = y - size.y; outputStream.Append(output); outputStream.RestartStrip(); } #endif