![]() |
Ответ: [TrueHorror] - разработка
Я немного упорот сегодня поэтому, все еще разок с начала. Мои действия: 1) Создаю viewProjection матрицу для спота. 2) С ее помощью отрисовываю сцену - получаю шадоумапу. 3) При расчете освещения беру восстановленую позицию( по глубине ), и домножаю ее на матрицу viewProjection спота, делаю выборку из текстуры ... С текстурой пятна все хорошо, с тенями нет - они вращаются при повороте камеры. Можно объяснение для даунов пжлста. |
Ответ: [TrueHorror] - разработка
запиши видео чтоли, не представляю как оно вращается
|
Ответ: [TrueHorror] - разработка
здесь только буфер глубины показан, без расчета теней
[УДАЛЕНО] еще глянь код чтоли, в подписи у меня есть ссылка на репозиторий, файлы ShadowMap.h и DeferredRenderer.cpp |
Ответ: [TrueHorror] - разработка
можешь просто объяснить последовательность действий? только поподробней
|
Ответ: [TrueHorror] - разработка
да вроде всё правильно делаешь, в коде долго разбираться.
выведи в маленький вьюпорт сбоку содержимое шадоумапы подскейленное, чтобы его хорошо видно было и посмотри, что там с проекцией творится, видит ли фонарик то, что должен видеть. |
Ответ: [TrueHorror] - разработка
Вложений: 1
я опять вляпался по-колено в z-буфер. чистить и записывать в него мне его нельзя, следовательно нормально шадоумапу я нарисовать не смогу, если я чищу з-буфер у меня слетают оптимизации трафаретом, но получается хорошая шадоумапа. на скрине результат отрисовки с
Код:
g_device->SetRenderState( D3DRS_ZENABLE, FALSE ); Код:
g_device->SetRenderState( D3DRS_ZENABLE, TRUE ); |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
ну получается по умолчанию используется общий буфер, я так понял его нужно создавать отдельно для каждого рендертаргета?
http://msdn.microsoft.com/ru-ru/libr...=vs.85%29.aspx тебе конечно все очевидно, мне не очень - ибо опыта и знаний маловато |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
да пока-что такого же
|
Ответ: [TrueHorror] - разработка
еще один косяк, при рендере глубины в гбуфер, она зависит от положения камеры, и поэтому сравнивать с глубиной из шадоумапы ее нельзя. че делать?
|
Ответ: [TrueHorror] - разработка
не понял вопрос.
суть такова: 1. рендеришь глубину относительно фонарика в РТ фонарика. 2. рендеришь свой гбуфер игровой камерой. 3. восстанавливаешь мировую позицию из глубины гбуфера. 4. множишь её на матрицу фонарика - получаешь глубину в том же пространстве, что у него и проекционные коорды в XY. 5. семплишь шадоумапу и сравниваешь глубину из неё с projectedCoords.z |
Ответ: [TrueHorror] - разработка
Вложений: 1
Ну наконец-то я сделал это. Теперь PCF надо хотя бы 2х2. И оптимизацию по объектам которые рисуются в шадоумапу. А чтобы дырки в текстурах учитывались, нужно передать в шейдер, который пишет шадоумапу еще и диффуз текструру с альфаканалом и там отсекать через clip.
|
Ответ: [TrueHorror] - разработка
Вложений: 1
как-то коряво выглядит, или меня глючит. мне кажется, в обозначенных местах должны быть тени, а их нет.
|
Ответ: [TrueHorror] - разработка
кубики немного подняты от земли, поэтому такой обман зрения
|
Часовой пояс GMT +4, время: 00:13. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot