К чему катится 3D графика, или DX11 наступает

Для тех, кто думает, что знает больше, чем думает о том что он знает. Короче, если предыдущая фраза вас не смутила — заходите.

Модератор: BV

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

К чему катится 3D графика, или DX11 наступает

Сообщение BV » 10.06.2009 (Ср) 14:51

Удивительно, до чего ж быстро развивается этот сектор ИТ. Еще 5 лет назад единицы знали, что такое "шейдеры", игры писались с минимальным использованием оных, а о таких страшных технологиях, как HDR и Tessellation вообще мало кто слышал. Сейчас же даже самая захудалая игрушка перенасыщена шейдерами, вовсю используется HDR и уже на горизонте маячит Tessellation. Ну, это так, маленькое лирическое вступление к статье о DX11 :)

__________________________________________________________________________________

DirectX 11: Sooner than You Think

(...)

Building on DirectX 10
DirectX 10 only works with Windows Vista, and offered no backward compatibility with Windows XP. Microsoft cites the fundamental change of display driver model in Vista as a requirement for DX10. DirectX 11 will also work with Vista, but is also targeted to work with Windows 7, the working title for Microsoft's next operating system release. (Windows 7 is expected to use a fundamentally similar display driver model to Vista, if not exactly the same.)

Let's take a look at the DirectX 11 pipeline.

Изображение

There are three new stages in the standard graphics pipeline: the Hull Shader, Tessellator, and Domain Shader. In addition, changes have been made to the pixel shader to enable compute shaders (for general purpose applications). We'll touch on those shortly.

In addition to the new pipeline stages, DirectX is being tweaked to fully support multithreading. So DirectX 11 DLLs will spawn threads as appropriate on multicore and SMT-enabled CPUs.

Another key new feature are several new texture compression formats, which enable better image quality, and will support high dynamic range. Again, we'll touch on this in more detail a bit later.

A host of lesser features are also being implemented; most don't require new hardware. They include upping the resource limit to 2GB, increasing texture limits to 16K and support for double-precision floating point (this last one is optional, and is aimed at compute shaders).

Now let's drill down on some of the features.

Hardware Tessellation
One of the key goals for DirectX 11 is to enable more robust character authoring, while reducing the time to create complex and realistic characters. The trend has been to build characters with dense triangle meshes, then reduce the complexity depending on the target platform.

This creates a problem: The end result doesn't really jibe with the artist's conception.

Artists and game designers have been pushing for characters with denser triangle meshes, which enable more detailed characters. Animation complexity is also increasing. The net result is fewer pointy heads and moonwalking characters.

More detailed characters with increasingly complex animation eats into memory and storage requirements. This results in bandwidth issues—load times increase, and memory demands on graphics cards go up.

The answer is to use the power of the GPU to generate this additional complexity—hardware tessellation. Industry watchers were a little disappointed that hardware tessellation didn't make it into DX10, but it will be fully implemented in DX11. Note that this is the one feature that absolutely requires DirectX 11 hardware. When Gee was asked if the hardware tessellator currently built into AMD Radeon HD series GPUs would support DX11 tessellation, the answer was "No."

Gee went on to explain that DX11 tessellation was more robust and general than the solution built into current AMD GPUs. The AMD hardware uses essentially the same as the tessellation unit in the Xbox 360; DX11 tessellation is a superset of the AMD approach.

The hull shader takes control points for a patch as an input. Note that this is the first appearance of patch-based data used in DirectX. The output of the hull shader essentially tells the tessellator stage how much to tessellate. The tessellator itself is a fixed function unit, taking the outputs from the hull shader and generating the added geometry. The domain shader calculates the vertex positions from the tessellation data, which is passed to the geometry shader.

It's important to recognize that the key primitive used in the tessellator is no longer a triangle: It's a patch. A patch represents a curve or region, and can be represented by a triangle, but the more common representation is a quad, used in many 3D authoring applications.

What all this means is that fully compliant DirectX 11 hardware can procedurally generate complex geometry out of relatively sparse data sets, improving bandwidth and storage requirements. This also affects animation, as changes in the control points of the patch can affect the final output in each frame.

The cool thing about hardware tessellation is that it's scalable. It's possible that low end hardware would simply generate less complex models than high-end hardware, while the actual data fed into the GPUs remains the same.

Compute Shader
Nvidia and AMD have been pushing GP-GPU for several years now; the 8 series GPUs actually had hardware in place to better enable Nvidia GPUs to act as general purpose compute engines; the latest 200 series GPUs expands on that.

Companies are sitting up and taking notice of the performance gains possible in certain classes of applications when using the highly parallel computer engines that are part of a modern GPU. Apple is working with the Khronos Group on OpenCL, a standards-based method for general purpose GPU computing, modeled on OpenGL. AMD's Stream SDK enables GP-GPU support for Radeon HD series hardware, across multiple operating systems. Nvidia is probably the furthest along, with its CUDA technology; a host of applications using CUDA is starting to emerge.

