12 leonwei

尚未进行身份认证

【网游(pc端 移动端)开发 计算机图形学研究 UNITY3D网络教育】 【现任腾讯互动娱乐高级开发工程师 曾在网易游戏 阿里游戏等工作】 【浙江大学CAD Lab. 09级硕士】

等级
TA的排名 4k+

UE高级性能剖析技术(2) -CPU帧率瓶颈和卡顿

CPU上帧率低和卡顿是性能优化中最易出现的一部分,尤其对于手游,提到卡,就大概率是在CPU上出现的问题,CPU上的卡顿一般是卡逻辑或是卡渲染,本篇将详细系统的介绍基于UE的手游对CPU瓶颈的剖析方法。低帧率和卡顿首先低帧率和卡顿是两种完全不同的瓶颈类型,虽然归根到底都是某个函数执行的过慢引起的,但是定位和解决方法并不一样。低帧率瓶颈是需要统计一段时间内CPU把更多的时钟耗费在了哪些函数上...

2019-08-27 14:41:06

UE高级性能剖析技术(1)-- RHI线程(渲染提交)

在最前面基于UE的手游客户端的性能主要由这七大部分构成:CPU逻辑,CPU渲染,图形API(提交),GPU渲染,内存,带宽,加载时间。这几个基本元素又会合力衍生出一些新的性能指标,例如功耗(往往同gpu负载和带宽紧密相关)。同时这七部分又构成一个闭合的木桶,最长的一块是主要瓶颈,并且瓶颈可以在这几块转移流动。作为开发者我们解决性能问题的步骤一般都是按照做性能剖析,解读结果,定位问题,增加剖析代...

2019-07-11 22:14:57

基于深度学习的渲染  Deep Learning Based Rendering

此文作为siggraph17的《DeepLearing:TheFutrureofReal-TimeRendering?》的整理笔记。就像《必然》中说的那样,如同这个时代的互联网一样,AI已然成为下个时代的主角,AI让计算机拥有对复杂算法的决策能力,是解决很多复杂问题的终极武器。它尤其擅长解决这样的问题:复杂的、可并行计算的、能用已有经验推测任意结果并...

2019-03-08 12:39:24

颜色 /About Color --图形学的B面(二)

                                                                                            --图形学的B面(二)本文谈...

2018-12-14 17:00:05

UE4 Render System Sheet(UE4渲染系统概览)

UE4的渲染系统代码量庞大,复杂,我们写UE渲染相关的功能需求的时候,经常需要反复翻阅它里面的数据结构,pipeline,这里用一张图,把UE4的渲染系统的脉络梳理进来,让大家都能更方便的修改UE引擎的渲染功能(你需要点下放大镜)  ...

2018-12-05 10:28:29

RTR4 拾遗(一)-- 图形学的B面

    RTR(RealTimeRendering)对于游戏图形开发来说是本宝书,最近对新版的RTR4进行重读,知识需要经过自己的消化重表述才能成为自己的,所以在这里对里面一些重要内容以我自己的理解重新整理,这篇是关于第8章的LightandColor。它对应于RTR3的第7章advancedshading,后面会陆续更新。写本连载的文,希望自己能够坚持下去 图形学的Se...

2018-12-05 10:22:19

图形编程中常用浮点数及其精度剖析

  图形学中经常要涉及使用各种格式的浮点数类型,如float,half,也会经常用到各种格式的浮点数类型PixelFormat,例如R10G10B10A2,R11G11B10,RGBHalf...。在合适的情况下使用合适的浮点数类型,是保证效率和效果的基础。虽然有些是大学本科课程,但牢记于脑海并时刻保持对每种浮点数精度的敏感也不易,此文总结并详细讨论一下各种常见浮点数的精度,范围,精度分布及应...

2018-09-26 17:55:34

谈谈法线图的压缩

   贴图压缩是游戏开发中常见的一个问题,不过说到法线图的压缩,其实里面就有一些特殊的问题要处理。前段时间做了一次贴图通道的优化,打算用两个通道表示法线图并且和其他通道合并到一张图里,以减少采样次数。这个过程中陆续挖掘了一些问题,记录一下。为什么要用3个通道来表示法线?      我们通常会把法线贴图归一化成一个3元向量n(x,y,z)来表示,常识上来看,因为这个n是归一化的,所以用两个...

2018-04-11 21:51:40

针对移动端特性的渲染优化(续)

  本文接着之前的文章《基于移动端tbdr特性gpu的渲染优化》,继续补充一些移动端渲染优化的点尽量使用directrendering模式,很多游戏使用了很多的后期处理,所以需要先渲染到贴图上,然后再一遍遍的blit到屏幕上,blit操作是一个昂贵的操作,它涉及到对当前framelistdata的立即绘制(理论上framelistdata越晚绘制越好,越利于延迟渲染),然后额外的f...

2018-03-20 11:14:18

针对移动端TBDR架构GPU特性的渲染优化

  TBDR(Tile-Base-Deffered-Rendering)是现代移动端gpu的设计架构,它同传统pc上IR(Immediate-Rendering)架构的gpu在硬件设计上是差别很大的。手游正是运行在这些移动端的TBDR架构上,所以手游的渲染优化在硬件的角度上讲有其独特之处,甚至一些特点和优化点与PC是大相径庭的,基于硬件的优化是应用程序优化很重要的一部分,最近阅读了一些tbdr...

2018-02-09 14:49:25

Sparse Virtual Texture (虚拟贴图技术)

Virtualtexture技术用于解决3D场景中大量贴图而内存有限的情况,它的思想可以参考虚拟内存。 虚拟内存技术中,物理内存是有限的,但是虚拟内存可以远远大于物理内存,虚拟内存被抽象成一个个page即分页文件,page可以真实的载入到物理内存中,也可以存在与磁盘文件上,寻址时采用的内存地址采用一个表来映射到具体的的内存位置,如果映射到物理内存里,即hit,如果在磁盘的page上,将其载入物

2017-11-03 18:32:54

textrue坐标到uv的映射

前两天被shader里面一个奇怪的bug困扰了一下,其实就是一个最简单的问题,我有一个rgbafloat的贴图,只能点采样,因为存储的不是颜色是数据不能线性插值,而这时候我已知当前点的texture坐标xy和贴图尺寸wh如何计算这个位置的uv供shader采样?    我直接使用了x/(w-1), y/(h-1),结果是有问题的,如果x的取值是【0,w-1】,把他除以w-1,变成了

2017-10-23 11:58:30

简单理解spherical harmonic lighting(球谐光照)

1.球谐光照球谐光照在现代游戏图形渲染领域应用很广,用于快速的模拟复杂的实时光照,例如unity中的lightprobe以及一些不重要的实时光源,可以用球谐光照快速的计算。球谐光照的优点是运行时的计算量与光源的数量无关,如果参数足够却可以较好的模拟实时的光照结果。球谐光照的原理不仅涉及图形学,概率论,信号分析,微积分等大量复杂数学公式,这里对这个球谐光照的背景和应用做个最简单的理解

2017-10-18 10:07:45

基于GPU Skin的骨骼动画Instance的实现

很多游戏类型需要在场景中表现大量的角色,而这些角色大多使用骨骼动画的方式来表现,传统的基于CPU蒙皮的方式在手机上对角色数量的限制非常大,本文实现了一种基于GPUSkin的方式,并且结合GPUInstance技术,将大量同类角色的蒙皮到绘制全交给GPU并行进行,并合并了同类角色的批次,本文对着种做法的性能做了测试和分析。

2017-08-18 20:39:14

Unity中depth pass的优化以及谈谈unity中的Framebuffer

最近遇到个很小但是很有意思的问题,在unity中如何从屏幕copydepthtexutrue出来用?这个问题的来源是我发现在unity在移动平台上为了得到深度图,通常需要一个单独的pass,例如我们用到的一些后处理特效需要用刀场景深度信息,我们通过把camera的flag设置为depthtex打开,unity就会在每帧用一个单独的pass绘制深度图,这其实很浪费,我们队全场景的顶点提交了两次,增加了大量drawcall。为了说明解决这个问题的思路,我们从framebuffer说起。

2017-06-29 21:28:00

Unity中基于Gpu Instance进行大量物体渲染的实现与分析(一)

在3D渲染中,尤其是现代3D游戏中,我希望能够绘制越来越多的场景物体,这对于设备(尤其是移动端)的性能是个极大的考验,对于新一代的渲染api,都逐渐支持了GpuInstancing技术,这对于大量相同物体的绘制提供了一个新的方案,在最新的unity5中也提供了对gpuinstance的支持,我尝试在unity5中利用gpuinstance技术来表现大量的植被,并对其性能进行了分析,以探索在3D手游中gpuinstance的应用的可行性。

2017-06-15 09:52:37

优化shader程序的一些tips

在写shader的时候,其实一些写法对于其执行影响非常大,而且由于gpu和cpu在架构上的不同,代码的优化思想也不一样,最近一直在写几个shader,为了性能问题,查阅了很多资料,把一些tips总结下来。

2017-02-17 19:24:58

Unity3d中渲染到RenderTexture的原理,几种方式以及一些问题

虽然RenderTexture这个技术是个普遍使用的技术,但是用好它还是要理解他的底层原理和避免一些使用的问题。这里就UNITY3d中的RenderTexure介绍Rendertexture的底层原理和使用时可能遇到的坑和效率问题。

2017-02-10 18:24:46

do{...}while(0)的意义和用法

转自http://www.spongeliu.com/415.htmllinux内核和其他一些开源的代码中,经常会遇到这样的代码:do{...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免

2017-02-03 11:51:49

扩展欧几里得定理的证明和代码

扩展欧几里得定理的证明和代码

2017-01-25 19:07:16

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。