COMMAND ENCODER (Barkar Ivan)
163 subscribers
168 photos
72 videos
17 files
108 links
Cool shading, nice ball moment
Download Telegram
shadow * N dot L
беды с тангентом. вертекс дескрипторами. тангентом хз
да в попу ваш метол, доканал этот тангент
да ты ч.... блиааааа
😵 дебаг с устройства показал, что нормали в srgb
Please open Telegram to view this post
VIEW IN TELEGRAM
Репутация тангента восстановлена. Впредь, нормали из сабстанса выводим в RAW RGBAFloat, а не Linear
внимательнее следим за sRGB в нормалях из-за активности хейтеров
clayton_janie_metal_programming_guide_tutorial_and_reference.pdf
8.2 MB
Немного более серьезная книженция, заставляет задуматься
восстанавливаем 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);
Отдельный Directional light render pass.
Не прошел мимо нормалей и накосячил снова
вариант не круить биас в шейдере для избавления от акне в тенях
renderEncoder.setDepthBias(0.005, slopeScale: 7, clamp: 0.02)
косяки после восстановления z уже у мировых нормалей. Вероятно, у рендер таргета придется забирать все 3 компонента
и распихивать рафнес и металлик по свободным альфа каналам

или проблема read вместо sample, но фильтрация тут лишняя
консоль нашел 👌
Вообще снова три раза пытался продвинуться в пассе с поинт-лайтами и три раза отлетал из-за краша рендера. Мне не нравится этот пасс на основе текстуры позиций, и хочется куллить стенсилем что дирекшонал, что поинты.
Начну еще разок сначала
Да в попу ваш метол и стенсиль туда же
Варик определить normalMatrix (трансформирует нормаль в мировую) в шейдере, если не собирать на CPU и слать в Uniforms/FrameData
маска поинт-лайтов
XCode лучший
Объединяю лаитинг пасс в один, а комманд буффера два оставил зачем-то.
Проверял его просто
еще подсказка