前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏渲染

游戏渲染

作者头像
祝你万事顺利
发布2019-05-29 16:01:49
1.2K0
发布2019-05-29 16:01:49
举报
文章被收录于专栏:Unity游戏开发Unity游戏开发
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坐标

代码语言:javascript
复制
        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;
        }

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

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

代码语言:javascript
复制
        fixed4 frag(v2f v) :SV_Target{
            float2 mUV = v.uv;
            mUV.y += _Time.y;
            fixed4 col = tex2D(_MainTex,mUV);
            return col;
        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DrawCall
  • OpenGl 渲染流程
  • 图片处理
  • NGUI
  • Shader
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档