есть у меня диффузный цвет текстуры
vec4 diffuse = texture2D(diffuse_map, uvs);
есть цвет отражения из кубической карты и уровень отражения
float reflecting = 0;
reflecting = get_from_chanel(uvs,reflecting_map,reflecting_chanel) + reflecting_level;
vec3 env_map_reflect = textureCube(envcube_map, reflect(fPosition - cam_pos,normalize(fNormal))).rgb;
есть цвет переломления от кубической карты и уровень переломения
float refracting = 0;
refracting = get_from_chanel(uvs,refracting_map,refracting_chanel) + refracting_level;
float ratio = 1.00 / refracting_level;
vec3 env_map_refract = textureCube(envcube_map, refract(fPosition - cam_pos,normalize(fNormal),ratio)).rgb;
И вот теперь все цвета надо смешать для конечного цвета итоговой диффузной карты, по логике
- 1 свет преломления проходит через модель и преломленый цвет окружения смешивается с цветом диффузной карты
- 2 в это же место идёт свет от отражения и смешивается с цветом на предыдущем этапе
- 3 итоговый цвет попадает в глаз
Только вот глазам от этого больно )))))))))
Если просто смешивать отдельно отражения или преломления с диффузным цветом то всё ок, например смешаем отражения с уровнем отражения и диффузным цветом
gl_FragData[0].rgb = mix(diffuse.rgb,env_map_reflect,reflection); // reflection = 0.5 из uniform к примеру
получим отражения окружения в соотвецтвии с текстурой отражений и будут места где отражения есть, а где их нет с разной интенсивностью, тоже самое с переломлениями. НО! как смешать и отражения и переломления и диффуз нормально ума не приложу всё херня получается. Вот есть у нас шарик мы в него глядим такие, шарик у нас позрачный и синий мы за ним стоит стол красный тоесть цвет от стола идёт сквозь шарик преломляется и смешивается с цветом синего шарика в тоже время за нами стоят башииие напольные часы фиолетовые! от них свет падает в то место где выходит преломленый лучик из шарика от стола и с космической скоростью весь этот компот попадает в глаза. И видим мы, синий шар в котором искажённый стол который стоит за ним и видим часы которые отражаются на поверхности шара ибо он и прозрачный и блестящий одновременно….
Цвета мне как смешать пральна? Ась? Вот хрен его знает, вернее хрен знает что есть mix, но вопрос в том как правильно?