Unity-渲染
文章平均质量分 50
东北砍王
做游戏,是种梦想!
展开
-
技术美术TA之URP下的光照(额外光源)
之前流程都是固定的,比如前向渲染还得写 ForwadBase ForwadAdd之类的。感觉相对URP下灵活方便,代码也很简洁。原创 2023-09-04 14:36:10 · 310 阅读 · 0 评论 -
技术美术TA之URP下的光照
1.Universal Render Pipline/Lit(PBR光照,相当于 BuildIn管线下的 Standard材质)但是如果 Additional Lights 设置为 逐定点或者住像素 也会有效果(平行灯就当做额外灯处理)本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~2.Universal Render Pipline/Simple Lit(非PBR的光照)3.Universal Render Pipline/Unlit(不受光照的)原创 2023-08-24 13:52:30 · 669 阅读 · 0 评论 -
技术美术TA之URP下的序列帧动画
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~在 Shader 中只需要按照从左上到右下的顺序,依次截取一个个子区域显示。类似 Unity的 Transform 自带 LookAt 函数。通过 Tiling + Offset 实现的。始终朝向相机,z方向确定,求其他两个方向。原创 2023-08-23 12:15:48 · 300 阅读 · 1 评论 -
技术美术TA之URP下的抓屏
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~不透明的物体不会被渲染到这里(人家都叫Opaque了。(对应Buildin管线就是 自己定义Grab )4xBilinear:小4倍(降采样模式不一样)4xBox:小4倍(降采样模式不一样)2xBilinear:小2倍。原创 2023-08-23 02:06:09 · 283 阅读 · 0 评论 -
技术美术TA之URP下的深度图
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~b.如果都选了 Lighting/Cast Shadows 会由阴影部分生成深度图。BuildIn 管线 需要每个物体都用 ShaderCaster 的Pass。2.FrameDebuger 可以看到 有个 CopyDepth。a.半透明物体没有深度图(RenderQueue>2500)1.需要开启 Depth Texture。URP 管线只需要一个Pass。原创 2023-08-23 01:26:22 · 614 阅读 · 0 评论 -
技术美术TA之URP下的纹理采样
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~原因:采样器的个数有限制,内置管线是一一对应的,现在可以定义很多贴图,只有一个采样器。2.可以自定义 WrapMode 和 FilterModel。(不用走 Inspector面板内的了)1.纹理和采样器分别定义。原创 2023-08-22 15:43:41 · 539 阅读 · 0 评论 -
技术美术TA之URP下的SRP合批
GPU内 有一个大的 Buffer,有几个Drawcall 就有几个 buffer,还有每个材质的 CBuffer,最后统一的去上传到GPU。本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~提交到GPU内存是,会分开 一个是设置引擎内部的属性 一个是设置材质属性(有变化时候才更新)提交到GPU内存时,每个都是一个 CBuffer 常量缓冲区,然后一个一个去渲染。流程:CPU 从系统内存里获取数据,提交到 GPU 内存,进行渲染。原创 2023-08-22 02:56:26 · 353 阅读 · 0 评论 -
技术美术TA之URP最简Shader
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~1.需要在Tags 内加 “RenderPipeline”=“UniversalPipeline”2.Include 从 UnityCG.cginc 改成Packge内的文件。4.片断着色器返回half4,URP内没有fixed了。3.CG语法,变成了HLSL语法。原创 2023-08-22 02:20:12 · 181 阅读 · 0 评论 -
技术美术TA之URP介绍与导入
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~Unity 觉得名字起的low了,大家都不想用 LWRP,但是也可以做高端效果。(怎么排序,怎么渲染,怎么剔除等等,可以做精简,并且有性能提升)所以新出了 SRP(通过脚本自定义渲染管线),对应两个 RP。只有一套渲染管线,需要支持高端和低端的,所以会越来越臃肿。上层:c# 封装了一个可编程的渲染管线,可以自定义。所以 改名了,就叫成了 URP,让大家好理解。b.Universal RP,URP相关。原创 2023-08-21 23:58:12 · 265 阅读 · 0 评论 -
技术美术TA之ShaderToy
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~里面有各种各样的Shader,可以参考一下拿到自己项目里。本文就拿ShaderToy默认的效果举例。是写完 Shader去装比的一个网站,原创 2023-08-21 22:51:30 · 105 阅读 · 0 评论 -
技术美术TA之屏幕后处理
1.需要在Camera上挂 Monobehaviour脚本呢,通过 OnRenderImage 的回调 调用 Graphics.Blit 进行绘制。本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~对源图像进行 Graphs.Blit 存储成目标图像,最后写入到帧缓存。2.参数需要在 C# 面板控制,不在Material才创建。当内容绘制完毕,会存到帧缓冲区,称为源图像。通过很短的设置时间大幅改善产品的视觉效果。原创 2023-08-21 22:32:31 · 82 阅读 · 0 评论 -
技术美术TA之批处理
如果用到了 vertex+uv+normal+tangent+uv1,最多可以有 900/5=180 个顶点。2.Batch:把需要渲染的数据加载到显存并设置好渲染状态,然后CPU调用GPU渲染的过程为一个Batch。本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~1.DrawCall:CPU每次调用图形API命令GPU进行渲染的操作(CPU的消耗)b.单个网格顶点最多300个,顶点属性最多900个。缺点:有额外的网格数据,会造成包体+内存的增加。原创 2023-08-21 20:31:49 · 143 阅读 · 0 评论 -
技术美术TA之Shader编译相关
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~eg:interpolators10:至少需要10个插值器(从顶点到片断)可以通过 #if SHADER_TARGET< 30 做分支判断。微软剔除,要求显卡厂商按级别提供对应的功能与指令支持。不同的 SM 包含不同的指令集与 Shader 规范。#pragma target 2.0(默认是2.5)可以做一些效果再高中低配之间的不同。表明shader需要的特性功能。原创 2023-08-20 16:27:22 · 180 阅读 · 0 评论 -
技术美术TA之变体优化
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~Always Incuded Shader 尽量不要拖到这里面,要用变体收集器去做。Shader Striping 剔除设置,可以删除一些分支。如果有确定不用的,可以删除掉,避免别引用到。创建一个默认的unlitshader。点击Show,就会看到当前有的变体。会有4*3=12个,相乘关系。查看Inspector面板。原创 2023-08-20 16:14:33 · 68 阅读 · 0 评论 -
技术美术TA之Shader优化
AlphaTest 就是 clip函数,在ios和使用PowerVR GPU的Android设备上性能很低。本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~在移动端大部分都支持 half 和 float,很老的手机用fixed。如果顶点上的计算需要在模型的本地空间下进行,则需要开启,否则不要开启。尽量不要去用standard材质,会产生大量的变体,自己定制修改一个。多个Pass,会渲染多次,也不能进行合批。能不用就不用,是unity的中间层。原创 2023-08-20 14:55:44 · 280 阅读 · 0 评论 -
技术美术TA之光照空间
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~对于颜色的叠加,算出来的是成倍关系,但是人眼看到的不是,应该是更弱一点。在现实世界中,光的强度增加一倍,那么亮度也会增加一倍,这是线性关系。sRGB = Gamma0.45所在的空间(比实际颜色亮一些)前:对原始贴图进行 移除gamma校正后 再进行 shader。显示器输出颜色也是不成正比的,所以需要进行校正(把公式取反)显示器输出的姐过是线性的,人眼最后看到的是正常的。原创 2023-08-18 16:10:38 · 66 阅读 · 0 评论 -
技术美术TA之PBR
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~2012年,Disney Principled BRDF,用简单易懂的参数和高度完善的美术工作流程。是一种渲染方式,基于物理原理和微平面理论的光照模型,从现实中测量的参数准确的表示真实世界。Anisotropic:各向异性强度,控制镜面高光反射的横纵比,一般都是各向同性的。其中 f® 是当前点的入射方向到出射方向光的反射比例,为BxDF。光源入射方向与平面法线的夹角越大,反射越大,亮度越大。原创 2023-08-18 14:33:58 · 321 阅读 · 0 评论 -
技术美术TA之纹理全攻略
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~三线性过滤,双线性过滤基础上再加上对Mipmap远近级别过滤,采样8个纹素插值。双线性过滤,采样点周围采样4个纹素,加权平均(离得近的权重高)一个像素可能对应多个纹素,需要处理一下到底取哪个颜色。依次生成分辨率xy分别/2的一级一级的贴图。2.分级加载,减少不同配置下的内存。不过滤,只采样采样点最近的纹素。1.定点/片段着色器(读取)近处采用大图,远处采用小图。1.角色在远处,采样抖动。原创 2023-08-17 08:31:45 · 224 阅读 · 0 评论 -
技术美术TA之雾效
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~输出颜色 = lerp ( 雾颜色,物体颜色,雾效混合因子 )3.Exp2,指数(效果更好,计算量更大)Mode 之前介绍的三种,参数一样。1.Linear,线性。density:雾浓度。1.物体离视角的距离。start:开始距离。原创 2023-08-16 15:03:13 · 105 阅读 · 0 评论 -
技术美术TA之全局光照全攻略(GI)
Realtime Lighting:实时 GI (Realtime Global Illumination,标识是否开启)Mixed Lighting:烘焙GI (Baked Global Illumination,标识是否开启)(就是 Unity 内置的GI shader,拷贝出来的,方法前加 CUSTOM_ )(计算GI有延迟,不适合快速变化的灯光,适合昼夜变化缓慢变化的)既考虑来自光源的直接光照,又考虑经过场景中其他物体反射的光照。把光源对场景中静态物体的光照效果提前烘焙到一张张光照纹理。原创 2023-08-15 17:59:34 · 534 阅读 · 0 评论 -
技术美术TA之简单阴影实现
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~1.ShadowMap会发生自遮挡现象,即阴影失真。有没有一种简单的方法呢?原创 2023-08-14 00:10:35 · 106 阅读 · 0 评论 -
技术美术TA之内置阴影
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~2.绘制场景时,把当前片段转换到光源空间下,计算得到深度与采样ShadowMap中的深度值对比。1.在光源处添加一个相机,开启深度测试与写入,生成ShadowMap(深度图)ShadowMap:动态生成阴影纹理,需要时进行对其采样。ShadowMapping:常用的试试阴影生成方法。使用系统的方法需要开启unity设置。十分简单,都是unity封装好的。原创 2023-08-12 23:44:58 · 66 阅读 · 0 评论 -
技术美术TA之深度缓冲区
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~每个顶点的深度信息,在光栅化阶段会被差值,写入到深度缓冲区中。xyz是坐标,模型的z轴是由离相机的远近转换而来的。1.更新 ZWrite,默认是1,更新后越小越靠前。常用的效果如 XRay 就可以基于深度实现。深度值范围0-1,非线性(近处精度高)不透明物体一定是 ZWrite On。是否通过可设置,通过后才会渲染出来。默认是 LEqual(小于等于)2.测试 ZTest。原创 2023-08-11 22:12:13 · 80 阅读 · 0 评论 -
技术美术TA之光照模型
公式:Specular = SpecularColor * Ks * pow( max(0,dot(R,V), Shininess)本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~公式:Diffuse = Ambient + Kd * LightColor * dot(n, l)R:反射单位向量(和入射光对称相反的,公式:R = 2*dot(n,l)*n-l )Shininess:高光指数,模拟范围(自定义)L:顶点指向光源的单位向量(注意方向)原创 2023-08-10 19:31:49 · 162 阅读 · 0 评论 -
技术美术TA之渲染路径
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~(原课程链接渲染路径:为进行光照计算而设计的渲染方式。原创 2023-08-06 23:34:32 · 174 阅读 · 0 评论 -
技术美术TA之点和向量
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~方向有差异性,右手定则决定方向(不遵循交换律)几何意义:是a和b垂直的单位向量。结果就是:从起点到终点的新向量。几何意义:a 向 b 的投影。就相当于 a + (-b)模为1的向量称为单位向量。向量相加结果还是向量。向量和标量之间的计算。原创 2023-08-03 00:22:55 · 81 阅读 · 0 评论 -
技术美术TA之光学
研究从微波、红外线、可见光、紫外线直到X射线的宽广波段内,关于电磁波辐射的发生、传播、接收和显示以及跟物质相关作用的学科。本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~斯涅尔:解释了光的干涉与衍射,解释光的直线传播。费马:证明了光的反射定律与折射定律,费马定律。斯涅尔和笛卡尔:提出了折射的精准公式。爱因斯坦:解释光电效应,波粒二象性。欧几里得:光的直线传播与反射。托马斯杨:解释了光的干涉现象。牛顿:微粒流的理论解释光。1.物体表面是绝对光滑的。原创 2023-08-02 23:48:17 · 93 阅读 · 0 评论 -
技术美术TA之UI材质
如果把一块区域绘制为1,其他区域设置和1进行比较,选择到底是否绘制。存储的是像素的模板值,存储的是 8bit = 256 个值。1.Mask:模板测试 Stencil。模板缓冲区,帧缓存中的一个缓冲区。2.不采样,自己计算,代码如下。计算的位置,设置 a 值。UI流光效果如何实现?1.采样一张流光贴图。原创 2023-08-02 01:32:53 · 183 阅读 · 0 评论 -
技术美术TA之屏幕扭曲材质
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~1.使用 UNITY_VPOS_TYPE screenPos: VPOS。使用原屏幕uv 和 扰动贴图采样的UV 做 lerp。屏幕坐标不是屏幕分辨率坐标,是限制在 0-1 的。3.直接用引擎转换的 SV_POSITION。4.利用屏幕坐标对抓取的图片进行采样。归一化坐标 = 当前像素 / 总像素。2.抓取当前一帧的图片内容。(手机端比较耗费性能)5.采样扰动贴图做扭曲。2.自己计算齐次坐标。原创 2023-08-01 00:09:26 · 158 阅读 · 0 评论 -
技术美术TA之通用特效材质
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~小于2500的是不透明物体(从前往后渲染),大于2500是半透明物体(从后往前渲染)3000,Transparent,半透明物体,需要混合对象。4000,Overlay,叠加效果,最后渲染的东西放在这里。2450,AlphaTest,要么完全透明要么完全不透明。1000,Background,最先进行渲染。2000,Geometry,不透明物体渲染。作用:剔除不需要渲染的面。y = t(标准时间)原创 2023-07-31 01:29:18 · 167 阅读 · 0 评论 -
技术美术TA之缓冲区
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~2.双缓冲:片段着色器写入到后缓冲buffer中,再送到前缓冲buffer中,再刷新显示。(效率不高,当前帧没绘制完的时候会有拉扯,双缓冲可以等全部完毕后再交换到屏幕上)片断在写入帧缓冲之前会经历一系列的测试(Alpha测试、模板测试、深度测试)2.光栅扫描显示器:从左上角一行一行的绘制,返回左上角继续,这个流程位一帧。1.单缓冲:片断着色器写入到缓冲buffer中,直接刷新到显示器显示。原创 2023-07-28 01:26:25 · 123 阅读 · 0 评论 -
技术美术TA之Shader编程知识初学
Unity 中通过编写 shaderlab 来通过 OpenGL/DirectX 告诉显卡驱动需要做什么,然后显卡驱动再指挥 GPU 进行计算并输出到显示器上。2.表面着色器:Surface Shader,符合人的直觉,用不好会有冗余(最后也会编译成顶点片断着色器)本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~着色器,本质就是一段代码,告诉 GPU 如何去绘制模型每一个顶点的颜色以及最终像素的颜色。Shader Forge:不更新了。原创 2023-07-27 18:41:04 · 212 阅读 · 0 评论 -
技术美术TA之纹理采样
本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~2.UV坐标可以在光栅化阶段计算出来,通过UV的点查找贴图上面的纹素,(映射函数)1.根据顶点位置查找坐标的UV位置,是3d建模软件制作,(投影函数)_DisssolveTex,为噪声图,越黑越靠近0,越先被剔除。溶解效果可以做成变体,正常状态不需要,死亡时才展示溶解。Tiling:重复度,越大就越小,正常是1:1。负责物体长什么样,用极少的性能表现出好的效果。3.获取颜色值,返回给模型,(值变换函数)原创 2023-07-28 01:03:58 · 105 阅读 · 0 评论 -
渲染顺序
一个不透明或半透明物体的显示状态应该怎样确定?一般在画画的时候:首先将场景的多边形根据深度进行排序,然后按照顺序进行绘制但是如果有半透明的东西呢?他们之间相互混合,也十分复杂为了解决这些问题,计算机咋整呢?深度缓冲区(Depth Buffer)记录像素的深度信息,存储像素到摄像机的深度每一帧开始前,深度缓冲区都会被清空。当需要渲染新的像素时,像素的深度会预先被计算出来,比较这个像素的深度值与缓冲区中的值通过算法判断是否要通过该像素,或需要在深度缓冲区中写入该像素的深度在场景没有透明物体的原创 2021-03-01 13:16:17 · 177 阅读 · 0 评论 -
渲染原理
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~啥玩意是渲染?游戏图像的绘制被称为渲染啥玩意是渲染管线?表示绘制到游戏视图的过程中,一个模型文件的数据经过了哪些转换步骤通常指的是GPU流水线,不包含CPU部分CPU主要是准备好顶点、贴图、法线、灯光方向、颜色等东西之后,告诉GPUGPU接收到数据后,就要对其处理最终显示到屏幕上因为屏幕是2D画面,模型是3D资源,必然有一部操作,就是将3D转化为2D。这个操作之前被称为顶点阶段(几何阶段),主要是处理3D模型数据之后被称为片元阶段(原创 2021-03-01 13:15:40 · 398 阅读 · 0 评论 -
后处理之辉光效果
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~泛光和辉光不一样么?那是肯定的辉光(Glow):是全屏泛光的升级版本区别就是辉光要求场景内只有部分物体泛光,而不是全部泛光所以需要区分出忽略那些物体大体思路:1.用一个额外的摄像机给,在这个摄像机下,所有的非泛光物体都是黑色的,泛光物体保持原样2.再将这个结果渲染到一个 RT 上,对他进行模糊3.最后将模糊后的反光图叠加到主摄像机的渲染图像上创建一个 LightGeometry.shader默认的surface shader,原创 2021-03-01 13:15:06 · 923 阅读 · 0 评论 -
后处理之泛光效果
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~全屏泛光(Bloom)是一种在实际项目中常用的技术,模拟强光下的效果技术上并不复杂在模糊后的渲染结果基础上,再叠加原场景效果注意:虽然是全屏泛光,但在实现时还是要限制泛光区域,否则就会过亮一般的做法是通过阈值的颜色控制当颜色设置大于阈值的颜色,才被认为是有效颜色,而只有有效颜色才可以计入模糊的采样色中Shader "Custom/Bloom"{ Properties { _MainTex ("Te原创 2021-03-01 13:14:29 · 399 阅读 · 0 评论 -
2021-03-01
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~模糊原理:当颜色的边缘不清楚时,就会呈现出模糊效果核心就是:如何处理当前颜色受周围颜色的影响最简单的就是:均值模糊均值采样周围的像素值与原值混合,这样自身的色值就不那么突出了,从而达到模糊的效果实现原理:用两层 for 循环分别取得一个方形区域的点,算出这些颜色的平均值(这个过程叫做:卷积)代码如下:Shader "Custom/Blur"{ Properties { _MainTex ("Te原创 2021-03-01 13:13:53 · 91 阅读 · 0 评论 -
什么是后处理效果?
这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~后处理是啥?后处理(Post-Process Effect)是一种对渲染之后的画面进行再加工的技术针对每一个摄像机,在绘制到用户窗口之前,都有机会对整个画面进行二次夹工,再将装饰后的画面呈现给用户后处理能方便地制作全局效果,也会带来性能消耗通常覆盖全场景的想过,都会在摄像机上想办法实现改变画面风格,通常使用后处理技术来实现将摄像机照射出的内容渲染到一张图中,就是 RT(RenderTexture,渲染图)将摄像机内容绘制到渲染图的过程被原创 2021-03-01 13:13:14 · 3379 阅读 · 0 评论 -
文字是怎么渲染出来的
推荐俩文章字体是如何存储的文字的形状是如何表示的unity UGUI创建字体和图:图和字体都是两个三角面都是填充UV猜测:应该是字体会弄成一个xx字体大小的图集,然后可以算出每个字符的不同轮廓点的位置然后贝塞尔三阶曲线算出轮廓在进行颜色填充所以如果掉血HUD想优化的画,就自定义mesh信息,一次性把静态和动态的分批都画出来有待研究。。...原创 2021-03-01 13:12:37 · 242 阅读 · 0 评论