- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unity3D游戏发之着色器介绍(一)——软渲染和着色器原理
Unity3D游戏开发之着色器介绍(一)
——软渲染和着色器原理
一开始先讲些理论性的东西吧。要讲着色器,我觉得很有必要先说一下着色器是怎样工作的。
在不知道什么是着色器的前提之下,也没有任何的三维引擎的帮助,假如我们需要渲染显示下面一个立方体,我们需要怎样做呢?
? ? ??
? ? ? 如果只有得到这个立方体的8个顶点的坐标,没有其他任何的条件,我们是无法渲染显示的,因为一个存在于空间中的三维物体,我们从不同的角度去观察,看到的样子是不一样的,比如我们从camera1和camera2两个不同的位置去观察这个cube:
文章出处 HYPERLINK / 【狗刨学习网】
会得到不同的结果:
? ? ? ?这是因为我们我们在不同的角度观察同一个物体时,物体投影在我们的视网膜上的点的位置是不一样的。(由于只是介绍原理,?而不打算在这里介绍一个引擎的写法,所以我只会大概讲一下实现的过程,而具体的算法不在此讨论范围。)
? ? ?从这里可以得知,渲染一个模型的形状,必要的条件是两个:
? ??
? ? ?1、模型各个点在世界空间的坐标
? ? ?
? ? ?2、我们观察的角度。
? ? ??我们撇开整个模型,只观察由P1、P3、P4组成的三角形,通过一定的算法,我们可以计算出三个点分别投影在Camera1和Camera2上面的坐标。
? ? ? ?当计算出了这三个点在投影上面的坐标后,基本上我们就可以把模型的位置给渲染出来了,比如P1、P3、P4构成的三角形,我们只需要把它填满红色,就形成了三维物体在我们的眼中的渲染位置了。
? ? ? ?由于我们现在所用的多边形渲染方式都是以渲染三角形为基础的,所以我们能渲染一个三角形,就能同理类推,把整个三维模型渲染出来。
? ? ? ?一般来说,我们的三维模型都不止是纯颜色的,比如这个立方体我们可以贴上一张汽车的贴图。
? ? ? 还是留意P1、P3、P4组成的三角形。在确定了三个点在投影的位置之后,三角形范围内的像素点应该显示怎样的内容?
? ? ?这是我们渲染需要考虑的第二个问题。
? ? ? ?通常关于贴图类型的显示,我们需要知道这张贴图的某个位置是???应着渲染的三角形的某个位置。这个位置的对应关系,是通过UV坐标来表达的。通过UV坐标,我们就能知道从P1到P3范围的像素点,是从贴图的某个位置到某个位置,然后按照一定的比例缩放,从图片上取得了该像素点应该显示的颜色。文章出处【狗刨学习网】
? ? ? ?通过上面的2个步骤,我们首先知道了怎样确定模型的点在投影面上的位置,然后知道了怎样确定由点组成的三角形内的每个像素点的颜色。到了这一步,实际上整个三维模型已经被渲染出来了。
? ? ? ?最后一个问题是,通过像素点离投影面的距离,求出面之间的叠加关系,这是深度排序的问题,暂时不在这里讨论。
? ? ? 以上整个过程,就是所谓的软渲染。在没有任何三维引擎的帮助下,我们就可以把一个三维模型从一堆数据里面显示出来。
??
? ? ? 至于三维引擎里面的动画渲染,其实步骤就是如下:
? ? ? 每次进入一帧:
? ? ? 1、清除画布,把上一帧留下的画面清除;
? ? ? 2、求出所有点在投影面的坐标;
? ? ??3、求出每个像素的颜色值;
? ? ? 4、渲染出来。
? ? ??结束渲染
您可能关注的文档
- REUSE_ALVGRID_DISPLAY超详细讲解.doc
- RFC1055_在行线路上传输IP数据报的非标准协议.doc
- Renesas R78L1C 16位MCU开发方案.docx
- RF+jenkin+svn自动化持续集成环境搭建.doc
- RFID技术在广东网固定资产管理中的应用.doc
- RJ必修2化学第四~学业测评(孔诗韵)知识点.docx
- ROUTE Chater 1 6.0 .doc
- RL-QP-01 件控制程序 -6修改.doc
- ROS ADSL双负载均衡+PPPOE服务器教程图文详解.doc
- RouterOS 3.24版本PCC多线负载均衡设置例程.doc
- Unity3D游戏发之制作一个简单的NPC.docx
- Unity3D游戏发之碰撞盒光源声效及树木制作.docx
- unity3d游戏发之脚本实现模型的平移与旋转.doc
- unity3d游戏发之角色的动画脚本的编写(一).doc
- Unity3D游戏发之网络游戏服务器架构设计(如何做一名好主程).doc
- Unity3D游戏发之高达光之翼&月光蝶效果制作.doc
- unity3D游戏发之简单的NPC制作.doc
- Unity3D游戏擎实战开发从入门到精通(坦克大战项目实战、NGUI开发、GameObject).doc
- Unit_5_Wht_were_you_doing_when_the_rainstorm_came?_教案.doc
- Unity3D:界插件NGUI的使用(二).docx
文档评论(0)