COMMAND ENCODER (Barkar Ivan)
163 subscribers
168 photos
72 videos
17 files
108 links
Cool shading, nice ball moment
Download Telegram
XCode лучший
Объединяю лаитинг пасс в один, а комманд буффера два оставил зачем-то.
Проверял его просто
еще подсказка
This media is not supported in your browser
VIEW IN TELEGRAM
Вечер я провел за поиском текстуры глубины, которую сделал две недели назад в GBuffer пассе. Надо почаще нажимать на маленькие незаметные ворнинги в дебагере)
Самый примитивный денро-фекальный деферред готов. Надо причесать этого Франкенштейна, сделать приличные шейдера и свет. Дальше Taile Based дефферед, аргумент буфер, а потом посмотрим.
This media is not supported in your browser
VIEW IN TELEGRAM
Визуально ничего, просто порефакторил и поделил команд буферы на тот, что не рисует в экран (тени и g-buffer), и команд буфер, который рисует на экран (drawable текстуру)
setVertexBytes лишь сахар над метал-буффером и подходит для констант общим размером до 4 кб
можно и лучше
Forwarded from WellMOR
если структурка относительно большая (больше 64байт), то желательно держать рядом-используемые переменные - рядом.

Типа у тебя в шейдере в вертексной части используются position и lightType, а остальное во фрагментной. Вот их группируешь рядом.
чет выравнивая по 16 байт в нативном метале будто задают другие правила компоновки данных
Media is too big
VIEW IN TELEGRAM
Попытка улучшить поинтлайты через коэффициенты аттенуации. Радиуса, соответственно, больше нет. Для пасса с маской он расчитывается через люминанс. Как указано тут. https://gamedev.stackexchange.com/questions/51291/deferred-rendering-and-point-light-radius

Пока не уверен, особенно в подборе коэффициентов
Forwarded from Dima Skupejko
ты об этих коэффициентах?
если да, то да — сам настраиваешь характеристику света

просто же в реальности (если не ошибаюсь) яркость падает на величину квадрата расстояния (третий элемент в знаменателе)

но это не всегда приемлемо в графонии для нужного эффекта

а так можно влепить себе, например, линейную зависимость — и всё
Коэффициенты — топ
Обратные квадраты (1 / (distance * distance))
This media is not supported in your browser
VIEW IN TELEGRAM
attenuation = (1.0 / (0.2 + lightDist * lightDist));

minLuminance = 0.03
luminaceCoeffs = (0.2126, 0.7152, 0.0722)
luminance = dot(color, luminaceCoeffs)

radius = sqrt(luminance / minLuminance)
This media is not supported in your browser
VIEW IN TELEGRAM
attenuation = (1.0 / (costantOffset + lightDistance * lightDistance)) * (1.0 - pow(lightDistance / lightRadius, 4));
Топ теперь вот это