渲染

深入Android渲染机制

1、知识储备

CPU:中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能。CPU将对象处理为多维图形、纹理(Bitmaps、Drawables等都是一起打包到统一的纹理)。

GPU:一个类似于CPU的专门用来处理Graphics的处理器,作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。

OpenGL ES是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程。附相关OpenGL渲染流程资料

关于Unity中渲染顺序问题

1、Camera是渲染顺序的最大总指挥

顺序由Camera的Depth值决定,值越小视野范围内的游戏物体越先渲染

关于Unity中渲染顺序问题

2、layer是对游戏中所有物体的分类别划分

如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等。将不同类的物体划分到不同的层,便于相机拣选,在相机的cullmask中可以选择渲染哪些层,不选择的层则不会渲染。还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测。

flat 着色 、gourand着色、phong 着色

若渲染速度并不重要,我们可以逐像素地计算光照和雾化。(对于光照,这项技术称作Phong着色模型----不要和镜面反射的Phong模型混淆。)然而这样做计算量过于巨大,所以我们折中并减少计算的频率。有两个选择:逐多边形或逐顶点计算,这两项技术分别称作flat着色和Gourand着色。

cocos2d-x多线程渲染的一些探讨

可行性:

游戏循环主要包括这几个部分:
1、硬件事件,主要就是指触屏事件,按键事件和鼠标事件;
2、游戏事件,主要指定时器事件和预定义事件,比如schedule;
3、游戏逻辑,对于胖脚本端来说,这个就指的脚本逻辑;
4、渲染数据的生成,在引擎里面就是指node的visit,这里计算生成所有即将发往OpenGL的数据,包括顶点纹理坐标等attribute数据,变换矩阵纹理等uniform数据,混合模式等渲染状态;
5、通过OpenGL接口把所有数据发往OpenGL。

这几个步骤里面,只有第五个步骤需要涉及到OpenGL操作,而前面四个步骤都是为第五个步骤做准备,而第五个步骤不用或者很少需要反馈数据给前面四个步骤。这是一个典型的生产者消费者模式,在很低线程同步开销的情况下课采用多线程处理。

必要性:

处理游戏逻辑(包括前四个步骤)承担了太多cpu运算,而发数据到OpenGL也相当耗时,尤其涉及到多次的渲染状态切换。在多核cpu上面把二者分开可以提高并行性,进而提高游戏帧率。

一些方案:

VR沉浸体验的要求

大家好!今天我来这里主要介绍的是使用UE4做VR内容的一些优化技巧。VR需要给大家一个沉浸式的体验,这要求两点:一点是你的画面要尽可能的精美,另外一点是你的呈现要尽可能的流畅。

这两点其实是相互矛盾的,因为你画面做的越细致、越精美,其实你的内容就越重,你的渲染压力也就越大。你要做到75帧双眼同时渲染难度就非常高。

我们看用UE4引擎帮你做了多少事情,第一个已经早就完成了。引擎的输入更新并不是只有一次,传统引擎输入可能是游戏线程一开始有个输入,把所有这帧的输入都获取。获取完之后游戏线程再计算游戏逻辑然后送给渲染线程绘制。这种情况下,假设我们游戏跑在60帧,最后更新的HMD或者其它输入设备的最后数据,其实都是要有16毫秒左右的延迟。

最简单可以做的第一步是引擎在把数据送给渲染线程之前,我们会把整个渲染的View Matrix重新更新一遍,游戏逻辑是按照这一帧刚开始收集到的数据来计算。视点其实是通过游戏线程的逻辑线程几乎已经结束后送给渲染线程来计算的。

【视频】PowerVR 光线追踪提供实时,逼真的渲染

为全方位发展,Imagination开发了与光线追踪相关的IP,而光线追踪技术一直被认为是计算机图形学中的“圣杯”,其使得超写实光照的开发更加简单明了。

PowerVR 光线追踪提供实时,逼真的渲染

