美文网首页
游戏渲染

游戏渲染

作者: 祝你万事顺利 | 来源:发表于2019-05-15 14:03 被阅读0次

DrawCall

由CPU收集美术的资源信息,传递给GPU,通知GPU进行一次渲染过程叫DrawCall

OpenGl 渲染流程

cpu :

FBX->Meshrender
FBX obj : 模型文件,包含UV、顶点位置、法线切线等渲染信息
MeshRender : 将信息传给GPU
Meshfilter : 将那个模型信息传给GPU

gpu:

顶点着色器->光栅化->片元着色器->alpha测试->模板测试->深度测试->Blend->显示信息

材质球:

Shader + Texture

顶点着色器:顶点信息处理
光栅化:将顶点转换为像素
片元着色器:

图片处理

纹理处理(Filter Mode):

Point:就近采样
Bilinear:线型采样
Trilinear:三线性采样

批处理:

相同的材质,合并起来进行一次渲染.
Dynamic batching: for small enough Meshes, this transforms their vertices on the CPU, groups many similar vertices together, and draws them all in one go.
Static batching: combines static (not moving) GameObjects into big Meshes, and renders them in a faster way.

NGUI

UIWidget存放UI中的顶点法线UV等信息

同一个图集的深度区间要放到同一个区间中

1.UIWiget在Onstart()中递归的寻找父物体CreatePanel()直到找到第一个UIPanel
2.将UIWiget自身加入UIPanel中存放全部UIWiget的集合中。
3.在UIPanel中lateUpdate逐帧渲染,调用UpdateSelf渲染每一个UIWiget
4.UIWiget调用FillAllDrawCalls,SortWidgets对所有子物体按深度、材质、id排序,这样通过对不同图集之间物体进行深度控制,让同一个图集的物体在一个深度区间。通过对材质前后文进行对比,直到与上一个材质不同的,再新建一个DrawCall。

Shader

SubShader

Each shader in Unity consists of a list of subshaders. When Unity has to display a mesh, it will find the shader to use, and pick the first subshader that runs on the user’s graphics card.

Pass

A subshader defines a list of rendering passes and optionally setup any state that is common to all passes.
When Unity chooses which subshader to render with, it renders an object once for each Pass defined

用例:
旗子飘动效果(顶点y坐标变换)

在顶点着色器中使用简谐波根据x偏移y坐标

        v2f vert(a2v i) {
            float timeOffset = _Time.y * _WaveOffsetSpeed;
            i.vertex.y += _WaveH * sin(_WaveSpeed*i.vertex.x + timeOffset);
            v2f o;
            o.vertex = UnityObjectToClipPos(i.vertex);
            o.uv = TRANSFORM_TEX(i.uv, _MainTex);
            return o;
        }

河流流动效果(纹理坐标的变换)

在片元着色器中对纹理坐标进行变换

        fixed4 frag(v2f v) :SV_Target{
            float2 mUV = v.uv;
            mUV.y += _Time.y;
            fixed4 col = tex2D(_MainTex,mUV);
            return col;
        }

LOD
LOD技术即Levels of Detail的简称,意为多细节层次。LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

相关文章

  • 游戏渲染

    DrawCall 由CPU收集美术的资源信息,传递给GPU,通知GPU进行一次渲染过程叫DrawCall Open...

  • 基础课程-游戏开发平台

    01-游戏原理与机制 归根结底:游戏就是在绘图 重点1:渲染驱动游戏 每部循环在不停的执行游戏渲染,我们手机CPU...

  • 游戏引擎-渲染

  • 图形编程接口OpenGL/OpenGL ES/Meta有什么用?

    图形API可以解决什么问题? 简单来说就是实现图形的底层渲染 比如在游戏开发中,对于游戏场景/游戏人物的渲染 比如...

  • 渲染原理

    这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~ 啥玩意是渲染?游戏图像的绘制被称为渲染 啥玩意是渲染管线...

  • 网页性能衡量之网页fps 检测

    浏览器对于网页的渲染方式和游戏中的渲染方式其实并不相同,在游戏中由于画面是不断变化的,需要持续渲染才能形成流畅的画...

  • 3D游戏的一帧画面是如何显示的

    3D游戏的一帧画面是如何显示的 3D游戏一般使用图形渲染引擎实现,而图形渲染引擎调用的是图形渲染API。常见的图形...

  • 基于SDL类库实现的射死大鸡怪3D游戏

    1 游戏架构介绍 整个游戏分为三个层次:游戏逻辑层,游戏引擎层和软件渲染层。 游戏逻辑层用于控制游戏逻辑,如大鸡怪...

  • 优惠期课程推荐:《Unity 2019 SRP实战 》

    课程回顾了移动游戏行业渲染技术的发展历史,剖析了当下主流移动游戏的渲染技术,并对接下来的技术发展进行了分析。课程主...

  • 游戏中你不知道的实时光线追踪问题

    提到游戏使用的实时渲染,很多人都会觉得光栅化渲染是唯一的方法,而想要在游戏中使用实时的光线追踪,似乎还是遥远的梦想...

网友评论

      本文标题:游戏渲染

      本文链接:https://www.haomeiwen.com/subject/bkngoqtx.html