自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 屏幕后处理——亮度饱和度对比度、边缘检测

【太妃糖耶】更新啦,赶紧来围观吧!详细知识解析见书 P246。

2025-03-31 14:54:09 201

原创 URP渲染管线

Unity 的渲染管线包括(内置渲染管线)和 (SRP),内置渲染管线是 Unity 默认的渲染管线,它有固定的渲染流程,自定义选项有限,开发者难以对其渲染流程进行深度修改。其中URP(通用渲染管线)和 HDRP(高清渲染管线)是基于 SRP 构建的具体实现,属于 SRP 体系。其中SRP是由(URP通用渲染管线)和(HDRP高清渲染管线)组成,SRP是可脚本化渲染管线,是 Unity 引擎中一种可定制的渲染系统,它允许开发者通过编写脚本来自定义渲染流程,以满足不同项目的特定渲染需求。

2025-03-27 11:31:02 776

原创 利用脚本和Shader制作屏幕后处理效果

Unity会把当前渲染完成后的图像存储在src源渲染纹理中,通过函数中的一系列操作后(该函数内操作是我们自定义的),再把目标渲染纹理存储在dest渲染纹理中,dest最终会被显示到屏幕上

2025-03-26 23:06:32 653

原创 屏幕后处理Post-Processing安装及使用

该效果会动态调整图像的曝光以匹配其中间色调,用以模拟人眼实时调整亮度的变化。该效果会使物体在运动方向产生模糊,用以模拟现实中相机光圈打开情况下移动或捕捉移动速度快于相机曝光时间的物体时产生的模糊效果。该效果会分离图像的红绿蓝通道,用以模拟现实世界中相机在光线折射产生的不同波长光分离的效果。该效果会使图像产生畸变 (枕形/桶形),用以模拟真实世界相机镜头的形状引起的失真。该效果会模糊图像的背景,用以模拟真实世界相机镜头的焦距特性,产生对焦效果。屏幕录制 2025-03-25 174138。

2025-03-25 18:01:47 817

原创 合批Batching

静态合批实际上是引擎在打包或者烘焙时候,将同材质的物体合并成一个更大的物体,这样相同材质的物体只需要一次渲染状态设置和一次DrawCall调用,也就一个批次。由于合并生成大的模型后,会占用额外的内存空间,比如三个同材质的立方体的网格就是一个简单的立方体,合并后的网格占用是三个世界空间立方体的组合,因此有时候需要考虑静态合批带来的内存增长。批处理指的是将多个DrawCall合并为一个DrawCall,可以让CPU将满足条件的多个对象的渲染组合到一个内存块中以便减少由于资源切换而导致的 CPU 开销。

2025-03-20 11:46:17 813

原创 通过C#脚本更改材质球的参数

协程是通过迭代器来实现功能的,通过关键字IEnumerator来定义一个迭代方法,注意使用的是IEnumerator

2025-03-19 21:20:54 819

原创 Shader的编译目标渲染器(/平台)

一份游戏在最终打包时,其中的每一个Shader会根据最终显示的平台的不同编译为不同版本的Shader代码。好处:可明确的指定该Shader所支持的平台,编译的时间和内存会相对减少。例如手机平台,PC端等等,Shader会根据不同平台编译出不同的代码。坏处:在某些平台是不会正常显示所写的Shader的。1.排除掉某些目标渲染器。2.只保留某些目标渲染器。

2025-03-11 18:48:07 179

原创 Shader中着色器的编译目标级别

【代码】Shader中着色器的编译目标级别。

2025-03-11 18:26:19 345

原创 Shader的一些优化规则

默认为 Tags { DisableBatching = "false" } //表示默认需要合批。当不需要进行合批时,在Shader中添加 Tags{ DisableBatching = "True" }例: [NoScaleOffset]_MainTex("MainTex",2D)="white"{}//每个使用此Shader的对象在每帧内都会GrabPass一次。//所有使用该Shader的对象在一帧内只GrabPass一次。当没有勾选时:(所有变体会组合爆炸)

2025-03-11 18:06:47 279

原创 Unity场景制作

屏幕录制 2025-03-07 095354。添加云并可修改云材质的参数。

2025-03-07 11:51:17 324

原创 Unity地形系统

Grass Tint。

2025-02-25 18:00:01 811

原创 Unity自定义树(Tree)

右键——3D Object——Tree。

2025-02-25 15:06:54 1188

原创 碰撞体组件、刚体组件

例如Sphere为UI层对象,Cube为Water层对象;设置Cube碰撞体中的层级重写后的优先级为1且其包含UI层;设置Sphere碰撞体中的排除Water层;当两个层级的对象发生碰撞时,会根据碰撞体组件中两对象的层级重写的优先级来决定碰撞情况。

2025-02-24 16:48:33 285

原创 Unity贴图与模型相关知识

其余含义可查询。

2025-02-22 19:20:13 715

原创 Unity摄像机与灯光相关知识

如果你想绘制一个玩家的枪而不让它在环境内部得到裁剪,你要设置一个深度为0的相机来绘制环境,还要另一个深度为1的相机单独绘制武器。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。注意:只能给深度数值最大的摄像机设置 Depth Only,这样两个摄像机的画面才会都显示在 Game视口中,而当两个摄像机深度数值相同,则都可以。摄像机的深度,当有多个摄像机时,深度的大小影响摄像机的渲染次序。屏幕上的任何空的部分将显示当前相机的背景颜色。

2025-02-21 21:16:23 997

原创 PBR光照模型相关知识

因为只要半角向量和微表面法线越接近,反射光线就有可能进入观察者的视线,并且越接近,反射光线进入视线的概率和强度就越大。surfaceReduction 通常与物体表面的粗糙度相关,粗糙度越高,表面的微表面结构越复杂,反射光越分散,surfaceReduction 的值可能越小;可以发现当夹角为0时,即入射光垂直于表面,反射光的比例只有4%左右,而当夹角为90度时,即入射光平行于表面,反射比例将近100%,符合我们前面所说的菲涅尔效应。相反当入射光线与法线的夹角越大,反射的光线越多,折射的光线越少。

2025-02-18 23:30:03 676

原创 前部分知识复习05

tex2Dlod。

2025-02-06 23:42:26 543

原创 前部分知识复习04

如图三,因为当前一个Pass打开深度写入后,深度缓冲中的默认值为该模型最前面像素的深度值(也就是离摄像机最近的模型像素的深度值),在当渲染下一个Pass时,当条件为Greater(大于)通过测试时,这时只会渲染比离摄像机最近模型的深度值还大的地方,所以就等会出现如图三所式的情况。图五,深度测试为小于等于时,离摄像机最近的模型像素的深度值等于当前深度缓冲中的深度值,通过测试,但是后面的模型像素的深度值大于当前深度缓冲中的深度值,测试不通过,这样就解决了半透明模型渲染出背面的问题。//代表写入最前面的深度。

2025-02-06 00:31:50 574

原创 前部分知识复习03

因为衰减贴图的采样需要UV。

2025-02-04 21:01:59 740

原创 渲染流程概述

CPU应用程序端渲染逻辑GPU渲染管线。

2025-01-29 22:28:11 1059

原创 前部分知识复习02

之后需在Pass中声明该贴图才能在Pass中引用此贴图。

2025-01-27 18:41:45 210

原创 前部分知识复习01

multi_compile定义的宏,如#pragma multi_compile_fog,#pragma multi_compile_fwdbase等,基本上适用于大部分shader,与shader自身所带的属性无关。ReadMask的值将和Ref的值以及模板缓冲中的值进行按位与(&)操作,取值范围也是0-255的整数,默认值为255(二进制位11111111),即读取的时候不对Ref的值和模板缓冲中的值产生修改,读取的还是原始值.x的范围为(0,1);当x为0-1之间的值时,函数取a,b之间的插值。

2025-01-26 20:10:37 1081

原创 【无标题】

不过计算机组成原理真难,考试最后一道大题不会做……后续放假回家后再更新学习动态吧!终于考完了,已经在回家的路上了……这段时间在忙期末考试。

2025-01-14 17:56:15 93

原创 Gamma、Linear、sRGB和伽马校正概念理解

而计算机图形学是物理世界视觉的数学模型,Shader中颜色插值、光照的计算自然也是在线性空间描述的。美术输出的贴图等资源都是在sRGB空间的(即本身颜色就被Gamma校正过),但Normal Map等其他电脑计算出来的纹理则一般在线性空间。同时显示器中输出的颜色值在Gamma2.2空间,所以在此基础上人眼看到的颜色值会比显示器中输出的颜色值更暗。这样导致了画面的不真实。所以在进行Shader计算前需移除颜色Gamma校正,将颜色值转换到线性空间中,再进行Shader中的颜色插值以及光照等的计算。

2024-12-23 19:26:24 407

原创 反射探针.

在Shader中采样由反射探针得到的立方体纹理

2024-12-23 17:06:53 661

原创 法线纹理知识

(例如,计算漫反射光照时,漫反射光强是与法线和光照方向的夹角余弦值成正比的。只有将法线转换到世界空间,才能和世界空间中的光照方向进行正确的运算,得到符合物理规律的光照效果)除了光照方向,还有视角方向(从观察点指向物体表面的方向)等向量在世界空间或观察空间中定义。在计算高光反射等光照效果时,需要将法线与这些向量在同一空间下进行运算。(例如,在 Phong 高光反射模型中,需要计算反射光方向(基于法线和光照方向),然后与视角方向进行点积,如果法线不在世界空间,就很难准确地计算这些向量之间的关系)

2024-12-17 20:26:41 1214

原创 纹理相关知识(纹理的多级渐远MipMap、纹理的不同平铺方式实现、立方体纹理)

在lambert光照模型中贴图纹理采样后的结果可以作为其中的漫反射系数Kd使用同时法线贴图纹理采样后的结果还可代替法线向量N使用首先在Properties中添加一个滑杆属性之后在Pass中声明_Mipmap在片元着色器中利用tex2Dlod采样不同级别的纹理tex2Dlod(samper 2D,float4 s)函数代表采样不同级别的纹理 其中有两个参数,第二个参数是float4类型 xy代表uv s.z=0 s.w代表采样纹理的级别(_Mipmap)效果如下:纹理过滤的方式有最邻近过滤、双线性过滤、三线性

2024-12-16 16:18:21 920

原创 雾效的实现方法(自定义方法与内置方法)

使用lerp函数对雾效颜色和模型本身颜色进行插值混合;当模型顶点的深度值较小时,返回模型本身的颜色,当模型的深度值较大时,返回雾效颜色与模型颜色之间的混合值先补充一下lerp函数的运算规则当alpha=0时,返回A;当alpha=1时,返回B;当alpha在0-1之间时返回A与B之间的混合值所以我们使用 fogFactor(雾效混合因子)来表示alphaunity中给了三种不同的雾效混合因子的计算来分别实现三种不同的雾效模型z:表示物体的深度值可以用表示;

2024-12-09 12:50:06 730

原创 间接光照的产生Shader

之前学习了全局光照以及动态对象光照探针,使场景中的对象都可以接受间接光照的反射效果,但是要如何在Shader中使物体可以对其他物体反射间接光呢?

2024-12-09 12:48:00 198

原创 光照探针(为场景中的动态对象实现全局光照)

sh。

2024-12-09 12:35:32 930

原创 全局光照的实现Shader

如何创建自己的cginc文件?首先创建一个文件夹(Folder),用来存放自定义的cginc文件,然后再创建一个Shader然后右击Shader,选择在文件夹中打开Shader文件最后将文件重命名为.cginc后缀的文件即可如何引用自定义的cginc文件?自定义的cginc文件代码//将UnityGI的相关方法都添加到自定义的cginc文件中,并将unity中内置的函数名更改一下,以便区分// 计算Lambert光照模型的式子//SurfaceOutput表面的输出数据#endif。