前往Imagination官方优酷观看: http://v.youku.com/v_show/id_XMjgxMTc1MTY4OA==.html

Unity&Shader高级篇-渲染路径(Rendering Paths)

一、前言

在Unity的Camera中常常会看到一个Rendering Paths的选项,里面有5个选项,其中两个比较重要的选项分别是“Deferred Shading”和“Forward Rendering”,在我还是初学Unity的时候,并没有在意太多。如今随着学习Shader的深入慢慢领会到了这两个渲染路径的重要性。下面就这两个渲染路径的区别和优缺点做一个学习记录。

主要参考文献
维基百科:Deferred_shading
Unity官网:Deferred shading rendering path

可编程渲染管线与着色器语言

大家好,今天想给大家介绍一下可编程渲染管线和着色器语言的相关基础知识,使想上手SHADER编程的童鞋们可以快速揭开SHADER语言的神秘面纱

由于时间有限,我决定只讲三个主要方面的内容,其过程中肯定会有不详细之处,还请见谅,就算是抛砖引玉,给大家一个简单的入门引路。

本章内容总共分为三个部分 一、3D渲染管线工作流程 二、可编程管线 三、着色器语言

3D渲染管线作为整个工作流程的基础,是不可或缺的基本知识。因此,作一定的讲解是有必要的。 但作为一个回顾内容,就不会对具体的内容进行讲解,比如如何进行坐标系变换,如何进行光栅化等等。 我们仅关注的是整个工作的过程。

甚至,我们更关心的不是整个工作过程中的细节,而是我们所必须要关注的几大流程。 如下图

1

数据填充

当我们想实现一次渲染效果的时候,数据的提交(填充)是不可缺少的。 因此,工作流程的第一步就是要处理输入的数据。

此文对于程序员和美术制作人员都有很大的帮助作用,希望你看完后对基于物理的渲染有个整体的理解,此篇翻译的文章(The Comprehensive PBR Guide by Allegorithmic - vol. 1)基本上是从美术的角度来解释基于物理的渲染,有时间我会把程序部分的知识再细致讲一下,包括理论和实现,我自己目前也在学习阶段,主要在研究UE4的基于物理的渲染,希望在接下来的时间里出一个比较详细的文章来从程序员的角度详细阐述实现原理。By 风恋残雪

光是一种复杂的现象,因为它同时具有波和粒子的属性。因此,创建了不同的模型来描述光的行为。作为制作贴图的美工,我们关心光-射线模型,因为它描述了光和介质是如何交互的。对于我们来说,理解光线如何跟介质表面交互很重要,因为我们的工作就是要制作描述那个表面的贴图。我们制作的贴图和材质用来在虚拟世界中跟光线交互,我们对光如何表面了解得越多,我们制作的贴图看起来就越好。

在这个指南里面,我们会讨论物理背后的理论,它是基于物理渲染的模型的理论基础。让我们从光线说起然后逐步扩展到基于物理渲染的关键因素。

光线(Light Rays)

移动GPU渲染原理的流派——IMR、TBR及TBDR

作者:借你一秒

移动GPU相对桌面级的GPU只能算是未长大的小孩子,虽然小孩子在某些场合也能比成人更有优势(比如杂技、柔术之类的表演),但在力量上还是有先天的差别,主要表现在理论性能和带宽上。

  与桌面GPU动辄256bit甚至384bit的位宽、1.2-1.5GHz的高频显存相比,移动GPU不仅要和CPU共享内存带宽,而且普遍使用的是双32bit位宽、LPDDR2-800或1066左右的内存系统,总带宽普遍在10GB/s以内,悲催的Tegra 3使用的还是单通道内存模式,搭配DDR3L的带宽不过6.4GB/s。

目前GPU性能最强大的iPad 4带宽也不过17GB/s(图片源于Anandtech)

同步内容
--电子创新网--
粤ICP备12070055号