Cocos2d-x 3.x 图形学渲染系列二

原创 2017年01月03日 16:01:25

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社 和《Unity3D实战核心技术详解》电子工业出版社 等。

现今,可编程流水线已经深深的在3D引擎上打下了烙印,目前市面上大部分3D引擎都是基于可编程流水线开发的,也就是用GPU编程开发。提到可编程流水线,就不得不提固定流水线,其实它们的目的是一样的,就是把游戏虚拟场景在屏幕上显示出来,只是它们中间的处理过程是不同的,固定流水线通过名字可以看出它是按照固定的流程绘制出物体的,详情可查看笔者已出版的书籍《手把手教你架构3D游戏引擎》电子工业出版社,在书里有对固定流水线的详细讲解,以及用固定流水线实现了一个比较弱小的3D游戏引擎。本章重点介绍的是可编程流水线,通过字面意思知道它是“可变”的流水线,意味着它的矩阵计算并不是在CPU中计算得到的而是通过GPU编程多线程实现的。下面结合着可编程流水线流程图,给读者介绍一下可编程流水线的原理,可编程流水线流程图如下1-1所示:


                                                                                                                                                图1-1可编程流水线流程图

     在图1-1中,茶壶模型是美术利用MAX工具建的模型,将模型的顶点传输到GPU中的顶点着色器中,进行矩阵变换,并且通过光栅化插值操作,将计算的结果传输到片段着色器中绘制,最终将其输出到手机屏幕上,这整个流程就是可编程流水线。关于矩阵的变换操作都是在顶点着色器中进行,为了帮助读者更好的理解可编程流水线,把固定流水线流程图给读者展示如1-2所示:


                                                                                                                    图1-2固定流水线

 

                  该图展示的是固定流水线,之所以成为固定,是因为模型在屏幕上显示的过程必须要经历这些固定的操作步骤,可变流水线就是把矩阵的换算放到GPU中进行了,从而把CPU解放出来,从而优化了运算效率。固定流水线可以参考笔者的极客头条-游戏核心之固定流水线算法

GPU(英文全称:Graphics Processing Unit)是嵌入在显卡的芯片处理器,是专门用于处理顶点着色器和片段着色器的,关于顶点着色器和片段着色器会在后面章节中讲解。以前电脑显卡没有GPU芯片时,大部分游戏都是基于2D游戏或者是像素游戏开发的,效果可想而知,随着硬件的飞速发展,显卡具有了自己的芯片处理器GPU,3D游戏引擎强大的渲染功能也随之发展起来,3D游戏中各种绚丽多彩的效果都是通过GPU编程实现出来的。比如玩家常说的次世代网络游戏渲染效果,充分利用了GPU的渲染功能,它非常适合对游戏的模型材质渲染和游戏的场景渲染,游戏场景的渲染是被称为后处理,这些效果包括:Bloom效果、Blur效果、SSAO效果、PSSM效果、HDR效果等。

     不论在PC端还是在移动端,都可以利用GPU编程渲染出好的效果,引擎中最能体现GPU强大功能的渲染效果,比如海水的反射、折射、高光效果,笔者在自己研发的项目中已实现过如图1-3所示。


既然本书是讲Cocos2D-x引擎的渲染,下面是笔者利用Cocos2D-x引擎中的3D渲染模块实现的模型材质渲染,模型的材质含有高光、法线、反射效果,如图1-4所示。



另外,利用Cocos2D-x引擎中的3D模块实现的高光、法线、环境映射效果如图1-5所示。


无论是利用商业还是开源3D游戏引擎,通过GPU编程都可以实现出比较绚丽的效果。GPU的渲染功能还是非常强大的,图1-4和图1-5实现的Shader渲染效果都会在后面章节中给读者介绍。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Cocos2d-x 3.x 图形学渲染系列二十

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》...
  • jxw167
  • jxw167
  • 2017年01月19日 09:36
  • 706

GPU渲染时代——2D图形图像中的应用(一)

Windows上的2D程序还主要基于GDI和GDI+,遗憾的是这两者都是软件实现,而Direct2D则不同,它基于Direct3D,所以能够使用硬件加速功能,能更大程度的发挥硬件特性,创建高性能,高质...
  • crazycooler
  • crazycooler
  • 2014年07月05日 18:34
  • 1660

Cocos2d-x 3.x 图形学渲染系列二

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社 和《Unity3D实战核心技术...
  • jxw167
  • jxw167
  • 2017年01月03日 16:01
  • 1778

Cocos2d-x 3.x 图形学渲染系列二十三

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》...
  • jxw167
  • jxw167
  • 2017年01月25日 08:27
  • 703

Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程

这是一篇比较详细介绍Cocos2d-x3.2渲染过程的文章。
  • cbbbc
  • cbbbc
  • 2014年09月21日 22:36
  • 12377

Cocos2dx_3.x新的渲染流程

第一,渲染流程从2.x到3.x的变化。     在2.x中,渲染过程是通过递归渲染树(Rendering tree)这种图关系来渲染关系图。递归调用visit()函数,并且在visit()函数中调用该...
  • yxtxiaotian
  • yxtxiaotian
  • 2016年05月09日 17:41
  • 2829

Cocos2D-X shader(一) 渲染机制

Cocos2D-X渲染机制     Cocos2D-X 从3.0开始引入了一种新的渲染机制,所有的OpenGL渲染代码不再放到每一个node的draw函数里面,而是通过各种RenderCommand...
  • operhero1990
  • operhero1990
  • 2015年12月08日 11:25
  • 1210

Cocos2d-x 3.x 图形学渲染系列二十一

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》...
  • jxw167
  • jxw167
  • 2017年01月20日 13:53
  • 970

Cocos2d-x 3.x 图形学渲染系列四

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社 和《Unity3D实战核心技术...
  • jxw167
  • jxw167
  • 2017年01月05日 08:52
  • 1446

cocos2dx 3.x中的OpenGL(一)-Cocos2d-x渲染结构

1111
  • zh13544539220
  • zh13544539220
  • 2015年03月16日 09:59
  • 688
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2d-x 3.x 图形学渲染系列二
举报原因:
原因补充:

(最多只允许输入30个字)