自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

真像大白阿的博客

一起学习,一起进步。

  • 博客(269)
  • 资源 (10)
  • 收藏
  • 关注

原创 SourceTree跳过注册登录安装

SourceTree作为Git可视化工具,用起来除了卡顿,没有太大问题,在软件安装完成之后,需要注册登录,如果感觉麻烦,可以快速跳过。

2024-01-24 11:53:43 1001

转载 GPU渲染架构-IMR & TBR & TBDR

等到非得刷新整个FrameBuffer的时候,比如说在代码里显示的执行GLFlush,GLFinish,Bind和Unbind FrameBuffer这类操作的时候,总之就是我告诉GPU现在我就需要用到FrameBuffer上数据的时候,GPU才知道拖不了了,就会将这批绘制做光栅化,做tile-based-rendering。arm的移动设备没有显存,需要考虑带宽性能。读取只发生在需要几何以及纹理信息的时候,写回也只发生在整批绘制画完的时候,具体的绘制都是在On_Chip Memory上完成的,

2023-05-22 10:51:06 773

转载 Unity游戏性能分析最终指南 04

Unity Profiler 可以在运行时分析性能瓶颈,并更好地了解特定帧或时间点所发生的情况。Unity Profiler可以提供大量的分析标记数据。请注意,在Editor中直接进行分析会增加额外开销并影响结果。

2023-05-18 18:06:04 1349

转载 Unity游戏性能分析最终指南 02

VSync将应用程序的帧率与显示器的刷新速率同步。这意味着,如果您有一个60Hz的显示器,并且游戏的帧预算在16.66ms内,则它会强制以60fps运行,而不允许更快。将帧率与显示器的刷新速率同步,可以减轻GPU的负担并解决屏幕撕裂等视觉图像瑕疵。在Unity中,通过Quality settings 可以设置VSync Count (Edit > Project Settings > Quality)。Unity Profiler提供了足够的信息来定位性能瓶颈。

2023-05-18 18:03:54 1269

转载 Unity游戏性能分析最终指南 03

Total Used Memory是Unity跟踪的总内存,不包括Unity保留的内存(Total Reserved Memory)。Memory Profiler package的一个巨大优势是,除了捕获本机对象,它还允许查看托管内存,保存和比较快照,并以更详细的方式浏览内存,以可视化内存使用情况。内存分析器的许多功能已被Memory Profiler package取代,但仍然可以使用它辅助内存分析。另外,也可以使用内存分析器模块中的详细视图来深入了解内存树,找出使用最多内存的内容。

2023-05-18 18:03:44 1655

转载 Unity游戏性能分析最终指南 01

分析工具是开发者的实用工具之一,可以帮助开发者定位代码中的内存问题和性能瓶颈,也能帮助了解Unity引擎底层的运行。Unity提供了多种分析工具,用于在Editor和目标设备上分析代码。建议使用各目标平台(例如Arm,Apple,PlayStation和Xbox等)自己的原生分析工具。

2023-05-18 18:02:16 272

转载 Live Activity - 创建你自己的灵动岛 App

Dynamic Island 和灵动岛都是一个含义,技术内容的特指名词我们尽量用英文原始词汇, 所以后面我们都用 Dynamic Island

2023-03-31 18:09:06 1779 1

转载 Shader中为什么尽量不要写除法和逻辑判断

在看过的很多书和文章中,作者都会告诉大家在Shader中尽量不要写除法和逻辑判断,特别是在片元着色器中,因为会消耗更多的资源增加渲染的时间。但是很多人应该都只是记下了不要写除法和逻辑判断,写Shader的时候也会记住不写if或者三目运算,除法却是很少会去注意的一个点。

2023-03-29 18:07:17 366

转载 Metal、Vulkan、DirectX 图形引擎架构演进

Metal 概览 - Apple Developer提升运行速度,远不止图形而已渲染高级3D图形,并使用图形处理器进行数据并行计算。Metal提供了针对平台优化的低开销API,让您可以利用丰富的着色语言,以及图形与计算程序之间更加紧密的集成,开发最新的3D专业app和令人惊叹的游戏。为了帮助您管理更加复杂的着色器代码并同时完成更多工作,Metal新增了一套出色的高级GPU调试工具,助您充分发挥图形代码的潜力。

2023-01-28 09:48:47 2408

转载 CPU缓存命中

CPU架构我们现在经常听到的关于CPU的描述里会有高通骁龙,华为麒麟,英特尔奔腾,酷睿I3、I5、I7或者X86,ARM,PowerPC,又或者32位64位等等。那么它们之间的关系是什么?

2023-01-13 09:56:36 696

转载 ASTC纹理压缩格式介绍

ASTC是在OpenGL ES 3.0出现后,在2012年中产生的一种业界领先的纹理压缩格式,它的压缩分块从4x4到12x12最终可以压缩到每个像素占用1bit以下,压缩比例有多种可选。ASTC格式支持RGBA,且适用于2的幂次方长宽等比尺寸和无尺寸要求的NPOT(非2的幂次方)纹理。

2022-12-27 16:37:42 1620

转载 优化图形性能

游戏的图形部分主要影响计算机的两个系统:CPU 和 GPU。找到性能问题所在是一切优化的首要法则,因为 GPU 与 CPU 的优化策略大不相同

2022-12-27 16:31:46 610

转载 关于静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析

关于静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析

2022-11-30 11:00:36 1231

转载 关于Unity加载优化,你可能会遇到这些问题

如果只是通过Resources.Load加载,就不会有纹理的多份,但是如果通过AssetBundle加载,每个Prefab都是一个AssetBundle,并且纹理没有打包依赖,那么纹理资源确实会在记忆。如果反转,则可以释放。对于Unity 5.3版本之前的项目,建议通过LoadFromCacheOrDownload或LoadFromFile加载AssetBundle,既可以减少Assetbundle对象的内存占用,又可以保持AssetBundle之间的链接关系和资源,方便后续加载有依赖的Prefabs。

2022-11-29 18:28:14 3880

转载 图形渲染及优化—Unity合批技术实践

我们可以在美术资源生产的过程中做很多渲染批次方面的优化。通常我们可以将一些使用相同材质的物体模型合并成一个模型,在游戏渲染的时候一次提交给渲染API进行绘制,降低了Draw call的数量

2022-10-31 22:03:16 1351

转载 Unity内存与资源管理

内存管理是程序开发的核心问题,而资源的使用又与内存息息相关,因此本章想要梳理整个开发流程中Unity对于内存与资源的管理方式。

2022-10-31 22:00:22 855

转载 Unity中关于 Mipmap

在三维计算机图形的贴图渲染中有一个常用的技术被称为Mipmapping。为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。这个技术在三维游戏中被非常广泛的使用。 Mipmap 需要占用一定的内存空间,同时也遵循小波压缩规则(wavelet compression)

2022-09-29 15:27:32 5036

转载 HLSL 偏导数 ddx / ddy

在光栅化的时刻,GPUs会在同一时刻并行运行很多Fragment Shader,但是并不是一个pixel一个pixel去执行的,而是将其组织在2x2的一组pixels分块中,去并行执行。

2022-09-29 12:01:23 775

转载 URP源码学习(一)整体框架理解

unity新出的SRP功能,可能是渲染的未来(希望是),但是资料比较少,做手游开发,又只能用到URP,资料更少,最近查了很多资料,加上看源码,对于URP有了一些了解,个人感觉还是很实用的,在手游上应该潜力很大。...

2022-08-19 09:59:00 1244

转载 URP源码学习(四)光照

UniversalAdditionalLightData,看名字是设置光源的属性,实际影响的参数只有shadowBias和shadowNormalBias,感觉这名字起的有点误导,不需要手动添加,如果在light里对Bias选择Custom,则会自动添加。光照相关的代码和shader大致看了一遍,核心内容就是光照计算的流程,URP实现的是一个简化版的计算,这部分项目中实际要改的应该不多,设置好各种宏就可以了,光照算法也不是我这个水平能改的了的,会用就行~下面分成几个部分,看看shader代码是怎么实现的。.

2022-08-19 09:54:13 1585

转载 URP源码学习(二)管线,pipeline

URP有个cameraStack的概念,大概理解就是一个相机带有一个stack,可包含多个相机,渲染的时候将stack里最后一个激活的相机渲染到屏幕上,渲染流程和上边差不多。面板上的显示,基本上和UniversalRenderPipelineAsset类是一一对应的,主要分几个部分,比较重要的是光照和阴影,细节先不说了,用到了看看就行。首先这里的管线,指的是图形学上的管线,渲染一帧需要的所有逻辑,要和后边说的前向渲染管线做个区分。...

2022-08-19 09:51:02 925

转载 URP源码学习(三)UniversalRenderer渲染管线

首先延迟渲染的核心思想,是利用gbuffer,保存一部分数据,最后做一次对应屏幕分辨率的计算。URP自然也要基于gbuffer去实现。URP对于传统的延迟渲染,又做了一些扩展。gbuffer保存了比法线更多的数据,以及可以支持多种光照模型,代价是drawcall增加。目前的版本不支持OpenGL,但是支持Vulkan,手机上可以看情况开启,动态切换也比较容易。......

2022-08-19 09:50:04 1236

转载 URP源码学习(五)阴影

通过MainLightShadowCasterPass驱动RenderPassEvent是BeforeRenderingShadows,也就是clear之后就渲染shadowmap。有两个作用,一个是判断是否开启了阴影,一个是设置阴影的一些参数,分辨率,级联层级数量等。函数的结果是将设定好的阴影图按级联数量,分成几个小块,每个小块渲染一个精度的阴影。主要作用是获取shadowmap的rt,配置到pass的color缓冲区,标记为只渲染深度值。大体流程和主光源差不多,下面就对一些有区别的地方做下说明。...

2022-08-19 09:48:49 1722

转载 URP源码学习(六)后处理

URP把后处理分成了两个pass,finalPass只在相机抗锯齿模式为FastApproximateAntialiasing时调用。如果对应效果开启,设置shader关键字或贴图,shader用的是finalPass。Render函数里有个有趣的写法,int GetSource() => source;类似这种,在函数内定义函数。逻辑上来说判断抗锯齿模式是多余的,只有fxaa才会用这个分支渲染。这些常见的后处理效果,都有比较成熟的算法,具体逻辑就不细看了。这个函数按顺序渲染各个后处理效果,简单看下流程。.

2022-08-19 09:47:51 1044

转载 URP源码学习(七)一些细节和理解

URP提供了两种获取深度图的方法,一种是像内置管线那样,直接渲染指定pass,另一种是取深度buffer,渲染到一张rt上,优先用取深度buffer的方法,效率更高,但是需要系统和硬件支持。对rt的理解大概就这些,URP做了一些封装,看起来有点绕,反正核心就是改变渲染数据写入的位置,由屏幕变成我们定义的一张图,然后取这张图用来实现各种效果。这个在内置的管线,是通过shader的grab指令获取的,移动设备支持的不好,URP加了一个拷贝buffer的方式,性能会好一些。通过CopyColor pass实现。.

2022-08-19 09:44:51 1857

转载 一图流梳理URP Lit.Shader结构

一图流梳理URP Lit.Shader结构

2022-07-30 20:43:10 185

转载 URP学习--LitShader

LitShader也是基于物理渲染的,很多方法和属性看过默认管线PBR代码的应该都会很熟悉,我们现在再过一遍,加深一下印象,同时疏通一下以前可能没有掌握的地方。

2022-07-30 20:37:53 1246

转载 Unity BRDF公式解析

Unity BRDF公式解析

2022-06-30 16:28:54 909

转载 URP从原理到应用——进阶篇

URP原理和应用

2022-06-30 16:03:11 5542

转载 Shader基础:5、表面着色器Surface Shader

表面着色器是通过Unity给我们制定好的一套标准,计算出需要填充输入什么,输出什么等相关信息,并产生真实的顶点(vertex)&像素(pixel)着色器,以及把渲染路径传递到正向或延时渲染路径。输出结构struct SurfaceOutput { half3 Albedo; //反射率,也就是纹理颜色值(r,g,b) half3 Normal; //法线,法向量(x, y, z) half3 Em...

2022-05-30 14:52:42 521

转载 SHADER学习笔记(一):Surface Shader

Surface Shader是Unity为了方便shader编写提供的特殊功能,它对底层的vertex/fragment shader做了封装,省去了一些重复代码编写的工作量。我的理解是它同时具有vertex/fragment shader的功能,只是写法上更加简洁,更容易上手。Unity的官方manual上就提供了几个最好的学习例子,我在学习的过程中加上了注释。简单的漫反射(SIMPLE) Shader "Example/Diffuse Simple" { SubShad.

2022-05-30 14:49:33 1264

转载 URP自定义后处理(相机滤镜)

前言之前做游戏一直想弄个可以实时触发相机滤镜的效果,自处找了教程和资料,想要做到自定义效果的话最好办法是在unity 内部实现,这个办法比较硬核,其实不适合我这样的小白,所以我在实现的过程中非常痛苦,我用的unity URP 模式其实自带后处理隐藏菜单的,这功能可以通过添加Volume组件启用,但是要在底层代码中自己写个脚本,类似在底层接一根线出来。一、自定义render feature先从底层接线,自定义render feature,怎么定义呢,先找到你的渲染管线,打开菜单栏edit—proj

2022-04-29 19:03:09 1359

转载 URP——后期处理特效

通用渲染管道(URP)包括一个后处理效果的集成实现。如果使用URP,则不需要为后期处理效果安装额外的包。URP与PostProcessingStackv2包不兼容。URP使用体积框架进行后期处理效果。下面的图片显示了一个URP场景有没有后期处理的区别。没有后期处理特效:有后期处理特效:注意:URP在OpenGLES 2.0上不支持后期处理特效。How to configure post-processingeffects in URP本节描述如何在URP中配...

2022-04-29 18:57:20 4897

转载 Shader入门 各种坐标空间的定义和变换演示

文中内容主要参考书籍《unity shader入门精要》,作者为冯乐乐。该篇建议先浏览前面篇章的渲染流水线部分结合理解。一、模型空间(model space)模型空间(model space)在不同的游戏引擎或者是软件中又称作对象空间(object space)或者局部空间(local space)。在游戏中的每一个模型或者物体都有各自独立的坐标空间,模型有自己的前后左右,这是它的自身属性,旋转或者是移动和缩放模型并不能改变它的前后左右。在Unity中,模型空间使用的是左手坐标.

2022-03-31 17:53:50 1056

转载 unity shader中的矩阵变换知识

提要 在图形的计算中,比如旋转、缩放、平移、投影等操作,矩阵都扮演着极其重要的角色,它是操作图元的基本工具。虽然很多的图形API已经封装好了这些矩阵操作,但是理解这些矩阵操作的原理会非常非常有帮助,比如说我们可以通过一些矩阵的快捷计算来加速你的代码。 如果你有一些线性代数的基础,看下面的内容的时候也不会很轻松,因为有点难且比较没意思,如果没有修过这门课,最好把线性代数这本书拿来看看,因为这些东西真是基础中的基础,而且非常的重要。齐次记法(Homogeneous Nota...

2022-03-31 17:46:37 1678 1

转载 Unity Shader 变体处理与预加载流程

一、什么是Shader变体,它是怎么出现的当我们写完一个shader以后,unity需要加载和编译,这个过程由着色器的构建管线来完成,它的输入是着色器,而它的输出就是今天的主角---着色器变体;每一个着色器进入构建管线后会被解析,然后提取着色器片段(顶点着色器和片元着色器等),收集预处理指令,然后每一个着色器变体会有一个参数表;为什么会有变体这个概念呢,其实它和我们使用宏的概念是一致的,就是一个全局的控制,同一个shader的变体之间的着色器代码功能类似,只是有一些微小的差距,而如果我们为每一种情况都

2022-03-02 15:57:48 3145

转载 图元装配和光栅化

OpenGL ES 3.0学习汇总OpenGL ES 3.0 学习记录汇总目录本文主要介绍:OpenGL ES支持的 图元 和 几何形状对象 的类型,以及它们的绘制方法。 OpenGL ES 图形管线 顶点着色器 之后的 图元装配 阶段。 OpenGL ES 图形管线的 光栅化 阶段。图元图元可以用 glDrawArrays、glDrawElements、glDrawRangeElements、glDrawArraysInstanced、glDrawElementsInstanced

2022-02-28 17:11:34 729

转载 Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术

转自冯乐乐的 《Unity Shader 入门精要》移动平台的特点为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某些Android设备)使用了基于瓦片的延迟渲染(TBDR)架构,把所有的渲染图像装入一个个瓦片中,再由硬件找到可见的片元,而只有这些可见片元才会执行片元着色器。另一些基于瓦片的GPU架构,如Adreno(高通的芯片)和Mali(ARM的芯片)则会适应early-Z 或相似的技术进行一个低精度的深度检测,来剔除那些不需要

2022-02-28 17:00:53 382

转载 【Unity】Shader优化总结

分为三个部分:Unity官方文档,GDC,个人经验。Unity Manual1.计算量优化。着色器进行的计算和处理越多,对性能的影响越大。针对不影响最终效果但依然进行计算的无效代码,进行移除操作。计算的频率也会影响游戏的性能。通常,像素着色器比顶点着色器的执行次数要多。在可能的情况下,将计算从像素着色器移动到顶点着色器,或将它们完全在着色器移除,在脚本中计算并传递给着色器。2.表面着色器优化。Unity提供的表面着色器非常适合编写与光照交互的着色器。针对特定情况设置关键字以使着色器效率更高或减小

2022-01-29 15:24:15 4017 1

转载 Unity_Shader高级篇_16_Unity Shader入门精要_减少计算复杂度

16.8 减少计算复杂度16.8.1 Shader的LOD技术和16.5.2提到的模型的LOD技术类似,Shader的LOD技术可以控制使用的Shader等级。它的原理是,只有Shader的LOD值小于某个设定的值,这个Shader才会被使用,而使用了那些超过设定值的Shader的物体将不会被渲染。我们通常会在SubShader中使用类似下面的语句来指明该shader的LOD值:SubShader{ Tags{"RenderType" = "Opaque"} LOD 200...

2022-01-29 15:20:30 285

Advanced Vertical FogHeight Fog Shader for Mobile Desktop 1.2

Unity 高度雾、体积雾,高性能实现

2024-04-10

Dynamic Clouds 1.0

Unity 动态云,高性能,简单实现

2024-04-10

Stylized Water 2 1.6.2

Unity内快速实现风格化水体

2024-04-10

Simple Vertical FogHeight Fog Shader for Mobile Desktop 1.4

简单的高度雾Shader,使用模型渲染,体积雾

2024-04-10

Dynamic Smoke System

Dynamic Smoke System Unity动态烟雾系统

2024-04-10

Reachability网络状态

iOS中获取当前网络连接状态,iOS11中不能再使用导航栏中的View通过KVC的方式获取,使用该工具可以简单实现获取当前网络状态,无网络/WIFI/数据网

2018-06-19

Unity3d-nav-CritterAI

Unity插件,用于导出Unity的NavMesh数据,用于服务器导航。

2018-02-27

DOTweenPro-v0.9.290

DOTween插件,DOTweenPro,DOTweenPro_v0.9.290版本。

2018-02-07

AssetBundles-Browser

AssetBundle打包工具,AssetBundle可视化打包

2017-08-01

Behavior Designer - Tactical Pack

Behavior Designer的Tactical开发部 unitypackage

2017-05-25

Behavior Designer - Movement Pack

Behavior Designer的Movement开发包 unitypackage

2017-05-25

Behavior Designer基础包

Behavior Designer的基础包 unitypackage

2017-05-25

Behavior Designer文档中文版PDF

Behavior Designer文档中文版

2017-05-12

KBEngine的API

KBEngine引擎的API文档

2017-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除