Войти
ПроектыФорумКонкурсы

Конкурс: Дрифт (начался, до 9 июня, предварительные релизы до 16 мая). Приз : 2000р (32 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 131 32 33 3436 Следующая »
#465
2:20, 18 мая 2020

Mikle
> Готовы отражения: https://yadi.sk/d/fe4j4PkAd7V5UQ
Ну все, это слишком круто )


Mikle
> С тенью будет сложнее, обычную стенсильную или через рендер в текстуру делать
> не хочу - выйдет резкая тень, будет контрастировать с тенями домов, деревьев и
> т. п.
лепи каскадные.


#466
(Правка: 5:41) 5:18, 18 мая 2020

vindast
> Просьба запустить и скинуть что пишет лог.
В консоли вижу такое:
mipResolution = 1024
mipResolution = 512
mipResolution = 256
mipResolution = 128
mipResolution = 64


Лог:

+ Показать

Видеокарта:

+ Показать

После последнего сообщения в логе ждал минут 10 еще. Так и не рассчиталось. Как посмотреть нагрузку на gpu?

#467
(Правка: 6:36) 6:31, 18 мая 2020

Vitorio
> После последнего сообщения в логе ждал минут 10 еще. Так и не рассчиталось. Как
> посмотреть нагрузку на gpu?
msi afterberner на пример. Но надо выключить riva tuner от туда, а то будет светопредставление.

Я сейчас почитал лог и ...
Оно посчиталось, но почему-то встряло. Я в данный момент затрудняюсь сказать что именно не так.
Тут явно какой-то косяк в коде, и лог ничего не дал, ведь после последнего сообщения которое у тебя, цикл с расчетом карт заканчивается, и c++ должен вернуться из функции. Но этого не происходит.

Просьба поставить последний vc++ и проверить тот же билд.
Если не запустить, то вот новый билд, который я полностью пересобрал.
Если не поможет, то буду разбираться дальше.

вот будет умора если это лог поломан и на нем все висит
#468
(Правка: 6:41) 6:40, 18 мая 2020

vindast
У меня на этом ноутбуке установлена vs2019 community, соответственно последний redist уже стоит. Попробуй собрать свой проект в дебаг режиме с warning level all. Посмотри все предупреждения компилятора, может где то вместо == у тебя идет присвоение или используешь неинициализированнаую переменную, или, быть может, где то память портишь, дополнительно прогони пооект через visual leak detector. Это позволит выявить процентов 90 проблем.

Новый билд смогу посмотреть завтра. Сейчас уже нет доступа к этому ноуту.

#469
6:43, 18 мая 2020

Vitorio
> Новый билд смогу посмотреть завтра. Сейчас уже нет доступа к этому ноуту.
Окей.

Vitorio
> У меня на этом ноутбуке установлена vs2019 community, соответственно последний
> redist уже стоит. Попробуй собрать свой проект в дебаг режиме с warning level
> all. Посмотри все предупреждения компилятора, может где то вместо == у тебя
> идет присвоение или используешь неинициализированнаую переменную, или, быть
> может, где то память портишь, дополнительно прогони пооект через visual leak
> detector. Это позволит выявить процентов 90 проблем.
спс.

При  warning level = 3 в этом коде нет ничего. Ладно, посмотрим.

#470
(Правка: 13:44) 13:44, 18 мая 2020

Извините ребята, решил по-быстрому переработать рендер, в результате сломал его, да и работой меня опять закидали ... пытался что то исправить, но видимо уже всё ...

#471
(Правка: 18:04) 18:03, 18 мая 2020

Aviator777
> видимо уже всё
А может не всё потеряно?

vindast
> лепи каскадные.
А что это даст? Это оптимизация обычного shadow mapping для большего качества вблизи камеры. Но это те же самые резкие тени.
Появилась у меня идейка, попробую осуществить.

#472
(Правка: 22:11) 22:00, 18 мая 2020

Mikle на нетбуке CPU интел и встроенным видео интел = работает, а на CPU АМД x6 1045T и в/карте AMD - мгновенно выдает ошибку при старте:
из #459
Run-time error '-2005401480 (88780078)':
Automation error

В предыдущих демках (еще до следов на асфальте) - все работало.


Зы:
По поводу мягких теней:
Вместо сохранения zBufferа, сохраняем его значение в текстуру вот так:
shadow.x = z;
shadow.y = z*z;

Данную текстуру - блюрим сколько угодно, а при отрисовки тени, вот так:

float chebyshevUpperBound(vec2 moments, float z){
    float p = 0.0;
    z = z * 0.5 + 0.5;
    if (z <= moments.x) {
        p = 1.0;
    }
    float variance = moments.y - moments.x * moments.x;
    // http://fabiensanglard.net/shadowmappingVSM/
    variance = max(variance, 0.0000001);
    // Compute probabilistic upper bound.
    float mD = moments.x - z;
    float pMax = variance / (variance + mD * mD);
    // Now reduce light-bleeding by removing the [0, x] tail and linearly rescaling (x, 1]
    // TODO : bleedBias parameter ?
    pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);
    return max(p, pMax);
}
#473
(Правка: 22:14) 22:12, 18 мая 2020

InfusionKRD
Понял, благодарю.
Там 4к текстура, видимо, видюшка не тянет.
Завтра с утра сделаю тестовую версию, проверишь?

По поводу мягкой текстуры - блур, он даёт размытие одинаковое, а на реальной тени оно от расстояния до затеняющего объекта зависит.

#474
23:45, 18 мая 2020

Mikle обязательно проверю, только скорее вечером.
А видяшка 4096*4096 точно тянет (у себя часто использую). Может какой-то формат не понимает, конечно...
Про размытие, когда то я хотел сделать так: x,y = Как писал выше, а блюренную тень в z и w. И степень размытия = mix( xy, zw, distance). Но, прогуливаясь пешочком на работу, обратил внимание, что в реальном мире сила размытия тени <> distance от источника света, а = distance от объекта тени до поверхности на которую эта тень упала. Плюнул и вернулся на старый добрый shadowmap (он хотя бы летает).

#475
(Правка: 5:45) 5:45, 19 мая 2020

Mikle
> А может не всё потеряно?
Ну если хочет кинуть демку, я не против ее принять, если никто не возражает.

Mikle
> А что это даст? Это оптимизация обычного shadow mapping для большего качества
> вблизи камеры. Но это те же самые резкие тени.
Во первых, они полностью динамические, и их реализация легковесная.
Во вторых, их не нужно предрасчитывать. 
А на счет резкости, банальный pcf фильтр можно для начала заюзать.

InfusionKRD
> float chebyshevUpperBound(vec2 moments, float z){
> float p = 0.0;
> z = z * 0.5 + 0.5;
> if (z <= moments.x) {
> p = 1.0;
> }
> float variance = moments.y - moments.x * moments.x;
> // http://fabiensanglard.net/shadowmappingVSM/
> variance = max(variance, 0.0000001);
> // Compute probabilistic upper bound.
> float mD = moments.x - z;
> float pMax = variance / (variance + mD * mD);
> // Now reduce light-bleeding by removing the [0, x] tail and linearly
> rescaling (x, 1]
> // TODO : bleedBias parameter ?
> pMax = clamp((pMax-0.4)/(1.0-0.4), 0.0, 1.0);
> return max(p, pMax);
> }
Опа, а можешь объяснить что этот код делает.
Я помню была какая-то статья с чем-то подобным, но никак найти не могу.

#476
7:46, 19 мая 2020

vindast там в коде ссылка - перейди по ней, это и есть статья. Как раз способ для размытых shadow map

#477
8:43, 19 мая 2020

vindast
> Во первых, они полностью динамические, и их реализация легковесная.
А обычный shadow mapping ещё легковеснее, а в остальном - то же самое.
Если бы на всей карте была куча объектов, для которых нужно считать тень, имело бы смысл делать каскадные тени. Но мне нужна тень для единственного автомобиля.
Как размыть - это не проблема, смысл я понимаю, значит код напишу, как обычно - сам.
InfusionKRD
> в реальном мире сила размытия тени <> distance от источника света, а = distance
> от объекта тени до поверхности на которую эта тень упала.
Об этом я и веду речь.
InfusionKRD
> обязательно проверю, только скорее вечером.
Тогда не тороплюсь, лучше продумаю возможные варианты.
InfusionKRD
> 4096*4096 точно тянет
А какой объём памяти на ней? Это же встройка, тянет из ОЗУ столько, сколько нужно.

#478
8:55, 19 мая 2020

Mikle немного не так: на встройке (нетбук с целероном intel n4100 с 4Gb = все прекрасно), а на стационаре с процессором AMD и видяхой (все время забываю что там, могу сбрехнуть в названии: amd radeon r9 270x c 2Gb VRAM (это уровень более современной GT 1050) = не стартует.

#479
9:06, 19 мая 2020

InfusionKRD
> не стартует.
Попробуй просто еще раз запустить. У меня при первом запуске новой версии всегда выскакивает Run-time error. И если тут же, повторно запустить, то работает.

Страницы: 131 32 33 3436 Следующая »
ПроектыФорумКонкурсы