当前位置:网站首页>第二十四课、二十五课,高级光照(blinn),Gamma矫正
第二十四课、二十五课,高级光照(blinn),Gamma矫正
2022-07-31 09:08:00 【Elsa的迷弟】
高级光照(blinn)
这里主要是矫正了,视口方向和反射方向夹角太小造成的阴影轮廓现象。
但是在我的项目中,只要给blinn
光照的shiness
乘4
,基本与冯氏光照没有区别。
if(light.blinn){
vec3 halfwayDir = normalize(viewDir+lightDir);//半程向量
spec = pow(max(dot(normal,halfwayDir),0.0),material.shiness*4);
}
else{
vec3 reflectDir = reflect(-lightDir,normal); //反射方向
spec = pow(max(dot(viewDir,reflectDir),0.0),material.shiness);//计算镜面反射系数
}
Gamma校正
使用内置gamma矫正
使用如下内置gamma方式,图像显示没有任何变化。
if(gamma)glEnable(GL_FRAMEBUFFER_SRGB);//gamma
else glDisable(GL_FRAMEBUFFER_SRGB);
使用自定义gamma矫正
未使用gamma
使用gamma
看出使用gamma后效果不如未使用,原因应该是,模型本身的颜色属性是已经经过了gamma矫正,所以如果经过了两次gamma矫正画面偏白。
解决方法:在进行物理颜色值计算之前,先进行gamma反矫正,再在渲染是执行gamma矫正。
//反gamma
vec3 diffusecolor = vec3(texture2D(material.texture_diffuse1,TexCoords));
vec3 specularcolor = vec3(texture2D(material.texture_specular1,TexCoords));
diffusecolor = pow(diffusecolor, vec3(2.2));
specularcolor = pow(specularcolor , vec3(2.2));
vec3 ambient = light.ambient * diffusecolor;
vec3 diffuse = light.diffuse * diff * diffusecolor;
vec3 specular = light.specular * spec * specularcolor;
使用纹理gamma反矫正后
使用gamma
未使用gamma
边栏推荐
- 【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
- Come n times - 06. Print the linked list from end to end
- Scala基础【seq、set、map、元组、WordCount、队列、并行】
- 科目三:前方路口直行
- JS中原型和原型链的详细讲解(附代码示例)以及 new关键字具体做了什么的详细讲解
- 2022杭电杯超级联赛3
- Golang-based swagger super intimate and super detailed usage guide [there are many pits]
- jupyter notebook初使用
- SQL join table (inner join, left join, right join, cross join, full outer join)
- 【RISC-V】risc-v架构学习笔记(架构初学)
猜你喜欢
傅里叶变换,拉普拉斯变换学习记录
【MySQL功法】第2话 · 数据库与数据表的基本操作
(selenium)Service geckodriver unexpectedly exited. Status code was: 64
Define event types in Splunk Web
【Unity】编辑器扩展-04-拓展Scene视图
js department budget and expenditure radar chart
Hematemesis summarizes thirteen experiences to help you create more suitable MySQL indexes
Splunk Workflow action 给我们带来的好处
如何升级nodejs版本
【RISC-V】risc-v架构学习笔记(架构初学)
随机推荐
一次Spark SQL线上问题排查和定位
qt在不同的线程中传递自定义结构体参数
torch分布式训练
Hematemesis summarizes thirteen experiences to help you create more suitable MySQL indexes
[What is the role of auto_increment in MySQL?】
科目三:右转弯
【NLP】Transformer理论解读
2022 Hangzhou Electric Cup Super League 3
Come n times - 06. Print the linked list from end to end
Binary tree search and backtracking problem (leetcode)
刷题《剑指Offer》day05
A brief introduction to the SSM framework
postgresql generate random date, random time
postgresql 生成随机日期,随机时间
Cloud server deployment web project
Doraemon teach you forwarded and redirect page
Scala基础【seq、set、map、元组、WordCount、队列、并行】
MySQL 排序
JSP page对象简介说明
高并发-高可用-高性能