Я, кажется, не могу взломать этот орех сам и после некоторого поиска в Интернете, где я подошел, я подумал, что пришло время обратиться к сообществу, ищущему ответы.Подписчик на полутире в hlsl
У меня есть код в проекте, с которым я работаю, я предоставлю довольно упрощенную версию, но это должно помочь мне показать концепцию.
//hlsl code
...
ps_main(...) {
half mask = function_calculating_mask_and_returning_half();
half3 color = condition ? a_previously_defined_half3 : mask.rrr;
}
Последняя строка здесь это то, что меня смущает, особенно mask.rrr
что это реально сделать? Насколько я понимаю, это вернет half3 (mask, mask, mask)
, но я, похоже, получаю от него действительно высокую ценность, если я его изменю, чтобы сказать mask.r
или просто mask
, это дает мне результат с гораздо более низкими значениями (насколько я могу судить) ,
Может быть, что-то вроде half3(mask^3, mask^3, mask^3)
? Потому что так оно и есть, когда смотришь на результат.
В любом случае, я благодарен за предложения или объяснения относительно того, как работает код и что означает подстрочный код half
с .rrr
, и любая ссылка на то, какие индексы возможны, будет аккуратным рождественским подарком. : Р
Какова цель вашей модели DX и шейдерной модели? Этот шейдер работает так, как должен? – Netherwire
Я на самом деле немного новичок в 'hlsl' в частности, и рендеринг, использующий его в целом. Но он нацелен на DX9 и выше. Он работает, и, похоже, он делает то, что ожидается, единственное, что этот «цвет» используется на отложенной стадии, чтобы раскрасить зеркальность, и когда я использую 'mask.rrr', я получаю сверхвысокую зеркальность, и именно поэтому я я подозреваю, что 'mask.rrr' делает нечто вроде умножения значения. Поэтому главной недостающей частью является мое понимание индекса 'mask.rrr'. – qrikko