TheGrayWolf
И почему же так?
TheGrayWolf
> а на другой артефакты, засветка.
попробуй там где
*dot* считается, делать saturate
Пофиксил параметр Anisotropy. Артефакты исчезли, но модель по прежнему как бы освещается с 2-х сторон
TheGrayWolf
> но модель по прежнему как бы освещается с 2-х сторон
там расчёты для случая полусферы, как для обычной трактовке brdf
innuendo
> там расчёты для случая полусферы, как для обычной трактовке brdf
типа так и должно быть?
косяк в расчёте диффузной составляющей, спек считается правильно.
где то здесь:
// Compute the diffuse term float3 Pd = (28.0f * Rd) / ( 23.0f * 3.14159f ); Pd *= (1.0f - Rs); Pd *= (1.0f - pow(1.0f - (LdotN / 2.0f), 5.0f)); Pd *= (1.0f - pow(1.0f - (VdotN / 2.0f), 5.0f));
Формуле соответствует, не понимаю тогда
TheGrayWolf
попробуй L.N V.H через saturate
innuendo
так что ли?
float VdotN = saturate( dot( v, n )); float LdotN = saturate( dot( l, n ));
теперь дифуз считается нормально, зато спекуляр с артефактами
Доп.
Ой, извиняюсь, засатуратил вот так
// Generate any useful aliases float VdotN = saturate( dot( v, n )); float LdotN = saturate( dot( l, n )); float HdotN = saturate( dot( h, n )); float HdotL = dot( h, l ); float HdotT = dot( h, tangent ); float HdotB = dot( h, bitangent );
И всё стало норм! А где обещанный сюрприз?
TheGrayWolf
> теперь дифуз считается нормально, зато спекуляр с артефактами
ага, тогда там где делишь на скалярные произведения прибавляй небольшую дельту там 0.0001
ну чтобы не делить на ноль
innuendo
> результат будет несколько необычным :)
А чего не обычного-то, ничего такова не заметил, а вот нереальная засветка под углом выглядит явно не естественно
TheGrayWolf
> И всё стало норм!
уря!
TheGrayWolf
> а вот нереальная засветка под углом выглядит явно не естественно
факты в студию
TheGrayWolf
> чего не обычного-то, ничего такова не заметил,
коняшку видел ?
Вот, даже цвет теряется
Коняшку видел, всё похоже, можно юзать анизотропную и изотропную модель, удобно, да.
TheGrayWolf
> Вот, даже цвет теряется
это от какого term такой вклад дикий ?
чайник в RM c TBN что-ли ?
innuendo
сия дикость исходит от спекуляра.
чайник с TNB.
вершинный
OUT.normal_dir = mul( IN.normal, (float3x3)mV ); OUT.tangent_dir = mul( IN.tangent, (float3x3)mV ); OUT.binorm_dir = mul( IN.binormal, (float3x3)mV );
пиксельный
float3 tangent = normalize( IN.tangent_dir ); float3 bitangent = normalize( IN.binorm_dir ); ... float HdotT = dot( h, tangent ); float HdotB = dot( h, bitangent );
что не так?
TheGrayWolf
> что не так?
попробуй тоже saturate, там точно на 0 не делится ?
Тема в архиве.