On Wednesday 04 August 2010 13:06:33 Chia-I Wu wrote: > On Wed, Aug 4, 2010 at 11:01 PM, Zack Rusin <za...@vmware.com> wrote: > > On Wednesday 04 August 2010 04:17:15 Chia-I Wu wrote: > >> I've updated the geometry shader so that given a triangle with > >> adjacency, 3 triangles will be emitted: > >> > >> - the triangle formed by the first edge and the first adjacent vertex > >> - the triangle formed by the second edge and the second adjacent > >> vertex - the triangle formed by the third edge and the third adjacent > >> vertex > >> > >> and the color is decided by the respective adjacent vertices. > >> > >> The vertex array is updated to consist of 8 vertices (2 triangles), > >> which layout just like the diagram in the D3D doc, except the diagram > >> has 14 vertices (5 triangles). The color of the adjacent vertices for > >> the first and second triangles are red and green respectively. > >> > >> With this setup, you can find the results of the running the demo with > >> master and draw-decompose-2 branches, and with nVidia's driver on > >> Windows. > >> > >> This says nothing about D3D triangle strip with adjacency, but it now > >> seems to follow wat nVidia's OpenGL driver does. > > > > Nice job! That looks pretty good, I ported the example to D3D to see what > > it does. It looks like at least the right vertices are being used. On my > > NVIDIA linux setup it looks like D3D flips the verts in the second > > triangle (as we expected). > > Compare tristripadj8.png to what the GL version of my example does with > > glDrawArrays(..., 0, 8) and tristripadj10.png to glDrawArrays(..., 0, > > 10). Attached is the D3D example that I used (just change the Vertex > > data to the data from my example to see it since right now it uses the > > data from yours and that looks the same on d3d windows as it does on > > gl). It accepts "-reference" flag which will use Windows reference > > rasterizer. > > I've uploaded the results, due to the size, to > > http://people.freedesktop.org/~olv/tmp/tristripadj/ > > tristripadj6.png, tristripadj8.png, and tristripadj10.png are the results > of running the original tri-adj.c with 6, 8, and 10 vertices. The > vertices of ever other triangles are flipped. > > tristripadj-d3d-order.patch forces draw_decompose_tmp.h to use D3D > decomposition rule. With it applied, the results are exactly the same as > the D3D's. > > With GS, the order of the vertices of a primitive becomes significant. We > can no longer permute the vertices to support flatshade_first (at least, > not before GS runs).
Awesome stuff. Thanks for looking into this. I'd commit that patch and we'll abstract it under some settable "use d3d or gl rules" flag for draw - we'll need it for clipping anyway. z _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev