图形渲染

实时渲染中常用的几种 Rendering Path

[导读] Rendering Path 其实指的就是渲染场景中光照的方式。由于场景中的光源可能很多,甚至是动态的光源。所以怎么在速度和效果上达到一个最好的结果确实很困难。以当今的显卡发展为契机,人们才衍生出了这么多的 Rendering Path 来处理各种光照。

1. rendering path 的技术基础

在介绍各种光照渲染方式之前,首先必须介绍一下现代的图形渲染管线。这是下面提到的几种 Rendering Path 的技术基础。

实时渲染中常用的几种 Rendering Path

梳理 Opengl ES 3.0 (二)剖析一个GLSL程序

OpenGL ES shading language 3.0 也被称作 GLSL,是个 C风格的编程语言。

Opengl ES 3.0内部有两种可编程处理单元,即Vertex processor和Fragment processor,分别用来处理Vertex shader executable和Fragment shader executable。注意,Opengl ES 3.0不支持Geometry Shader。下图中,紫色部分就是可执行体了,即 executable .

梳理 Opengl ES 3.0 (二)剖析一个GLSL程序

先来一段Vertex shader代码

#version 300 es //版本号
in vec4 VertexPosition; //应用层输入逐顶点位置坐标数据
in vec4 VertexColor; //应用层输入逐顶点颜色数据
uniform float RadianAngle; //应用层输入数据

可编程图形渲染管线

着色程序分为两类:vertex shader program(顶点着色程序)和fragment shader program(片断着色程序)。

为了清楚的解释顶点着色和片断着色的含义,我们首先从阐述GPU上的两个组件:Programmable Vertex Processor(可编程顶点处理器,又称为顶点着色器)和 Programmable Fragment Processor(可编程片断处理器,又称为片断着色器)。

顶点和片段处理器被分离成可编程单元,可编程顶点处理器是一个硬件单元,可以运行顶点程序,而可编程片段处理器则是一个可以运行片段程序的单元。

顶点和片段处理器都拥有非常强大的并行计算能力,并且非常擅长于矩阵(不高于4阶)计算,片段处理器还可以高速查询纹理信息。

如上所述,顶点程序运行在顶点处理器上,片段程序运行在片段处理器上,哪么它们究竟控制了GPU渲染的哪个过程。图 8展示了可编程图形渲染管线。

可编程图形渲染管线

虚幻引擎学习之路:渲染模块之材质系统

接上文:虚幻引擎学习之路:渲染模块之光照系统
在本篇文章中,我们继续介绍渲染模块的另一重要部分:材质系统。

虚幻引擎学习之路:材质系统

材质描述了场景中物体与光照进行交互的过程,它是决定物体表面外观的最重要部分之一。Unreal 4引擎的材质系统为开发者提供了丰富的功能,使得开发者能够非常便捷地设计出具有真实感的场景和角色。

本文将在接下来的内容中对Unreal 4引擎的材质系统功能进行逐一介绍,其中主要分为几个部分:
1.材质编辑
2.材质模型
3.材质使用
4.特殊功能
在介绍前三部分内容时,本文会根据需要与Unity引擎功能的相似性进行比较。

虚幻引擎学习之路:渲染模块之光照系统

渲染模块之光照系统

我们准备从三方面来介绍Unreal 4引擎的渲染模块,主要包括:光照系统,材质系统和图像后处理。本篇文章重点讲解第一部分:光照系统。

在对比Unreal 4与Unity两者引擎时,本文分别采用的版本是Unreal 4 4.16和Unity 2017.1.1。

本节将介绍Unreal 4引擎的光照系统。在介绍基础功能时,本文将分块进行介绍,主要包括:
一、光源
二、全局光照
三、阴影
四、反射效果
五、其他特殊效果
同时,本文将与Unity引擎中的这些功能进行对比。另外,对于Unreal 4引擎中的特殊功能,本文将单独介绍。

一、光源

浅谈 GPU图形固定渲染管线

图形渲染管道被认为是实时图形渲染的核心,简称为管道。管道的主要功能是由给定的虚拟摄像机、三维物体、灯源、光照模型、纹理贴图或其他来产生或渲染一个二维图像。由此可见,渲染管线是实时渲染技术的底层工具。图像中物体的位置及形状是通过它们的几何描述、环境特征、以及该环境中虚拟摄像机的摆放位置来决定的。物体的外观受到了材质属性、灯源、贴图以及渲染模式(sharding modles)的影响。

很多计算机图形学的书籍都把渲染管线分为三个阶段:应用程序阶段、几何阶段、光栅化阶段。

1. 应用程序阶段(CPU)

应用程序阶段,通过高级编程语言(C、C++、JAVA)进行开发,与CPU、内存打交道,主要任务是识别出潜在可视的网格实例,并把它们及其材质呈交给图形硬件以供渲染。在该阶段的末端将产生几何体数据,包括顶点坐标、法向量、纹理坐标、纹理等,通过数据总线传送到图形硬件以供渲染(时间瓶颈),进行几何阶段。应用程序阶段负责驱动GPU管道,在该阶段有三个角色:
1.可见性判别:仅把可见(或至少潜在可见)的物体提交GPU,以免浪费宝贵的资源去渲染看不见的物体。(裁剪?)

图形渲染管线 The Graphics Rendering Pipeline

这篇文章是解析计算机图形学界“九阴真经总纲”一般存在的《Real-Time Rendering 3rd》系列文章的第二篇。将带来RTR3第二章内容“Chapter 2 The Graphics Rendering Pipeline 图形渲染管线”的总结、概括与提炼。

文章分为全文内容思维导图、核心内容分章节提炼、本章内容提炼总结三个部分来呈现,其中:
文章的第一部分,“全文内容思维导图”,分为“章节框架思维导图”和“知识结构思维导图”两个部分。
文章的第二部分,“核心内容分节提炼”,是按原书章节顺序分布的知识梳理。
而文章的第三部分“本章内容提炼总结”,则是更加精炼,只提炼出关键信息的知识总结。

一、全文内容思维导图

1.章节框架思维导图

图形渲染管线 The Graphics Rendering Pipeline

2.知识结构思维导图

图形渲染与视觉外观

这篇文章将总结和提炼《Real-Time Rendering 3rd》(实时渲染图形学第三版)的第五章“Visual Appearance(视觉外观)”的内容。

壹·导读

当我们渲染三维模型的图像时,模型不仅要有适当的几何形状,还应该有所需的视觉外观。《Real-Time Rendering 3rd》第五章内容,讨论光照和材质在现实世界的表现,关于光照和表面模型,着色方程,以及渲染出真实外观的一些额外技术。

简而言之,通过阅读这篇总结式文章,你将对图形渲染中的以下要点有所了解:

○ 渲染与视觉物理现象
○ 光照与材质
○ 着色原理
○ 抗锯齿
○ 透明渲染
○ 伽玛校正

当然,本文作为总结式文章,知识点会相对密集,很多地方对细节并不可能展开描述,对一些地方不太理解的朋友,自然还是推荐是去阅读《Real-Time Rendering 3rd》的对应原文与相应文献。

贰·渲染与视觉物理现象

当渲染类似图1中的逼真场景时,可以帮助了解渲染相关的物理现象。一般情况,这些物理现象分为三种:

○ 太阳光与其他光源(天然或人造光)发出光。

Unity中如何使用Raymarching实现惊艳的图形效果

本文将由David Arppe分享一些在游戏中使用Raymarching技术的建议,以及他已用于实际游戏中的Raymarching代码。Raymarching技术实际上已经非常“古老”,在很早之前就被用于一些“古老”而经典的游戏中。例如下面两款经典的“老”游戏:

1.《Tennis for Two》(William Higinbotham,1958)

《Tennis for Two》(William Higinbotham,1958)

《Tennis for Two》被广泛认为是最早的视频游戏之一,它是一款使用示波器进行播放的游戏!非常酷并且很有创意!

2. 《Donkey Kong》(Nintendo Research and Development 1,1981)

Unity3D图形渲染优化、渲染管线优化、图形性能优化

主要内容也可以参考:
http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerforman...

最简单的优化建议:
1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。
2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unlit目录下的。它们更高效。
3.尽可能共用材质。
4.将不需要移动的物体设为Static,让引擎可以进行其批处理。
5.尽可能不用灯光。
6.动态灯光更加不要了。
7.尝试用压缩贴图格式,或用16位代替32位。
8.如果不需要别用雾效(fog)
9.尝试用OcclusionCulling,在房间过道多遮挡物体多的场景非常有用。若不当反而会增加负担。
10.用天空盒去“褪去”远处的物体。
11.shader中用贴图混合的方式去代替多重通道计算。
12.shader中注意float/half/fixed的使用。
13.shader中不要用复杂的计算pow,sin,cos,tan,log等。
14.shader中越少Fragment越好。

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