DirectX 11 weighs in with compute shaders. The compute shader uses the resources of the GPU to perform post-processing chores, such as blur effects. This required adding syntax and constructs to the DirectX HLSL (high level shading language). The graphics pipeline can now generate data structures that are better suited to general purpose applications, which then can be operated on by the compute shader.

Note that the diagram doesn't imply that the compute shader is somehow part of the pixel shader. Rather, it's a shader that can take output from the graphics pipeline, after that data has passed through the pixel shader.

It's great that Microsoft is implementing compute shaders in DirectX. Once DX11 ships, GPU programmers will have a full array of tools to support general purpose applications on the GPU:

* CUDA on Windows, MacOS, and Linux on Nvidia GPUs and Intel (and presumably AMD) CPUs
* Stream SDK for AMD GPUs and CPUs on Windows and Linux
* OpenCL on MacOS (and possibly other OSes) on both Nvidia and AMD
* DirectX 11 compute shaders on both Nvidia and ATI GPUs and, presumably, Intel and AMD CPUs in Windows.

Windows and Mac OS programmers in particular won't have to choose which hardware they'll run on; the respective GP-GPU API will generalize support. It's likely that OpenCL will also show up on open source platforms (BSD and Linux) as well. At that point, the future for CUDA and Stream SDK may be limited to vertical applications requiring "closer to the metal" performance.

Multithreading and Dynamic Shader Linkage
Multithreading is a hot topic. Today, dual core CPUs are mainstream, and if Intel's announcement of the Q8300 quad core CPU, a future where four cores become mainstream isn't that far off.

Both AMD and Nvidia have built better multithreading support into their respective graphics drivers, but the majority of DirectX is still single threaded. Microsoft will rectify this shortfall in DX11, and those benefits will even accrue to applications running on DirectX 10 hardware.

Multithreading support will include asynchronous resource loading, which can actually happen while rendering threads are executing. Draw and state submission will also be threaded, which will allow rendering work to be spread out across multiple threads.

To facilitate all this, DirectX 11 devices are split into device, immediate context, and deferred context interfaces. The immediate context is the current device for state and drawing, while the deferred context is the per-thread device contexts for future renders. Each device interface can spawn thread resources as needed. The deferred context has support for a type of display list per object. Note that the rendering is actually deferred—this is not the same as drawing to a back buffer and flipping. Rather, each deferred context holds the display list (draw calls) ready for rendering when appropriate.

Dynamic Shader Linkage
Shader linkage is just another step along the way to make DirectX a more flexible and general purpose compute environment. Today, if multiple shaders need to be invoked, a large "uber shader" is created. This contains all the conditional statements needed to invoke whichever individual shader may be needed for a particular situation.

The problem is that this can create huge, unwieldy shaders that are difficult to debug. They also make less efficient usage of available hardware resources.

Microsoft's solution is to introduce object oriented features to the HLSL—interfaces and classes. This lets graphics programmers create shaders that behave like subroutines that are only loaded when needed.

Improved Texture Compression and Hardware Support
Today's DirectX texture compression is showing its age. When multiple textures are decompressed and displayed, the results are often blocky looking textures, even when the textures themselves are high resolution. On top of that, there's no support for compression of high dynamic range textures.

DirectX 11 introduces two new texture formats, BC6 (sometimes called BC6H) and BC7. BC6 supports HDR textures with 6:1 lossy compression (16 bits per channel.) This allows for high visual quality, but it's not lossless.

BC7 works with LDR (low dynamic range) formats, and can include alpha. It offers 3:1 compression for RGB or 4:1 for RGB + alpha. Visual quality should be very high with this format.

Microsoft will now require that DX11 hardware decompress textures in such a way to be completely accurate with the DX11 spec. Currently, there's some room for "interpretation" in the way that DX10 and below hardware handles texture decompression.

The block types are designed to offer smoother gradients and much less blocky results.

Support for DirectX 10 Hardware
Quite a few features—with the exception of hardware tessellation—will be supported on DX10 hardware. Of course, DX10 hardware will continue to run games and apps in DX10 mode. But unlike DX10, which only runs on DX10-compliant hardware, elements of DX11-specific features will also run on DX10 hardware.

Multithreading will work, although deferred contexts will have to be implemented at the API (software) level rather than in the hardware. The object oriented features added should also work, though how efficiently is anyone's guess. The new texture compression formats could be implemented at the driver level, though that would be slower than dedicated hardware.


Взято из: http://www.extremetech.com/article2/0,2 ... 314,00.asp
Русский перевод (Павел Михайлов): http://www.winline.ru/articles/4151.php
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Debugger » 08.07.2009 (Ср) 11:47

Скоро среди программистов 3D не останется любителей.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Хакер » 08.07.2009 (Ср) 22:52

Есть же OpenGL ещё.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: К чему катится 3D графика, или DX11 наступает

Сообщение iGrok » 09.07.2009 (Чт) 1:07

