在第四篇的简单光照模型中,做了一个简单的卡通着色器。对的,讲的思路是冯氏着色的方法,但是最后做出来的实际上是卡通着色。
原因很简单,是因为像素着色器里 这一行的效果。
(资料图)
什么是lerp?什么是saturate?为什么要 LightNormal*16+0.5?
为了方便观察,在这里放置一个球。球可以在PE里快速建出,记得随便贴上个纯色的贴图,还有toon。放上简单光照的fx效果,如图。光照部分和阴影部分有较为明显的二分。所以是非真实感渲染 (Non-Photorealistic Rendering) ,NPR。
实际上把后面的*16+0.5删掉就可以得到 真实感渲染(Photorealistic rendering)。
为了看得更明显,所以这里调整了一下强度和颜色。可以看到这种层层的渐变效果。真实渲染 旨在渲染真实感的画面,而NPR则追求更加有艺术感的画面效果。
回到最开始的问题,什么是lerp?
lerp函数,是经常用的插值函数。其意义是 lerp(a,b,w),计算 a + w*(b-a),在a和b之间插值,w表示权值,范围0~1。
为了看得更明显,我们可以把前边的MaterialToon改成float3(0,0,0),这样就是黑色,与白色,进行插值。
saturate函数,很好理解,saturate(x)将x的数值,截取在0-1之间。
接下来我们更改一下LightNormal*16,从左到右依次是*32,*64。可以看到,边缘的强烈分割。
还有一个插值函数,smoothstep,作用和用法跟lerp一致,但两者之间有一定的区别,这里不多赘述,因为用不到。可以借鉴学习https://blog.csdn.net/qq_41835314/article/details/128618789
最后一个问题,为什么要 LightNormal*16+0.5?
通过修改数值能够有所体会,若想究其原理,需要拿出纸笔,动手算算或者思考一下。
1.在球的光照亮面取一个点,边缘上取一个点,暗面取一个点。
2.用float LightNormal = dot(Normal,-LightDirection)
分别算出LightNormal的正负,大小的排序。
3.saturate(LightNormal*16+0.5),取得三者权重,然后分别插值。
关于HLSL中的函数,这里就不搬运了,参考微软官方文档,或者参考https://blog.csdn.net/eloudy/article/details/71258367
标签:
- 今日视点:MME编写入门(五)简单光照模型 补充说明
- 伍六七三四季的小问题
- 宁夏西海固:粮田一“整”变良田
- 天天即时看!郑州供暖延长至3月18日零时 不另收费用
- 中国专家研发仿生纳米递氧系统 或让更多脑卒中患者得到有效救治
- 【时快讯】更多国家将迎中国“首发”团 为行业送来政策利好
- 每日热讯!公安部“揭秘”个人信息泄漏源 金融消费者该如何避坑?
- 吉野家一餐厅饭菜中混入蟑螂 执法检查又在现场发现43只 世界速看
- 当前聚焦:上海男子花16万办健身卡可用到一百岁 要求转卡却都推三阻四
- 韩国旅游业急招人手迎接中国游客,还推出花式促销|环球观天下
- 西方媒体对北溪集体沉默后又反常同步发声,汪文斌:美国如何解释?是不是有难言之隐?|短讯
- 今日热文:以免费培训为噱头高价兜售消防产品?北京消防打假——
- 环球快消息!香港大学:在内地无委托中介机构代招生,无“内推”机制
- 中、伊、俄等国海军将举行联合军演!
- 官宣!悄咪咪怀孕12周,4颗肿瘤怎么办…
- 杭温铁路二期首座超五公里隧道顺利贯通
- 农发行固阳县支行开展“金融消费者权益日”宣传活动|世界聚看点
- 观察:农发行固阳县支行开展“反有组织犯罪—反洗钱在行动”宣传活动
- 当前最新:农发行武川县支行积极开展消费者权益日宣传活动
- 环球快播:平潭农发行:开展“3·15”消费者权益保护教育宣传周活动
- 【DD日报】『3.14』牧牧白miiu2D新衣发布回;浅川玉乃十五万粉新衣纪念回_环球看点
- “神圣传说”的射手座被抄袭?原画师:能抄进艺术殿堂是它的归宿|环球热点评
- 石嘴山精准发力促重点群体就业创业_全球热点评
- 我区26条举措促进高校 毕业生高质量就业创业
- 全球即时看!有序稳妥开放出境游市场 为行业送来政策利好
- 北京丽思卡尔顿回应“女演员被困酒店厕所3小时”
- 随手关灯、减少用纸、节约用水……生活中多一点儿小气
- 两次用药失误,雍正却对其委以重任,刘声芳究竟是不是大清第一名医?-环球资讯
- 旧仔裤秒变时尚包包,DIY达人教你做
- “附近几条胡同的街坊都爱来这儿逛逛”,他在东四十四条种下棵樱桃树