восстанавливаем
таким способом, в одну текстуру можно уложить X и Y компоненты нормали, рафнесс и металлик маски, например.
z компонент единичного вектора по x и y,таким способом, в одну текстуру можно уложить X и Y компоненты нормали, рафнесс и металлик маски, например.
half4 normRoughMetSample = NormRoughMetallic.sample(linearSampler, IN.texCoord);
half3 normalTS;
normalTS.xy = half2(normRoughMetSample.x, normRoughMetSample.y) * 2.0 - 1.0;
normalTS.z = sqrt(1 - (normalTS.x * normalTS.x) - (normalTS.y * normalTS.y));
half3x3 tantgenToWorld = half3x3(IN.tangentWS, IN.bitangentWS, IN.normalWS);
half3 normalWS = tantgenToWorld * normalTS;
normalWS = normalize(normalWS);
вариант не круить биас в шейдере для избавления от акне в тенях
renderEncoder.setDepthBias(0.005, slopeScale: 7, clamp: 0.02)
renderEncoder.setDepthBias(0.005, slopeScale: 7, clamp: 0.02)
Вообще снова три раза пытался продвинуться в пассе с поинт-лайтами и три раза отлетал из-за краша рендера. Мне не нравится этот пасс на основе текстуры позиций, и хочется куллить стенсилем что дирекшонал, что поинты.
Начну еще разок сначала
Начну еще разок сначала
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 кб
вот они справа на лево: байт, сайз, страйд
https://habr.com/ru/companies/hh/articles/546856/
https://habr.com/ru/companies/hh/articles/546856/
Хабр
Память в Swift от 0 до 1
В этой статье мы рассмотрим принципы работы памяти в Swift и разберемся, как Swift располагает байты в памяти, как управляет памятью, и что из себя представляет жизненный цикл объектов. Содержание Что...