Sunday, November 15, 2009

Tuesday, November 10, 2009

Saturday, November 7, 2009

flu

1/3 of the team have caught flu. It seems that there is a real epidemy in Siberia. I hope we'll recover next week, because there are a lot of interesting things to do!

Physics cloth











Sunday, October 4, 2009

Bunch of new OpenGL extensions.

We can use signed normalmap textures with ARB_texture_snorm and ARB_texture_compression_rgtc extensions. No more ugly "*2.0-1.0" in shaders for DX10 level cards, but we should do it for legacy cards.

ARB_texture_multisample allows us to implement multisampled deferred effects such as light scattering and SSAO.

ARB_draw_elements_base_vertex great-great-great, but why only now?

Wednesday, September 30, 2009

inline vs __forceinline

Don't ask compiler to do something. Force it!

inline:


__forceinline:

DirectX 11 tessellation samples

In the DirectX 11: Tessellation in Stalker: CoP, Dirt 2, Unigine and Alien vs. Predator article people mentioned that only our art sample really utilizes tessellation capabilities to improve image quality: "Only one that was a visually significant improvement was the displacement mapping on the roof. That should be a nice improvement over the various surface mapping techniques, bump, normal, POM, etc. that don't do nearly as good a job."

All hail our artists, who created that art asset! By the way, stay tuned for much more.

Monday, September 21, 2009

Fried meshes

* [20090930] Values for HD4870 and Direct3D11 are updated (it was a debug runtime:(

Huge crowd rendering can be accelerated by baking skinned meshes into static meshes in runtime. But there is no easy way to do it because of API and hardware limitations.

The scene consist of 49 characters and each character is rendered 6 times. Tables contain millions of polygons per second. There are no tests for low-level cards. But on such cards performance gain is very substantial. And there are no tests for OpenCL because of incomplete drivers.

The first two rows describe direct rendering of skinned meshes:
"Raw" is a single mesh per draw call.
"Inst" is multiple meshes per draw call.

The other rows describe different backing techniques:
"Raw" corresponds to backing single character per call between characters rendering.
"Inst" corresponds to backing 32 characters per call before characters rendering.

OpenGL:
PBO: works well on all cards but instancing is required.
FeedBack: requires DX10 level card and doesn't work on ATI cards now.
CUDA: requires NVIDIA DX10 level card. Also instancing is very important.

Direct3D9:
R2VB: is ok on ATI and NV40. But we can't use this technique with NVIDIA DX10 cards.
CUDA: same as CUDA under OpenGL.

Direct3D10:
StreamOut: there is absolutely no problem with this technique.
CUDA: same as CUDA under OpenGL.

Direct3D11:
StreamOut: same as StreamOut under Direct3D10.
DirectCompute: instancing is also very important on NVIDIA hardware.