
Shader进阶
文章平均质量分 81
进阶只是说个好听的,其实就是第二次单独了解一些东西,弄明白一些比较模糊的地方,虽然不是完全弄懂,但算是个开头吧。
两水先木示
有时候,你不知不觉就完成了一个BUG!
展开
-
【Unity3D】远处的物体会闪烁问题(深度冲突) Reversed-Z
因为深度值是浮点类型float32,其浮点数记录无法保证精确度的,它仅有23个二进制有效位保存数据,8位是指数位,1位是符号位,其中23位只是小数有效位,若只谈纯整数它有24位有效位,2^24代表16777216个整数,例如:1.1111111....111 小数点后面是23个1,指数是2^23,那么就会得到 11111111...1111 (24个1)的二进制数,这个最前面的1是默认存在的(IEEE754规范)例如,左图Y轴[80,100]范围,其红色点密集,代表深度大的物体能准确表达深度;原创 2025-01-17 01:48:18 · 785 阅读 · 0 评论 -
【Unity3D】UGUI Canvas画布渲染流程
Canvas组件:画布组件是进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加了画布组件的游戏对象的子对象。优化UI合批:Image图片合批;文本和图片相交、排序对合批的影响;Mask对合批的影响;Canvas对合批的影响。原创 2025-01-03 18:31:29 · 920 阅读 · 0 评论 -
GAMES202 作业4 笔记
Emu_ISEavg_ISEmu_MCEavg和Emu都是计算BRDF项fms所需的参数,上面四幅图则是输出。其中_MC和_IS区别是噪声程度,注意IS是反转过后的图像,IS会经历一个重要性采样使得噪声变少。上面的一排是Kulla-Conty BRDF近似模型的,下面是Microfacet BRDF模型的。可见近似解决了因BRDF忽略微表面反射多次的能量,导致能量损失变暗的问题。...原创 2022-01-24 19:13:07 · 739 阅读 · 0 评论 -
【Unity】2019 UDRP 7.3 CustomPass 物体描边效果
右键创建空物体,添加Custom Pass Volume,添加1个DrawRenderersCustomPass紧接着创建材质球和着色器,赋值到Material上。Shader "Renderers/FirstRenderersCustomPass"{ Properties { _Color("Color", Color) = (1,1,1,1) _ColorMap("ColorMap", 2D) = "white" {} ...原创 2022-01-10 22:37:04 · 2266 阅读 · 1 评论 -
【Unity】2019 HDRP 7.3 CustomPass 高斯模糊
Unity2019 4.25f1 HDRP项目 屏幕后处理 高斯模糊 CustomPass 毛玻璃效果原创 2022-01-10 16:05:54 · 2865 阅读 · 0 评论 -
【Shader入土】Stencil模板测试
目录一、介绍模板测试① Ref referenceValue ② ReadMask readMask③ WriteMask writeMask④ Comp comparisonFunction⑤ PassstencilOperation⑥ FailstencilOperation⑦ ZFail stencilOperation二、实战测试2.1 官方实战2.2 关于ReadMask和WriteMask的测试一、介绍模板测试1、模板测试是在......原创 2020-05-16 00:34:33 · 1776 阅读 · 1 评论 -
【Shader入土】顶点渲染路径Vertex Lit
顶点点亮渲染路径详细信息“顶点点亮”路径通常一次渲染每个对象,并使用为每个顶点计算的所有光源的光照。这是最快的渲染路径,并且具有最广泛的硬件支持。由于所有照明都是在顶点级别计算的,因此此渲染路径不支持大多数每个像素的效果:不支持阴影,法线贴图,光cookie和高度详细的镜面高光。UnityCG.cginc相关内置变量:1、float4 _WorldSpaceLig...原创 2020-05-01 12:36:57 · 1091 阅读 · 0 评论 -
【Shader入土】延迟渲染路径Deferred Lighting
目录延迟着色渲染路径总览要求性能考量实施细节G-缓冲区通过照明通行证延迟着色渲染路径(Unity 2017.2)总览使用延迟着色时,可以影响GameObject的灯光数量没有限制。所有光源均为逐像素光源进行评估,这意味着它们都可以与法线贴图等正确交互。此外,所有光源都可以包含Cookie和阴影。优点:照明的处理开销与光照射的像素数量成正比。这...原创 2020-05-01 00:48:47 · 1340 阅读 · 0 评论 -
【Shader入土】Light光源的Bias
Light.shadowBiaspublic floatshadowBias;DescriptionShadow mapping constant bias.Shadow caster surfaces are pushed by this world-space amount away from the light, to help prevent self-shadowin...原创 2020-04-26 21:01:10 · 1602 阅读 · 0 评论 -
【Shader进阶】Pass块的Tags标签——LightMode之ShadowCaster
一、效果图和ShaderShader "Unlit/ShadowCasterTest"{ Properties { _MainTex("Texture", 2D) = "white" {} _Color("Color", Color) = (1,1,1,1) } SubShader { Tags { "RenderType" = "Opaque" } LOD...原创 2020-04-25 00:56:20 · 2906 阅读 · 3 评论 -
【Shader进阶】Pass块的Tags标签——LightMode之ForwardAdd
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'Shader "Unlit/ForwardAdd"{ Properties { _MainTex("Texture", 2D) = "white" {} _DiffuseCol("DiffuseCol", Color) = (1,1,...原创 2020-04-19 12:52:10 · 1639 阅读 · 0 评论 -
【Shader进阶】Pass块的Tags标签——LightMode之ForwardBase
Shader "Unlit/ForwardBase"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { Tags{ "LightMode" = "ForwardBase" ...原创 2020-04-19 00:56:44 · 4957 阅读 · 1 评论 -
【Shader进阶】Shader的Lod
目录官方说明Shader Level of Detail(简称Lod)中文版说明着色器细节级别一、实战编辑器功能,快速创建CubeMap官方说明Shader Level of Detail(简称Lod)Shader Level of Detail (LOD) works by only using shaders or subshaders that have ...原创 2020-04-17 23:37:35 · 2829 阅读 · 0 评论 -
【Shader进阶】常见的渲染状态RenderSetup——ZTest&ZWrite
上图为深度测试GEqual大于等于的情况,也就是深度越大显示在最前面,上图的箱子深度都比白色方块要大,所以箱子即使看起来被挡住,但恰好满足深度测试,所以渲染出来。Shader "Unlit/ZWriteShaderTest"{ Properties { _MainTex("Texture", 2D) = "white" {} } SubShader { ZWrite ...原创 2020-04-17 01:59:16 · 553 阅读 · 0 评论 -
【Shader进阶】常见的渲染状态RenderSetup——Blend
一、BlendOp混合操作混合操作Add 将混合后的源颜色和混合后的目标颜色相加。默认的混合操作。使用的混合等式是:O(rgb) = SrcFactor * S(rgb) + DstFactor * D(rgb)O(a) = SrcFactorA * S(a) + DstFactorA * D(a)Sub 用混合后的源颜色值减去混合后的目标颜色。使用的混合等式是:...原创 2020-04-17 00:41:37 · 1463 阅读 · 0 评论 -
【Shader进阶】常见的渲染状态RenderSetup——Cull
Shader "Unlit/CullShaderTest"{ Properties { _MainTex("Texture", 2D) = "white" {} } SubShader { Cull Off Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #inc...原创 2020-04-16 23:47:51 · 1396 阅读 · 0 评论 -
【Shader进阶】Unity自带的Shader模板——StandardSurfaceShader
效果图Shader "Custom/StandardSurfaceShader" { Properties { _Color ("Color", Color) = (1,1,1,1) //颜色 _MainTex ("Albedo (RGB)", 2D) = "white" {} //主纹理 _Glossiness ("Smoothness...原创 2020-04-14 22:59:04 · 2074 阅读 · 0 评论 -
【Shader进阶】Unity自带的Shader模板——UnlitShader
效果图不包含光照(但包含雾效)的基本顶点/片元着色器原理:对主纹理采样出颜色值,并根据雾气模式选择相应的算法得出最终颜色值。代码有详细的注解(具体请参考UnityCG.cginc)//不包含光照(但包含雾效)的基本顶点/片元着色器Shader "Unlit/UnlitShader"{ Properties { _MainTex ("Texture", 2D)...原创 2020-04-14 00:35:26 · 1758 阅读 · 0 评论 -
【Shader进阶】Unity自带的Shader模板——ImageEffectShader
效果图Shader代码:关闭裁剪、深度写入,开启深度测试,在片元着色器进行采样主纹理图颜色值并反转输出。//屏幕后处理效果的基本模板: 无裁剪、关闭深入写入、最简单的顶点着色器和片元着色器Shader "Hidden/ImageEffectShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} //主纹理...原创 2020-04-13 22:42:30 · 2255 阅读 · 0 评论 -
【Shader进阶】SubShader块标签Tags——IgnoreProjector
目录一、创建空物体,挂载Projector,并赋值Material(作用:将Projector范围内的物体材质替换为Projector的Material)二、我们的主角(带有忽略Projector影响属性的物体,我把它弄得比较漂亮一点)三、问题上图Projector组件挂载于空物体上,拖拽一个材质球给它,注意材质球是有条件的,我会贴材质球相关的Shader一、创建空物体,挂载...原创 2020-04-11 21:12:51 · 3356 阅读 · 0 评论 -
【Shader进阶】SubShader块标签Tags——CanUseSpriteAtlas
官网原文解释:CanUseSpriteAtlas tagSetCanUseSpriteAtlastag to “False” if the shader is meant for sprites, and will not work when they are packed into atlases (seeSprite Packer).翻译:CanUseSpriteAtl...原创 2020-04-10 23:37:05 · 1276 阅读 · 0 评论 -
【Shader进阶】SubShader块标签Tags——DisableBatching
正常图(DisableBatching为True时,即使两个物体本来是应该静态合批的,但此时由于此DisableBatching为True,从而两个物体无法进行合批,下方会有截图FrameDebugger的渲染情况)不正常(顶点位置被改动了,但是DisableBatching为False)默认为False即允许合批,会导致顶点位置改动不正常现象(波动明显变快了,由于顶点位置异常导致!异常原...原创 2020-04-08 23:37:22 · 1645 阅读 · 0 评论 -
【Shader进阶】SubShader块标签Tags——ForceNoShadowCasting属性和阴影投射ShadowCaster
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'Shader "Unlit/SubShaderTagsTest"{ Properties { _MainTex("Texture", 2D) = "white" {} _Color("Color", Color) = (1,0,0,1)...原创 2020-04-08 00:24:13 · 639 阅读 · 0 评论 -
【Shader进阶】SubShader块标签Tags——RenderType
目录目的:理解RenderType的作用 ,当初学习《Shader入门精要》时写有如下总结使用替换的着色器渲染(官方解释)一、 Camera.SetReplacementShader实战二、Camera.SetReplacementShader总结三、Camera.RenderWithShader实战四、Camera.RenderWithShader总结目的:理解Ren...原创 2020-03-30 00:48:53 · 2145 阅读 · 0 评论 -
【Unity】Shader编辑器扩展
目录一、Shader编辑器扩展——简单介绍1.1、利用ShaderGUI派生类来重新绘制Shader的Inspector窗口1.2、利用MaterialPropertyDrawers,即加标签形式扩展二、介绍Shader编辑器扩展的标签形式——方便好用一、Shader编辑器扩展——简单介绍1.1、利用ShaderGUI派生类来重新绘制Shader的Inspector窗口...原创 2020-03-19 20:22:41 · 1840 阅读 · 0 评论 -
【Unity】渲染顺序
版本:Unity2017 1.1f1一、Shader决定的3D物体渲染顺序1.1、同材质的不透明物体,离摄像机正面越近越先渲染(从前往后),否则越晚渲染;打开Frame Debug窗口(帧调试器)可看到RenderForward.RenderLoopJob项下,有7个Draw Mesh命令项;(从上至下执行)(摄像机在最左边)先渲染N1,再渲染N2,说明同材质的不透明物体是从近...原创 2019-11-22 23:36:01 · 4132 阅读 · 0 评论