ПрограммированиеФорумГрафика

Specular Map (карта отражения) (комментарии) (8 стр)

Страницы: 17 8 9 1012 Следующая »
#105
11:30, 17 июня 2011

Норм
Изображение удалено

Булщит
Изображение удалено

С одной стороны выглядит норм, а на другой артефакты, засветка.

#106
11:32, 17 июня 2011

TheGrayWolf
И почему же так?

#107
11:39, 17 июня 2011

TheGrayWolf
> а на другой артефакты, засветка.

попробуй там где

*dot* считается, делать saturate

#108
11:58, 17 июня 2011

Пофиксил параметр Anisotropy. Артефакты исчезли, но модель по прежнему как бы освещается с 2-х сторон
Изображение удалено

#109
12:04, 17 июня 2011

TheGrayWolf
> но модель по прежнему как бы освещается с 2-х сторон

там расчёты для случая полусферы, как для обычной трактовке brdf

#110
12:10, 17 июня 2011

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));

Формуле соответствует, не понимаю тогда

#111
12:15, 17 июня 2011

TheGrayWolf

попробуй L.N V.H через saturate

#112
12:27, 17 июня 2011

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 );

И всё стало норм!  А где обещанный сюрприз?

#113
12:30, 17 июня 2011

TheGrayWolf
> теперь дифуз считается нормально, зато спекуляр с артефактами

ага, тогда там где делишь на скалярные произведения прибавляй небольшую дельту там 0.0001

ну чтобы не делить на ноль

#114
12:45, 17 июня 2011

innuendo
> результат будет несколько необычным :)
А чего не обычного-то, ничего такова не заметил, а вот нереальная засветка под углом выглядит явно не естественно

#115
12:47, 17 июня 2011

TheGrayWolf
> И всё стало норм!

уря!

TheGrayWolf
> а вот нереальная засветка под углом выглядит явно не естественно

факты в студию

TheGrayWolf
> чего не обычного-то, ничего такова не заметил,

коняшку видел ?

#116
12:59, 17 июня 2011

Вот, даже цвет теряется

Изображение удалено

Коняшку видел, всё похоже, можно юзать анизотропную и изотропную модель, удобно, да.

#117
13:04, 17 июня 2011

TheGrayWolf
> Вот, даже цвет теряется

это от какого term такой вклад дикий ?

чайник в RM c TBN что-ли ?

#118
14:05, 17 июня 2011

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 );

что не так?

#119
14:08, 17 июня 2011

TheGrayWolf
> что не так?

попробуй тоже saturate, там точно на 0 не делится ?

Страницы: 17 8 9 1012 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.