DirectX HLSL és C# (SharpDX)

DirectX HLSL és C# (SharpDX)
2016-01-05T11:57:19+01:00
2016-01-05T13:42:59+01:00
2022-12-03T04:10:37+01:00
Peti_22
Üdv,

HLSL kód és C# SharpDX kód részről is kéne egy kis segítség.

Adott egy 3D környezet ahol megjelenik egy gömb. A gömbnek a topológiáját át állítottam:

context.InputAssembler.PrimitiveTopology = PrimitiveTopology.PointList;
Így 1x1 pixeles pontok jelenek meg a poligonoknál. Ezt szeretném le cserélni nagyobb négyszögekre.
HLSL fájlból kap VertexShadert és PixelShadert ha jól tudom amit én akarok ahhoz GeometryShader kell.

Sajnos nem túl jól dokumentált a dolog és példákat sem nagyon találtam.

HLSL:

struct GS_OUTPUT { float4 pos : SV_POSITION; }; struct VS_INPUT { float3 pos : ANCHOR; }; VS_INPUT VShader(VS_INPUT input) { return input; } float4 PShader(float4 position: SV_POSITION) : SV_Target { return float4(0.0, 1.0, 0.5, 0.0); } //[maxvertexcount(3)] void Triangulat0r( point VS_INPUT input[1], inout TriangleStream<GS_OUTPUT> OutputStream ) { GS_OUTPUT output; float3 _input; _input = input[0].pos; output.pos = float4(_input.x + 0.1, _input.y - 0.1, _input.z, 1.0); OutputStream.Append( output ); output.pos = float4(_input.x - 0.1, _input.y - 0.1, _input.z, 1.0); OutputStream.Append( output ); output.pos = float4(_input.x, _input.y + 0.1, _input.z, 1.0); OutputStream.Append( output ); }
C# SharpDX:

using (var geometryShaderBytecode = HLSLCompiler.CompileFromFile(@"Shaders.hlsl", "Triangulat0r", "gs_5_0")) { geometryShader = ToDispose(new GeometryShader(device, geometryShaderBytecode)); // Layout from VertexShader input signature vertexLayout = ToDispose(new InputLayout(device, geometryShaderBytecode.GetPart(ShaderBytecodePart.InputSignatureBlob), new[] { new InputElement("ANCHOR", 0, Format.R32G32B32_Float, 0, 0), // "NORMAL" = the vertex normal new InputElement("NORMAL", 0, Format.R32G32B32_Float, 12, 0), // "COLOR" new InputElement("COLOR", 0, Format.R8G8B8A8_UNorm, 24, 0), })); }
Mutasd a teljes hozzászólást!
Helló!

Én ugyan nem értek hozzá, de Dante kolléga blogján két bejegyzést írt bevezetésnek.

Egy, kettő
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd