入门图形学:平直着色和平滑着色

news/2024/11/15 15:58:25/

       真是在老家关得有点郁闷了,不晓得这疫情什么时候结束。虽然我个人非常喜欢放假,因为有更多时间学习、玩游戏和搞自己的事情。不过这次疫情时间掐得太准了,刚好是放年假回老家拜年的时间,直接把我关在老家四十天,手上除了一台低配笔记本外什么都没有,每天最多的事情就是看下pdf和电影(笔记本屏幕又小、独显也没有、cpu也不行、项目也跑不动、游戏也不能玩)。

       不过最近发现一个好玩的建模利器blender,支持桌面全平台,运行配置要求也低(当然不包括使用cycles渲染器),同时安装包体积小(只有不到100mb),功能强大,开源且免费,我学了一周,感觉这个软件很完美,很多指标比3dmax/maya更好一些(特别是在商业权益方面),我是马上就喜欢上了blender,顺便想安利一下。

       在blender和unity协作之间,涉及了fbx导出导入的问题(当然所有建模软件都要经历这个问题)。

       在blender中渲染有两个关键参数:平直着色光滑着色

       先看看wiki上的解释:着色方式

       平直着色核心:假设组成网格的三角面都是平面,且同一个三角面上任意一个法向量都相同。先在每个三角面上挑选一个点计算颜色(通常是三角面拓扑关系的第一个顶点,也可以选择几何中心),则三角面上其余顶点直接赋予该顶点颜色。所以,使用平直着色法的每个三角面都是统一的颜色,和最近邻差值效果类似。

       这也好理解,网格是由顶点和面构成的,而光照计算很重要的参数就是顶点法向量和顶点朝光源向量。所以平直着色造成光照渲染效果如下:

      

       一种low polygen的风格,这里抬杠一下:我直接曲面细分无数次再球形化,达到纯球效果,我pc四路rtx2080ti。

      

       反正我的笔记本是卡爆了,而且这种细分做法,已经在gpu动态曲面细分中实现了,没必再经过cpu内存中提交到gpu。

       光滑着色核心:得到网格三角面的每个顶点法向量,用光照模型计算每个顶点的光照颜色,然后使用线性插值处理得到三角面上每个像素的颜色,所以得到平滑渐变效果。

       blender的光滑着色效果。

      

       右边看得出来顶点数量没有增加。

       同时unity中默认着色也是平滑着色。

      

       这里做个测试,blender分别用光滑着色和平直着色导出两个sphere到unity使用默认渲染:

      

       看得出来blender中设置平直和光滑着色直接影响到unity中渲染效果,哪怕使用的同样的shader。

       当然我们之前写了很多次shader渲染效果,知道unity渲染管线的默认着色方式是平滑着色,所以一个三角面的包含的片段颜色,是由顶点颜色线性插值出来的。

       而平直着色,我目前使用两种方式达到效果:

       1.通过geometry shader,将每个三角面单独提取出来进行单顶点光照取色,将三角面渲染成单一颜色,这种增加了geometry函数计算,当然渲染效率会降低。

       2.在cpu几何阶段将网格三角面“断裂分离”,我们知道光滑着色就是顶点之间光照颜色插值,那么我们“断裂”三角面之间的顶点,则“阻断”了这种插值处理过程,“模拟”出平直着色效果。不过这种运行效率更低,因为几何数据增加了,例如blender导出的sphere,平直着色的几何数据明显增加很多。

      

       最后如果我们继续深入学习图形学,直到能写自己的渲染管线,那么我们可以定制渲染管线,直接从最底层入手,写一套“新”的渲染管线,直接剔除光照颜色插值过程,修改逐顶点计算成只计算三角面第一个顶点光照等等,这样的话我们不仅达到了平直着色的效果,而且优化了gpu运行效率。

        btw,如果你玩一些很老的游戏,会发现“古老”的渲染管线是没有光滑着色,都是平直着色,因为历史硬件环境原因,所以说平直着色渲染管线相反还是“老前辈”,我们使用平直效果算是“真复古”了。

      

 

      

 


http://www.ppmy.cn/news/858011.html

相关文章

安卓系统管理软件_AIoT 告别功能机时代,智能硬件的安卓和 iOS 指日可待

智能硬件也要操作系统? 根据 Marketsandmarkets 的报告预测,边缘计算人工智能硬件市场的出货量在 2019 年有望达到 6.1 亿部,到2024 年,这一数字将超过 12.59 亿部,且在预测期内的年复合增长率达 20.64%。 然而&#x…

计算机专业电脑配置要求的,win7系统

2014-03-02 09:39:10  浏览量:24488 微软宣布2014年4月8日即将停止对xp的技术支持,于是出于电脑安全的考虑,很多xp系统的用户选择了将操作系统升级到win7。win7作为新一代的操作系统,和xp系统相比有了很多的不同,出了…

我的世界怎么联机显示服务器,我的世界怎么联机 局域网联机及服务器教程

导 读 《我的世界》怎么联机?可以说联机是我的世界非常好玩的一个元素,但是很多玩家都不会,下面小编就为大家带来《我的世界》局域网联机及服务器教程,希望对各位玩家有所帮助。 minecraft的服务器肯定是一... 《我的世界》怎么联…

极速云计算机,云电脑极速版

云电脑极速版是一款可以让大家在手机上玩到最高清的电脑游戏的软件,它有着属于自己的高端技术为我们设计出各种好玩的游戏,变身掌上网咖解决了所有想要玩游戏用户们的需求,可以随时随地的玩起游戏来。 云电脑极速版介绍 云电脑极速版APP是一个…

切水果安卓APP逆向过程报告----安卓逆向入门

一、准备工作 下载切水果大战原版.apk.链接:https://pan.baidu.com/s/18N_Lg8C4O5D1J7cbt99W6Q?pwdp625 提取码:p625 开始游戏 找找有什么比游戏还好玩的东西 看到有个礼包,点进去 果不其然让你掏钱 点购买,弹出确认支付 不能充…

酷、好玩、科技感:还原一辆智能汽车应该有的样子...

全景式前挡风玻璃、15.6 英寸中控大屏、磁吸式遮阳板、18650 圆柱电池、怀挡设计……细数这些细节,处处都是特斯拉的影子——这可能是小鹏 G3 留给你的第一印象。 作为一款标准的紧凑级 SUV 车型,小鹏 G3 的悦享和智享版车型车身长、宽、高分别为 4450m…

小游戏开发上手体验 - Cocos Creator

微信群里最大的骚扰源有两种: 一是转发#吱口令#~!#¥%……&*,长按复制此消息领红包之类的 另一种就是各种小程序和小游戏的分享 前天有同学无意间把一个小游戏分享到了答疑群中,我看了一下,其实游戏的代…

【玩物立志-scratch少儿编程】骑上小摩托(动态背景+摄像头控制操作)

前言 🚀 博主主页:阿阿阿阿锋的主页_CSDN 🚁 编程工具:scratch网页版 🚁 本程序相关资源:图片素材及程序源码 scratch是一款主要面向小朋友们的编程工具,也有很多的大朋友们喜欢它,因…