Комбинируйте коэффициенты материала и текстуры в Phong Shading

Я пытаюсь реализовать простой шейдер Фонга, который поддерживает нефизические материалы и текстуры. Несмотря на то, что материал имеет текстуру для каждого компонента света, я все же хочу, чтобы соответствующий коэффициент материала имел какой-то эффект. Я сомневаюсь, как справиться с ними обоими. Должен ли я смешивать, умножать или суммировать их? Прямо сейчас я умножил их:

ambient  = material.ambient_color  * light.ambient  * texture_ambient;
diffuse  = material.diffuse_color  * light.diffuse  * diffuse_strength  * texture_diffuse;
specular = material.specular_color * light.specular * specular_strength * texture_specular;

Это кажется немного мрачным, это правильный способ комбинирования коэффициентов материалов и текстур?


person Daniel Marques    schedule 28.01.2018    source источник
comment
Нет правильного или неправильного, поскольку оно не имеет физической основы. Выберите все, что соответствует вашим потребностям.   -  person BDL    schedule 28.01.2018


Ответы (1)


Это зависит. В конце концов, решать вам. Если слишком темно, попробуйте что-нибудь другое.

Вы можете просто применить коэффициент материала к вашей текстуре. Я предполагаю, что именно так это делается большую часть времени. Но, как упомянул BDL: это не физически, так что это действительно зависит от вас, и нет правильного или неправильного.

Тем не менее: если вы хотите сохранить его отдельно, вы можете попробовать использовать более высокие коэффициенты материала. Если они находятся в диапазоне от 0,9 до 1, они не будут слишком затемнять объект. Если они варьируются от 0 до 1, вы можете использовать smoothstep(0.9, 1, material.coefficient) или что-то в этом роде.

person Alina Saalfeld    schedule 01.02.2018