COMMAND ENCODER (Barkar Ivan)
163 subscribers
168 photos
72 videos
17 files
108 links
Cool shading, nice ball moment
Download Telegram
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));
Топ теперь вот это