2024-12-07 23:16:17 1212

原创 实现全局光照GI(光照烘焙)

在 Unity 的 Lighting 面板中,有一个 “baked indirect” 模式,在此模式下,直接光照是实时计算的,而间接光照则是预先烘焙的,这样场景中的动态物体也能够接收预先烘焙好的间接光照,从而提高性能,并且能实现一定程度的间接光照效果.Shadowmask也与Shadow Distance 有关,当小于Shadow Distance设定的值时,动态物体采用实时的光照效果,静态对象的直接光照使用实时的效果,而间接光照和阴影采样光照贴图来实现。混合光照模式结合了实时光照和烘焙光照的特点。

2024-12-06 21:34:57 1171

原创 模型的网格阴影

worldPosY。

2024-11-28 11:12:15 810

原创 模型阴影的接收(采样阴影映射纹理)

struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; //必须得定义UV }; struct v2f { float2 uv : TEXCOORD0; float4 pos: SV_POSITION; float4 worldPos:TEXCOORD1; UNITY_SHADOW_COORDS(2) //相当float4 ShadowCoord :TEX

2024-11-28 11:11:58 945

原创 模型阴影的投射(本质上生成带有该模型信息的ShadowMap,然后其他物体通过采样ShadowMap形成了该模型的阴影效果)

补充:渲染路径的定义。

2024-11-28 11:11:07 103

原创 接上次平行光,这节主要是其他灯光类型的实现与光照衰减以及深度测试与写入、菲尼尔效果的实现

在笔记中查看懒得更了以后有时间更。

2024-11-28 11:09:47 131

原创 与Unity光照相关的Shader知识

渲染路径就是为进行灯光计算的设计的渲染方式。

2024-11-14 11:09:51 1051

原创 通过抓取屏幕图像制作热扭曲效果

GrabPass{"_GrabTex"} //抓取屏幕图像 写在SubShader中与Pass同级。Tags{"Queue"="Transparent"} //定义渲染队列。就可实现通过调节滑杆值来控制屏幕图像采样后的效果 当滑杆值为0时 采样后的结果为屏幕原图像。3.在片元着色器中获取对象所处屏幕中的UV坐标 用此UV坐标来对屏幕图像进行采样。也就是噪波贴图的UV 从而实现屏幕图像扭曲的效果。所得的结果用于屏幕图像采样时的UV坐标。//获取此对象所处的屏幕UV坐标。

2024-11-09 12:53:07 747 1

原创 UI中通过模版测试形成遮罩

Properties//主贴图//Blend 混合效果// 模版测试变量)]_Comp("Comp",int)=0StencilOp)]_Pass("Pass",int)=0//变灰按钮SubShaderTags{"Queue"="Transparent"} //半透明渲染队列Blend [_SrcBlend] [_DstBlend] //透贴效果的实现 SrcAlpha 和 OneMinusSrcAlpha//模版测试。

2024-11-09 10:36:51 1050

原创 特效通用的半透明等材质

之后在SubShader中声明在Shader中若没有定义混合操作,Shader会自动将源颜色因子和目标颜色因子定义为1和0所以在混合操作后存入帧缓冲区内的颜色还是源颜色//颜色属性_Color("Color",Color)=(1,1,1,1) // 默认值设为1 因为之后需要进行颜色相乘操作Pass中声明在片元着色器中写//实现颜色的变化float4 c;c=tex;c*=_Color;return c;添加一个滑杆属性参数调整颜色的明亮程度Pass中声明。

2024-10-31 11:47:05 1021 1

之前学习了关于平行灯的lambert光照.pdf

之前学习了关于平行灯的lambert光照.pdf

2024-11-28

空空如也

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

TA关注的人

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