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-05 08:52
  • 1133

两个线程同时做100次a++

全局变量int a=0;现用两个线程执行100次a++,求a的最终值 #include "stdafx.h" #include #include //子线程函数 int a=0; u...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

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

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

3D游戏引擎系列三

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

手把手教你架构3D游戏引擎

在这里将多年游戏研发经验的积累写成一本书奉献给读者,目前已经开始预售,网址: http://www.broadview.com.cn/article/70 该书主要是将游戏中经常使用的技术给大家做了...
  • jxw167
  • jxw167
  • 2016-12-08 10:16
  • 4145
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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