- Home /
How to integrate maxvertexcount method in my shader??
Hello all,
I have a method that gives me a wirefame look to the 3d object and I want to integrate lines of code that will give me a wireframe look but without diagonals. I'm struggling with the integration.
Wireframe with diagonals (taken from here):
[maxvertexcount(3)]
void MyGeometryProgram (
triangle InterpolatorsVertex i[3],
inout TriangleStream<InterpolatorsGeometry> stream
) {
float3 p0 = i[0].worldPos.xyz;
float3 p1 = i[1].worldPos.xyz;
float3 p2 = i[2].worldPos.xyz;
float3 triangleNormal = normalize(cross(p1 - p0, p2 - p0));
i[0].normal = triangleNormal;
i[1].normal = triangleNormal;
i[2].normal = triangleNormal;
InterpolatorsGeometry g0, g1, g2;
g0.data = i[0];
g1.data = i[1];
g2.data = i[2];
g0.barycentricCoordinates = float3(1, 0);
g1.barycentricCoordinates = float3(0, 1);
g2.barycentricCoordinates = float3(0, 0);
stream.Append(g0);
stream.Append(g1);
stream.Append(g2);
The code I want to adopt my changes from (taken from here):
[maxvertexcount(3)]
void geom(triangle v2g IN[3], inout TriangleStream<g2f> triStream) {
float3 param = float3(0., 0., 0.);
#if _REMOVEDIAG_ON
float EdgeA = length(IN[0].worldPos - IN[1].worldPos);
float EdgeB = length(IN[1].worldPos - IN[2].worldPos);
float EdgeC = length(IN[2].worldPos - IN[0].worldPos);
if (EdgeA > EdgeB && EdgeA > EdgeC)
param.y = 1.;
else if (EdgeB > EdgeC && EdgeB > EdgeA)
param.x = 1.;
else
param.z = 1.;
#endif
g2f o;
o.pos = mul(UNITY_MATRIX_VP, IN[0].worldPos);
o.bary = float3(1., 0., 0.) + param;
triStream.Append(o);
o.pos = mul(UNITY_MATRIX_VP, IN[1].worldPos);
o.bary = float3(0., 0., 1.) + param;
triStream.Append(o);
o.pos = mul(UNITY_MATRIX_VP, IN[2].worldPos);
o.bary = float3(0., 1., 0.) + param;
triStream.Append(o);
Photos for reference. 1. How It looks before integration. After integration diagonal lines will disappear Please help
flatwireframe.png
(52.1 kB)
Comment
Your answer
Follow this Question
Related Questions
Shader compiler: internal error compiling shader snippet type=0 platform=0: 1 Answer
How to force the compilation of a shader in Unity? 5 Answers
Surface Shader World Normal 0 Answers
Forcing Multi-Pass shader to use Deferred passes instead of Forward passes? 1 Answer
Why color not rendering in my shader? 0 Answers