Archive

Archive for the ‘Graphics’ Category

Assisted texture assignment preprint availalbe

March 11th, 2010

The preprint for “Assisted texture assignment” is available now. You can find it in my research area as well as at the REVES publications page.

DirectX11 hints …

March 1st, 2010

Some stuff that might be useful if you’re getting started with DX11:

  • Tesselation:
    • If you get error X4577: Not all elements of SV_Position were written, make sure to write 4 elements positions in your domain shader.
    • error X3502: tessfactor inputs missing: For triangles and quads, you have to write both SV_TessFactor and SV_InsideTessFactor. The first determines the number of subdivisions for each edge, the second the internal subdivision. You should try to keep them somehow together, as widely varying values will result in totally broken polygons along the edge (basically, you’ll get vertices with extreme amount of edges.
    • Freeze when rendering: Make sure to change your topology to D3D11_PRIMITIVE_TOPOLOGY_<N>_CONTROL_POINT_PATCHLIST, with <N> being equal to the number of control points expected by your hull shader. Rendering using for instance D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST freezes my machine until Windows 7 resets the driver
  • Compute shader:
    • D3D11: WARNING: ID3D11DeviceContext::OMSetRenderTargets: Resource being set to OM RenderTarget slot 1 is still bound on input! [ STATE_SETTING WARNING #9: DEVICE_OMSETRENDERTARGETS_HAZARD ]D3D11: WARNING: ID3D11DeviceContext::OMSetRenderTargets[AndUnorderedAccessViews]: Forcing CS shader resource slot 1 to NULL. [ STATE_SETTING WARNING #2097317: DEVICE_CSSETSHADERRESOURCES_HAZARD ]
      Easy, just make sure you unbind all resources after calling Dispatch by using CSSetShaderResources and an array of nullptr (or plain NULL, in pre-C++-0x days) resources.
    • In order to create a RW texture, use a D3D11_TEXTURE2D_DESC and specify D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS for binding. Then, just create an UnorderedAccessView on it.
    • Parameter binding has to be done in order. Use register (tN) for textures and structured buffers. uN is for unordered access views. I’ve put my constant buffers into bN, just in case.
  • HLSL:
    • If you need infinity, just use float i = 1.#INF.

So much for starts, I really do hope Microsoft improves the documentation of these parts, as it’s mostly trial&error for many things, despite having a nice debug layer on the runtime. Ah and yes, if anyone at ATI reads this: Crashing the driver in case of user errors is not helpful ;) I’ve seen plenty of freezes while doing CS development which required me to reboot; it’s slightly better with tesselation as Windows seems to be able to restart the driver each time.

Back from I3D

February 25th, 2010

I just returned from the I3D conference. It’s a very nice conference, and there were a lot of cool papers this time. You should take a look at the complete list at Ke-Sen Huang
’s homepage
.

In particular, I found the following papers interesting:

  • Efficient sparse voxel octrees: This comes with full source code, so be sure to check it out!
  • Stochastic transparency: Very nice use of the MSAA buffer, and pretty nice results. Unfortunately, still a bit slow.
  • Light propagation volumes: An updated version of the SIGGRAPH 2009 presentation, this time with blockers and more explanations. Interesting, as this is the first production-ready GI technique I’m aware of (which runs on current generation hardware …)
  • FreePipe: A totally insane amount of work. They’ve implement a full rendering pipeline in CUDA, be sure to keep this on your radar.

Of course, the other papers were also nice, and I liked the overall high quality. I was in all presentations but one, and I have to say that all of them were interesting and had at least one trick worth noting. The really nice thing about I3D is that it’s so small that you can really talk with any author and ask him, something which is not true for SIGGRAPH for instance. Asking the authors is highly recommended to get a real understanding ;)

DirectX 11 platform update has been released

October 28th, 2009

Finally, the DX11 update for Vista has been released, and it also works with non en_US versions of Windows. Grab it via Windows Update or from the KB.