Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 23.12.2011, 12:57   #361
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Странное.

Depth Buffer as Texture

For some rendering schemes (anything with "deferred") or some effects (SSAO, depth of field, volumetric fog, ...) having access to a depth buffer is needed. If native depth buffer can be read as a texture, this saves both memory and a rendering pass or extra output for MRTs.

Depending on hardware, this can be achieved via INTZ, RAWZ, DF16 or DF24 formats:
INTZ is for recent (DX10+) hardware. With recent drivers, all three major IHVs expose this. According to ATI [1], it also allows using stencil buffer while rendering. Also allows reading from depth texture while it's still being used for depth testing (but not depth writing). Looks like this applies to NV & Intel parts as well.
RAWZ is for GeForce 6 & 7 series only. Depth is specially encoded into four channels of returned value.
DF16 and DF24 is for ATI (DF16 for Intel as well) cards, including older cards that don't support INTZ. Unlike INTZ, this does not allow using depth buffer or using the surface for both sampling & depth testing at the same time.
Also useful when using depth textures:
Creating NULL color surface to keep D3D runtime happy and save on video memory.
RESZ allows resolving multisampled depth surfaces into non-multisampled depth textures (result will be sample zero for each pixel).
Caveats:
Using INTZ for both depth/stencil testing and sampling at the same time seems to have performance problems on ATI cards (checked Radeon HD 3xxx to 5xxx, Catalyst 9.10 to 10.5). A workaround is to render to INTZ depth/stencil first, then use RESZ to "blit" it into another surface. Then do sampling from one surface, and depth testing on another.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
dsd (23.12.2011), moka (23.12.2011)
Старый 23.12.2011, 16:34   #362
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Господе Иисусе. O_o
Это мне надо сделать в хорсе xCreateDSS() с размерами экрана сделать, а дальше не понимаю как. Мне б хотяб самый минимальный пример. Я так понимаю, что есть возможность к DSS внутри шейдера как-то обратиться или это и будет DEPTHMAP?
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 18:01   #363
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Странное.

На уровне пользователя движка этот хак реализовать не получится (ну только, если не делать еще один хак самого движка: получать д3д девайс и т.п.).
Для использования DEPTHMAP эти пляски с бубном не нужны. Двиг сам делает рендер в текстуру. Просто я предупредил, что потребуется дополнительный проход, который влияет на произовдительность.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (23.12.2011)
Старый 23.12.2011, 18:38   #364
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Да черт с ним с проходом. Мне очень интересен текст подобного прохода и как потом из DEPTHMAP получать глубину, и как она(глубина) будет там записана.

Вообще волшебно было бы если к тем постэффектам лежащим где-то в соседней теме добавить постэффект, который будет рисовать пиксель изображения с большей глубиной более красным, чем те, что ближе к камере. Такой пример был бы идеальным
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 19:38   #365
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Странное.

А в ксорсе можно как-нибудь рисовать объекты без уже наложенных на них текстур ? просто раз для депф буффера необходим дополнительный проход, то это облегчит рендер
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 20:02   #366
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Ну вроде есть более простой способ получить буфер глубины. А вообще в пиксельном шейдере на выход цвет идет. Который получается сначала чтением цвета текущего пикселя из текстуры, потом цвет умножается на косинус угла между нормалью этого пикселя и направлением света. Очевидно, что на выход можно выдать что угодно, лишь бы оно было в формате float4() и каждая часть была от 0 до 1.

Еще есть xTextureBlend(tex,0) выключающий текстуру. Но вообще если рисовать силами шейдера, то это пофигу, что там на объект наложено. Так как это будет уже другой шейдер, который прочитает и отрисует только нужные данные. Тем более, что слои эффектов легко ставятся.
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 20:07   #367
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Странное.

Вот тут показано, как работать с DEPTHMAP
Water.zip
Но там есть недочет. На пальму наложена текстура с альфа каналом, которая при рендере в карту глубины не учитывается.

http://forum.boolean.name/showpost.p...&postcount=302
Тут рендер в карту глубины осуществляется вручную.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
dsd (23.12.2011), H@NON (24.12.2011)
Старый 23.12.2011, 20:10   #368
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Спасибо. Если я научусь работать с буфером глубины, то можно будет сочинить пару забавных постэффектов. Те же контуры можно обводить легко.
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 20:45   #369
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Странное.

http://area.xors3d.com/forums/viewtopic.php?f=21&t=713
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (23.12.2011)
Старый 23.12.2011, 22:08   #370
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Чтобы получить из значения буфера глубины обычное расстояние от камеры до пикселя:



float4x4 matProj 	: MATRIX_PROJ;
...
float Depth = tex2D( DepthSample, texCoords);
1. Избавляюсь от нормализации.
float nedoZed=Depth*zfar+znear;
2. Нахожу 1/z
float pochtiZed=(nedoZed+matProj[2][2])/matProj[2][3];
3. Глубина текущего пикселя:
float finalZed=1/pochtiZed;
...
Правильно?

zfar и znear можно получить семантикой? Или таки надо передавать из хорса руками?
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 23:50   #371
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Барабанная дробь...

Моя глубина поля


Правда я обошелся одним проходом. Из-за чего, наверное, и есть гало вокруг "резких" объектов




Интересно, а у всех кто хоть чу-чуть выучил с++ глаза автоматически прилипают к :: встречающимся в произвольном тексте, вообще не имеющему отношения к программированию?

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
H@NON (24.12.2011)
Старый 24.12.2011, 03:40   #372
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Странное.

Блур отвратительный..
Глубина поля видимо обрезается очень резко, а нада мягкий переход.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (24.12.2011)
Старый 26.12.2011, 19:51   #373
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.



Простенькая процедурная анимация выстрела из лазёрной турели

внутри исходники есть
Выстрел по пробелу.

Последний раз редактировалось dsd, 13.08.2012 в 19:28.
(Offline)
 
Ответить с цитированием
Старый 27.12.2011, 03:41   #374
varIIkon
AnyKey`щик
 
Регистрация: 27.12.2011
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Странное.

Почему xors3d? Наверное написать свой, конкретно для поставленной задачи, было бы интересней?
(Offline)
 
Ответить с цитированием
Старый 27.12.2011, 18:04   #375
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Сообщение от varIIkon Посмотреть сообщение
Почему xors3d?
А чем плох xors3d? Ну кроме того, что в нем шейдеры только 3.0. Или где-то там есть волшебный двиг за пользование которым разрабы еще и денег доплачивают?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:46.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com