Debugger писал(а):Скоро среди программистов 3D не останется любителей.

Тут ты не прав. Любители были есть и будут всегда и везде. )

Хакер писал(а):Есть же OpenGL ещё.

Но о нём в последнее время как-то отвратительно мало слышно. Все на MS-технологии переходят. А жаль.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Хакер » 09.07.2009 (Чт) 1:21

Мне OpenGL и его идеология (даже без «Open») больше нравится, чем D3D.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Mikle » 24.08.2009 (Пн) 10:38

Я лично против OpenGL ничего не имею, но если даже Кармак уже не брезгует D3D... мне кажется на его одиозном имени популярность OpenGL ещё как-то держалась.
Tessellation, шейдеры и прочее не относится к войне идеологий "OpenGL vs D3D". Это объективные, поддерживаемые железом, вещи, их НУЖНО поддерживать, или отстанешь.
Облегчить жизнь 3D-программистам любителям может как раз дальнейшее углубление в M$ технологии - MDX, XNA, SlimDX, нравится это кому-то, или нет.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 29.08.2009 (Сб) 15:06

Mikle писал(а):Я лично против OpenGL ничего не имею, но если даже Кармак уже не брезгует D3D... мне кажется на его одиозном имени популярность OpenGL ещё как-то держалась.

Где это он не брезгует? А то idTech5 так же будет основан на OpenGL
Wikipedia писал(а):Джон Кармак упоминал в своём лейтмотиве на QuakeCon 2007 о том, что движок id Tech 5 будет использовать в качестве API открытый и кроссплатформенный OpenGL, а не Direct3D10
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Mikle » 30.08.2009 (Вс) 9:26

Речь о Wolfenstain 2009, сам не видел, информация с форумов.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 08.09.2009 (Вт) 12:41

Wolfenstein 2009 основан на idTech 5, который в свою очередь основан на OpenGL. Ы? :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Mikle » 08.09.2009 (Вт) 18:08


BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 09.09.2009 (Ср) 12:17

Вполне возможно, что в игре только частично используется DX, например, для реализации какого-то эффекта, который на OpenGL реализовать тяжелее или он грузнее... но факт есть факт, игра на OpenGL движке
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: К чему катится 3D графика, или DX11 наступает

Сообщение Mikle » 18.09.2009 (Пт) 19:11

Только что установил игру - она не запустилась, потребовала d3dx9_39.dll. Полностью, или нет, но раньше игры от id так себя не вели.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 06.10.2009 (Вт) 22:55

Раньше и id была другой, не скидывала свои проекты каким-то левым студиям.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

сэр Афим
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 13.10.2010 (Ср) 21:40

Re: К чему катится 3D графика, или DX11 наступает

Сообщение сэр Афим » 13.10.2010 (Ср) 21:51

Кстати, а где можно узнать, какую версию OpenGL поддерживает видеокарта (и желательно заодно версию шейдеров). АТИ трей тулз у меня не заработала(((
Дада, это именно тот я, о котором ты возможно подумал, просто мой ник уже занят(((

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: К чему катится 3D графика, или DX11 наступает

Сообщение FireFenix » 13.10.2010 (Ср) 23:02

сэр Афим писал(а):Кстати, а где можно узнать, какую версию OpenGL поддерживает видеокарта (и желательно заодно версию шейдеров). АТИ трей тулз у меня не заработала(((

Да вы товарищ археолог....

На сайте производителя есть все данные по поддерживаемым технологиям и версии шейдеров для требуемой видеокарты
Так же это умеет GPU-Z
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

сэр Афим
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 13.10.2010 (Ср) 21:40

Re: К чему катится 3D графика, или DX11 наступает

Сообщение сэр Афим » 14.10.2010 (Чт) 16:57

Точно, спасибо GPU-Z не пробовал ещё :)
Дада, это именно тот я, о котором ты возможно подумал, просто мой ник уже занят(((

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 14.10.2010 (Чт) 17:10

Достаточно воспользоваться dxdiag, на вкладочке Display можно увидеть версию DDI: http://msdn.microsoft.com/en-us/library/ff569254.aspx
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

сэр Афим
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 13.10.2010 (Ср) 21:40

Re: К чему катится 3D графика, или DX11 наступает

Сообщение сэр Афим » 15.10.2010 (Пт) 1:31

DDI: 9Ex :shock:

Зато я наконец узнал следующее:
Тип ЦАП: Internal DAC 400 MHz )))))

Так что теперь понятно почему у меня твой любимый старик не пошёл и УТ подтормаживает (кстати давно не играли). Удивительно что он вообще запустился xD
Дада, это именно тот я, о котором ты возможно подумал, просто мой ник уже занят(((

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: К чему катится 3D графика, или DX11 наступает

Сообщение BV » 15.10.2010 (Пт) 11:48

сэр Афим писал(а):кстати давно не играли

Это поправимо ;)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


Вернуться в BV

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList