The Unity editor has a really flexible rendering engine. You can modify any Material property at any time during a frame. Plus, Unity historically was made for non-constant buffers, supporting Graphics APIs such as DirectX9. However, such nice features have some drawbacks. For example, there is a lot of work to do when a DrawCall is using a new Material. So basically, the more Materials you have in a Scene, the more CPU will be required to setup GPU data.
-
posts
-
[翻译]SPR Batcher - Speed up your rendering
-
[翻译]Gamma & Linear Space - What they are and how they differ
Linear space lighting is a term that game developers are becoming ever more used to hearing as games reach for the next level of realism with physically based rendering models (PBR). Though linear space and its counterpart, gamma space, are fairly simple and important concepts to understand, many developers don’t learn what these terms really mean. This document will define gamma and linear space, how they differ, and how it applies to the Unity engine.
-
Gaussian Blur
高斯模糊(Gaussian Blur),也叫高斯平滑(Gaussian smoothing),作为最经典的模糊算法,一度成为模糊算法的代名词。 高斯模糊在图像处理领域,通常用于减少图像噪声以及降低细节层次,以及对图像进行模糊,其视觉效果就像是经过一个半透明屏幕在观察图像。
-
读《克拉拉与太阳》
我没有完整地读过一本石黑的小说。尝试着读下去,便感觉到一束目光深沉晦重地打在人物的身上,阻止我继续深入,故事前半部分冗长的叙述也一度让我感到无聊,石黑一雄笔下的人物仿佛在命运的潮流里伫立,会呼吸会死亡,婵娟在昏沉的梦境中,带着克制滞涩的秉性堕入默识的深渊。
-
音乐王国概率分析
如果每次抽奖都是独立事件,那就全凭运气,但是还是怀疑这个概率是个伪随机算法,所以想做个数据分析来验证一下,如果是满足条件概率,顺便还可以做一个预测模型做概率预测。
-
Unity PBR 实现分析
实现一个PBR光照Shader,参考Unity URP管线的Lit.shader实现,这里做个记录。
-
PBR笔记
渲染方程(The Rendering Equation)
渲染方程的物理基础是能量守恒定律。在一个特定的位置和方向,出射光 Lo 是自发光 Le 与反射光线之和,反射光线本身是各个方向的入射光 Li 之和乘以表面反射率及入射角。
-
Blender UV笔记
笔记参考 Blender 2.8 UV贴图基本原理
-
Unity Dynamic Batching
动态合批适用于
模型简单
,材质相同
,数量很多
的运动物体,动态合批只会在程序运行时发生,在CPU中将可以合批的对象整理合并在一起后,向GPU发送一次绘制命令。因为动态批处理的工作原理是将所有游戏对象顶点转换到CPU上的世界空间,所以仅在该工作小于进行绘制调用的情况下,才有优势。 -
Unity Static Batching
批量渲染是通过减少CPU向GPU发送渲染命令(DrawCall)的次数,以及减少GPU切换渲染状态的次数,尽量让GPU一次多做一些事情,来提升逻辑线和渲染线的整体效率。但这是建立在GPU相对空闲,而CPU把更多的时间都耗费在渲染命令的提交上时,才有意义。
-
Unity SRP实践
创建自定义可编程渲染管线
- 继承RenderPipeline抽象类,实现
void Render(ScriptableRenderContext context, Camera[] cameras)
方法 - 继承
RenderPipelineAsset
抽象类,实现RenderPipeline CreatePipeline()
方法
- 继承RenderPipeline抽象类,实现
-
Unity DOTS Rendering
ECS的渲染步骤:
- 数据
- 位置
- 模型信息
- Mesh
- Material
- 调用渲染API / Hybrid Render
- 数据
-
Unity DOTS笔记
DOTS是Data Oriented Technology Stack的缩写,其核心内容包括:
- Entity Component System
- C# Job System
- Burst Compiler
-
[Unity Shader] GPU Instancing
GPU实例化可使用少量绘制调用一次绘制(或渲染)同一网格的多个副本,显著提高项目的渲染性能。对于绘制在场景中重复出现的对象非常有用。GPU 实例化在每次绘制调用时仅渲染相同的网格,但每个实例可以具有不同的参数以增加变化并减少外观上的重复。
-
[Unity Shader] ShaderLab Syntax
Unity中所有的着色器都是用ShaderLab语法编写的。实际着色器的代码位于
CGPROGRAM
代码片段中。 -
[Unity Shader] Transfrom
之前研究OpenGL的时候接触的矩阵变换,在Unity中用Surface Shader实现一次,当作入门Unity ShaderLab的Hello World。
-
[OnePass] vault
vault
is a simple password manager. Given a passphrase and the name of a service, it returns a strong password for that service. You only need to remember your passphrase, which you do not give to anyone, and vault will give a different password for every service you use. The passphrase can be any text you like. -
[dudu] Product Requirement
之前写了一个web服务器,名字还挺可爱的,叫
dudu
。烂尾到现在,想把这个坑填上,顺便体验node.js的全栈开发流程,熟悉一下常用的工具和插件。目标是让dudu
成为一个原型项目框架,之后如果有web开发相关的需求,例如游戏后台,可以拿过来直接开始业务的开发。 -
V2Ray Setup
Express VPN最近被干扰的厉害,本来想学一下Unity的ML-Agents,结果从Github clone的速度只有10k/s。 看来不准备两个梯子没办法在这行混了,已经有一个商用VPN了,再准备一个私人代理服务器。 搜集了一下资料,决定用
Aliyun + V2Ray
这套方案。 -
Summer
-
开发笔记(3)——mysql集成
环境搭建
-
开发笔记(2)——mocha单元测试
单元测试环境
-
开发笔记(1)——koa环境搭建
koa环境搭建
安装node.js
brew install node
-
用Scrapy实现一个爬虫程序
Scrapy框架
Scrapy是我今天浏览网页的时候看到有人提到才知道,很早之前就想尝试做一个爬虫工具,刚好拿来用一下。如果自己写很难避免去实现html请求,dom分析,输出数据这些操作,无异于制造轮子。Scrapy解决了这些基础的问题,先写个Demo熟悉一下Scrapy。
-
zero——Go实现轻量级的Tcp服务器
zero是我用Go实现的一个非常轻量的Socket服务器,可用于快速制作游戏Demo,整个项目不超过500行代码。提供心跳检测,会话管理功能。 接收发送数据使用二进制数据流的方式,可以非常方便的配合Protobuf使用。
-
深度理解Lua中的table
Lua的table是个很有意思的东西。有些内容平时写代码的时候很少接触到,但是了解一下还是很有意思的。
-
Lua的continue实现
Lua中没有continue关键字,但是有两种方法可以曲线救国。
-
C++中的字符串笔记
-
XCode下搭建GoogleTest框架测试环境
一直想系统学习一下C++的东西,几本C++的书也落了很厚的灰。之前对C++的认识也停留在应用开发的层面,这次决心深入的去系统学习一下。Mac上首选就是XCode,我非常推崇测试驱动开发,所以决定用GoogleTest来做测试框架,来验证学习过程中的代码。
-
Unity3D摄像机视角控制
摄像机控制是一个非常常见的需求,这次花了点时间整理一下,单独把这部分的功能提炼出来,封装成一个通用类。