- 博客(157)
- 收藏
- 关注
原创 自由学习记录(85)
本文介绍了Unity Shader的编译流程与调试技巧,重点分析了着色器变体、顶点通道绑定和深度纹理生成原理。内容涵盖:1)Unity将HLSL源码编译为目标平台代码的过程,包括变体处理、平台转换和反汇编查看;2)深度纹理(_CameraDepthTexture)的生成机制,需通过ShadowCaster Pass渲染不透明物体;3)粒子系统参数设置对发射效果的影响;4)屏幕后处理实现方法,包括Blit、CommandBuffer和URP的RendererFeature;5)几何着色器在阶段间传递数据的规则
2025-08-17 18:36:57
400
原创 自由学习记录(84)
本文摘要: URPShader兼容性:同一Shader可包含Forward和Deferred两个Pass(UniversalForward/UniversalGBuffer),分别处理不同渲染路径。ForwardPass直接计算光照输出颜色,GBufferPass输出材质属性到多张G-Buffer。 RenderGraph工作机制:分为Record(声明资源依赖)、Compile(优化排序)、Execute(执行)三阶段。需在Record阶段获取活动纹理句柄(activeColorTexture),通过Us
2025-08-14 20:54:41
1026
原创 自由学习记录(83)
本文介绍了Unity中序列化和自定义渲染相关的核心概念。在序列化方面,通过[System.Serializable]标记结构体,结合[SerializeField]属性,可将自定义数据结构暴露在Inspector面板中进行编辑。在渲染管线方面,详细讲解了URP中ScriptableRenderPass的实现步骤,包括创建子类、配置参数、设置RenderPassEvent执行时机等关键环节。文章还分析了RenderObjectsRendererFeature的使用方法,包括过滤设置、材质覆盖、深度/模板缓冲控
2025-08-13 15:26:48
885
原创 自由学习记录(82)
文章摘要: 本文详细介绍了Bitonic排序算法的实现,包括其递归分治结构、位元合并操作以及数组补齐处理。算法通过将输入数组补全为2的幂次长度,执行递归排序和合并操作,最后裁切结果。文章还探讨了GPU动画烘焙技术,将骨骼动画预计算为顶点序列缓冲区,实现实例化共享动画数据。同时介绍了力场影响器系统,通过ComputeBuffer传递位置/力参数来操控群体行为,并提供了性能优化建议,如内存对齐、缓冲区管理和渲染时序控制。在渲染管线部分,对比了VFX Graph与传统粒子系统的差异,阐述了URP中自定义渲染通道的
2025-08-13 02:05:57
1041
原创 自由学习记录(81)
本文介绍了基于ComputeShader的Boid群体行为模拟实现,主要包含两个核心计算内核:1. 测距定位内核:通过计算每个Boid与4个固定基站的距离,生成4维"距离指纹"作为邻居快速筛选依据。2. 运动更新内核:实现了群体行为三法则(分离/对齐/聚合),结合目标点引导和速度噪声扰动,采用指数平滑更新Boid方向和位置。文章重点分析了GPU并行计算的优化技巧:1) 使用距离指纹预筛选减少无效计算;2) 双调排序优化邻居查找;3) 线程发散控制与内存访问优化。同时指出了关键实现细节:越
2025-08-11 20:57:43
857
原创 自由学习记录(80)
文章摘要: 本文详细介绍了Unity中3D变换与渲染的核心技术。重点讲解了矩阵变换的两种实现方式:MultiplyPoint支持完整4×4变换(包括投影),而MultiplyPoint3x4则优化了常规3D变换。文章深入探讨了齐次坐标的原理及其在统一处理旋转、缩放和平移中的作用。在Shader编程方面,阐述了顶点着色器中坐标系转换的流程,包括从模型空间到世界空间的变换方法,并提供了父物体空间变换的实现示例。对于PBR渲染,文章分析了金属度(Metallic)概念的物理意义和工作流程优势。最后,详细介绍了Co
2025-08-11 11:34:50
806
原创 鱼的游动+Compute Shader
摘要:本文介绍了一种基于顶点着色的鱼类游动动画实现方法。通过计算着色器处理鱼群运动数据,在顶点着色器中实现各顶点围绕鱼颈的差异化旋转。关键技术包括:1)基于距离的顶点旋转权重插值(lerp),使鱼尾摆动幅度大于头部;2)引入正弦函数对旋转角度进行波动处理,并添加顶点位置相关的相位差,形成波浪式运动;3)利用unity_InstanceID为鱼群个体添加运动差异;4)通过ComputeBuffer实现大批量实例化渲染。该方法在保持单个鱼类顶点运动协调性的同时,实现了鱼群运动的自然多样性。
2025-08-10 23:30:19
889
原创 自由学习记录(79)
本文深入探讨了PBR/BRDF原理及其在Unity中的实现,重点解析了微表面模型、Cook-Torrance光照模型和GPU计算着色器的应用。内容涵盖:1)微表面理论中法线分布函数(D)、菲涅尔项(F)和几何遮蔽项(G)的作用;2)Unity实现PBR时半角向量(H)的计算优化;3)Compute Shader的线程组织与内存管理技巧;4)GPU实例化渲染(DrawMeshInstancedIndirect)的技术细节,包括参数缓冲区、包围盒剔除和MaterialPropertyBlock的使用;5)矩阵变
2025-08-09 00:00:19
759
原创 自由学习记录(78)
本文摘要围绕ECS架构、GPU计算优化和Unity渲染技术展开。ECS采用实体-组件-系统模式,优化数据处理和多线程性能。DOTS工具链与VFXGraph结合,通过GPU缓冲区实现高效粒子交互。Unity采用Compute Shader进行GPU级剔除和噪声计算优化,支持实例化渲染提升性能。文章详细解析了Compute Shader的线程调度机制,强调线程组大小对性能的影响。还介绍了Unity不同渲染管线(Built-in/URP/HDRP)的BRDF实现差异,以及PBR光照模型的技术演进。最后涉及音频视频
2025-08-07 14:35:48
870
原创 自由学习记录(77)
本文探讨了Unity粒子系统与Shader开发中的关键技术点,重点分析了几何着色器(Geometry Shader)的作用原理、纹理采样梯度计算机制,以及VFX Graph与Shader Graph的集成应用。文章详细解释了Fragment Shader如何接收光栅化后的插值属性,并对比了tex2D与tex2Dlod在顶点/几何着色器中的使用差异。同时探讨了Unity粒子系统的三大核心阶段(发射、模拟、渲染)和VFX Graph的GPU并行处理优势,包括其与ECS/DOTS架构的集成能力。此外,文章还涉及G
2025-08-05 11:54:47
658
原创 自由学习记录(76)
游戏输入与渲染分离机制及GPU粒子系统实现 在游戏开发中,CPU和GPU的分工明确。即使GPU渲染严重延迟(如王者荣耀中1FPS的情况),CPU仍能正常接收和处理玩家输入,只是视觉反馈会延迟。这种分离机制得益于: 操作系统层级的输入系统 Unity/引擎的输入处理(Update阶段轮询) 逻辑处理(角色移动、技能释放)独立于GPU 对于GPU粒子系统实现,核心技术包括: 使用ComputeShader管理粒子数据 创建粒子池结构体(与HLSL对齐) 通过ComputeBuffer在CPU和GPU间传输数据
2025-08-03 13:17:57
1024
原创 广告牌+序列帧的Shader效果
本文摘要:探讨Unity中序列帧动画和广告牌技术的实现方法。序列帧动画部分包括图片资源获取、Alpha测试处理(对比传统AlphaTest与现代discard方法)、UV坐标计算等实现细节;广告牌技术重点解析了基于视角方向的顶点变换矩阵构建、局部坐标系转换原理及实现代码。文章还分析了两种技术结合时可能出现的问题(如背面剔除异常)及解决方案,并提供了透明度裁剪和颜色混合的shader代码示例。最后提及在Unity商店寻找第三人称控制器资源来完善游戏开发。
2025-08-02 17:13:48
1022
原创 自由学习记录(75)
本文摘要: 本文系统性地探讨了计算机图形学中多个关键技术点,包括边缘检测算法(Sobel算子)、模糊处理(高斯核)、半透明渲染技术(OIT)、渲染纹理(RenderTexture)优化等。重点分析了RenderTexture在GPU渲染中的核心作用及其性能优化策略,指出不当的创建/释放机制会导致严重的性能问题。文章还涉及着色器编程技巧、ACM论文分类体系、非真实感渲染(NPR)技术实现,以及Unity引擎中材质与渲染管线的深度应用。通过技术原理分析、性能优化建议和实际应用场景的阐述,为图形程序员和TA提供了
2025-08-01 16:18:01
1051
原创 自由学习记录(74)
摘要: ComputeGrabScreenPos与ComputeScreenPos不可互换,前者专为GrabPass处理平台差异和UV翻转,后者用于一般屏幕采样。屏幕空间坐标系分为像素坐标(如鼠标位置)和Shader内部坐标(需透视除法归一化)。高斯模糊利用核可分性,通过垂直+水平两次一维卷积实现高效二维模糊(5采样点近似)。后处理基类封装资源检查,OnRenderImage在渲染结束后调用,双Pass模糊需临时RT和Bilinear滤波优化效果。程序纹理通过算法生成(如圆形图案),需Apply()提交数据
2025-07-27 22:46:20
991
原创 自由学习记录(73)
本文摘要(150字): 文章系统讲解了Unity渲染技术与Shader编程的核心要点。重点对比了前向渲染与延迟渲染的差异,详细解析了URP管线下动态切换渲染方式的实现方法。深入探讨了多光源处理机制,包括顶点光与像素光的区分、Pass配置对光照计算的影响,以及Shader中光照数据的传递方式。同时涵盖了骨骼动画导入优化、阴影映射技术对比、屏幕空间渲染坐标转换原理等进阶内容。通过代码示例展示了如何在单Pass中实现多光源计算,分析了ClipSpace到屏幕空间的坐标变换过程,为技术美术和Shader开发提供了实
2025-07-25 21:59:42
813
原创 自由学习记录(72)
摘要:文章深入解析Unity URP渲染管线的核心机制,包括Shader编写、光照获取、RendererFeature使用等关键技术点。重点对比了Built-in与URP管线在延迟渲染实现上的差异:URP允许自定义GBuffer格式和光照计算,而Built-in管线则采用固定结构。文章详细介绍了URP中ShaderPass匹配规则、GBuffer输出规范,以及如何通过ScriptableRenderContext控制渲染流程。同时提供了从官方文档到示例工程的系统性学习路径,帮助开发者掌握URP的核心渲染架构
2025-07-23 16:12:26
821
原创 自由学习记录(71)
本文主要介绍了Blender中动画和骨骼系统的核心概念: 关键帧动画通过灰色水平线表示恒定值属性,Action记录绝对数值而非变化量; NLA编辑器用于拼接/混合动作片段,通过轨道和条带组织动画; 骨骼绑定基础包括顶点组匹配、姿态模式与静置位置的区别; Auto-RigPro骨骼系统特点及其与原生Rigify的区别; 数据块引用机制和动画复用规则,强调命名一致性对动画移植的重要性; 相机镜头选择对透视效果的影响,以及可关键帧控制的动画参数类型。 文中还涉及修改器工作原理、Blender与Unity渲染管线差
2025-07-22 11:35:42
974
原创 自由学习记录(69)
这篇文章主要探讨了坐标系转换与游戏引擎开发的多个技术要点。核心内容包括:1)RectToPolar函数实现直角坐标到极坐标的转换原理,强调极坐标贴图的特殊设计;2)Shader编程技巧,包括顶点色控制、UV采样、法线贴图处理等;3)游戏引擎架构解析,涉及资源管理、多线程渲染、内存优化策略;4)3D建模技术,如网格切割、顶点动画、拓扑结构优化等。文章还穿插了Blender等工具的操作技巧,展现了游戏开发中图形编程与引擎设计的紧密联系,强调实用性与性能优化的重要性。
2025-07-15 18:12:33
901
原创 自由学习记录(68)
文章摘要:本文探讨了Blender键位设计理念(直接映射操作行为而非语义缩写)、Alpha混合技术(Cutout与Blend的区别及应用场景)、颜色预乘原理(避免边缘污染与提高性能)、GitHub协作机制(PR创建与环境设置),以及Shader开发中的关键问题(UV扰动、浮点精度、投影矩阵等)。技术要点包括:Blender弃用M/T键的历史原因,特效制作中预乘alpha的重要性,Git分支管理策略,以及如何通过frac()解决UV越界问题。最后解析了GrabPass与屏幕空间渲染的技术细节,强调了透视除法在
2025-07-11 21:03:12
665
原创 庄懂的水特效AP01/L16/Water
摘要:文章讨论了通过停止XY移动参数来调整纹理扰动效果。主要分析了noise扰动对UV贴图的影响,特别是通过warp扰动图建立独立采样坐标系(uv1和uv2)的过程。详细解释了采样坐标变换公式,说明如何通过不同密度和移速参数(_Warp1Params和_Warp2Params)产生随机变化。最后强调像素处理独立性,指出采样图坐标系、自定义参数与像素显示的分离关系,所有变化都在各自sampleTex中独立处理后才影响最终像素输出。
2025-07-10 20:21:59
276
原创 庄懂的火焰特效AP01/L16/Fire
本文探讨了像素显示中噪声处理与颜色融合的技术方案。通过两套噪声系统的叠加(第一套噪声保持稳定,第二套噪声可调节大小),实现了噪声的不互相干扰的叠加效果。系统采用alpha通道控制显示范围(alpha为0时颜色不参与融合),并通过扰动遮罩(b图)来选择性屏蔽噪声影响,其中蓝色区域(值为1)受噪声影响,黑色区域(值为0)保持原UV采样。整个方案通过融合技术统一处理了两种显示范围需求,最终输出颜色和alpha值。
2025-07-10 09:11:28
139
原创 shader中blend相关
本文介绍了Unity中透明效果和BlendMode的运用技巧。重点讲解了如何通过Blend命令控制RGB和Alpha通道的混合方式,实现不同的透明效果。例如使用Blend SrcAlpha OneMinusSrcAlpha实现标准透明混合,或通过单独设置Alpha通道(如One Zero)来保持Shader输出的原始Alpha值。文章还提到合批优化、pre-z技术,以及粒子特效、UI渐变等不同场景下的混合模式选择建议,并解释了如何通过Tags和Blend组合来控制渲染队列和透明度效果。
2025-07-08 15:09:26
408
原创 自由学习记录(67)
本文探讨了Shader变体管理的五大核心方向,包括关键词系统、变体数量增长来源、Unity编译打包行为、运行时表现及优化手段。同时深入解析了3D渲染技术中的关键概念,如切线空间法线贴图、MatCap材质、Fresnel反射效应等。文章还对比了ZBrush与Substance Painter的工作流程,分析了原神等游戏中的Lightmap应用,并提供了Blender与Unity协同工作的实用技巧。从PBS渲染原理到角色皮肤SSS模拟,涵盖了Shader开发、模型处理、材质优化等计算机图形学核心内容,为实时渲染
2025-07-06 20:45:32
1016
原创 删除RarExt.dll显示正在运行,但是任务管理器里找不到的解决办法(不用重启电脑)
摘要:针对无法删除被资源管理器占用的.dll文件问题,文章提出了简便解决方法:首先修改.dll文件后缀名,然后通过任务管理器重启explorer进程。系统重启资源管理器时会尝试加载被修改后缀的.dll文件,因后缀名被破坏而放弃打开,此时即可顺利删除原文件。该方法适用于处理流氓软件的顽固.dll文件删除问题。
2025-07-04 11:00:30
254
原创 自由学习记录(66)
ray.x是 Ray-MMD 的空间参考锚点,你必须在场景中加载它,不然模型可能发黑或光照混乱。是 Ray-MMD 渲染参数的“面板入口”,你通过它实时调光、开关效果,体验完整的场景控制。import绝对路径。
2025-07-01 23:19:21
1076
原创 自由学习记录(64)
它是 Python 解释器的一部分,用来执行编译后的字节码(.pyc 文件),而不是直接执行你写的.py源代码。你可以理解为它是一个在你电脑里运行的“软件 CPU”:它不关心你原本写的代码是print()还是for它只管一条一条“指令式”的字节码就像真的 CPU 执行机器指令一样,它执行的是 Python 字节码指令xxxxxxxprint(obj.reveal()) # ✅ 正常访问私有变量通过方法print(obj.__secret) # ❌ 会报错:AttributeErrorxxx。
2025-06-30 23:56:33
758
原创 computer networks(TE)
14.计算机网络有哪些常用的性能指标?答:速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率。
2025-06-27 10:01:18
719
原创 Introduction to Software Engineering(TE)
方法模型活动顺序是否固定是否强调建模特点说明瀑布模型✅ 固定顺序✅ 严格建模适合需求稳定、流程清晰的项目统一过程(RUP)✅ 分阶段进行✅ 全建模面向对象项目的标准流程,强调文档与模型敏捷开发❌ 不固定,可回退⭕ 建模灵活强调快速交付,建模最小化原型法❌ 反复迭代验证⭕ 部分建模快速做出初版原型,边试边改分析建模是软件开发中需求分析阶段的重要组成部分,其核心目的是:把模糊的用户需求,结构化、形式化地表达出来,为后续设计和实现做好准备。至少一个输入数据流。
2025-06-25 21:35:17
819
原创 principles of computer organization(TE)
物理地址本身不随意变化,它是地址计算的结果但程序中可以通过改段地址、偏移地址、修改栈指针等方式改变访问位置所以你可以理解为“程序控制下,物理地址是可变的”,但它不是“自己变”的这种现象叫做段重叠(Segment Overlapping),是实模式寻址的一种典型特征,也是为什么我们说实模式下的“逻辑地址”不是唯一定位方式,物理地址才是最终访问内存的依据。实模式下段地址可以变化是的,这是默认的做法,属于低地址存低字节(Little Endian)
2025-06-23 17:44:43
1015
原创 自由学习记录(63)
在移动 GPU 上,使用 half 或 fixed 可以减少寄存器压力、提高并行度。在 Pixel Shader 中使用 fixed 做颜色计算可以节省资源。GPU 内部的向量化 SIMD 单元更适合处理中低精度数据。→ 所以手动标记可以让你显式告诉编译器:这个变量不需要高精度,编译器可以帮你优化。如果你在高精度 float 上做了大量运算,再赋值给一个低精度 fixed,可能造成明显的精度丢失(颜色值断层、光照闪烁等)。所以手动标记数据类型,能让你显式暴露这种意图,并对精度损失行为负责
2025-06-20 13:25:40
890
原创 UE Learning Record
把引擎默认的衍生数据缓存(DerivedDataCache)目录,从系统层面的全局路径,改成项目本身目录下的缓存,从而保证每个项目拥有独立的缓存文件,避免不同项目之间互相干扰,也方便打包和团队协作时保持一致。换句话说:VSCode“运行 Python”只是利用它自带的“终端+命令行自动补全”+“Python 插件”去调用你本地安装的 Python 解释器,真正执行 Python 代码的还是那个独立的。DCC的范围包括二维/三维动画、音频/视频编辑合成、DVD创作、动态/互动内容创作、图像编辑等。
2025-06-05 22:42:48
938
原创 JSP、HTML和Tomcat
乘法表的实现分清楚哪些是可以自定义名字的,哪些是规定的语法这里进行循环lalala是自己定义的名字但head里的style里的设置也因此要修改符合了🚫 否则每个<span>到边界时会自动换行,排版会乱<span>1×1=19×9=81。
2025-06-02 16:07:35
1205
原创 DDC Learning Record(2)
UV Texture / UV Flatten / UV Unwrap 是:把“每一块面”变得合理;而 UV Layout 是:把“所有面”整体布局到图像资源空间内。“既然各个软件排布规则不同,UV图模板也可能不同,那行业共同的 UV 标准是否就能解决这个不一致?
2025-06-02 15:50:53
709
原创 Houdini Learning Record
模型文件本身(如 .abc, .fbx, .obj)是一个底层的数据容器,用于描述一个 3D 对象在某一格式下的“原始结构”;各个 3D 软件(如 Houdini、Blender、Maya)在导入后,会解析并转化为各自内部的模型数据结构,进行操作;如果修改后再次导出,会被“重新打包回原格式的结构规则中”。农场“最终交付”的其实就是一个完整的帧序列(图片)你可以:放入 After Effects 做合成放入 Premiere 做剪辑用 ffmpeg 转码成 .mp4把 .hip 丢进农
2025-05-28 21:04:29
986
原创 自由学习记录(62)
用这个pass的时候尽量 记住这个名字,不要别的shader里又重新拿一遍浪费性能是 Unity 中用于处理屏幕空间纹理采样(如 GrabPass)时的标准写法。它的作用是将当前顶点的位置转换为用于从屏幕图像中采样的 UV 坐标,并**自动补偿透视除法(Perspective Divide)**的问题。
2025-05-26 12:23:24
357
原创 自由学习记录(61)
Unity 在进行光照贴图、全局光照(GI)烘焙、环境探针、反射探针计算时,不使用 ForwardBase / Deferred。它会在烘焙阶段,单独执行所有 Shader 中标记了的 Pass。Unity 把每个材质的 Meta Pass 渲染到一张特殊纹理上,用来分析:AlbedoEmissionTransparency(部分 GI 系统也采样 alpha)Shader Model 是由 GPU 驱动程序定义的一套功能等级规范,决定了:可使用的纹理数量指令数量上限。
2025-05-18 08:29:12
751
原创 自由学习记录(60)
✅ 可以写任何字符串,比如RenderType⚠️ 但 Unity 内部功能(比如图像效果或脚本中通过查找)只识别内建字符串。如果你用 URP/HDRP,Shader Stripping 和 SRP Batching 也可能依赖内建值。multi_compile shader keyword 集合这些不是你自己声明的自定义 keywords,而是Unity 自己预定义的一些 keyword 集合宏,本质是一个宏展开它会在编译时展开为多个的 keyword 组合。
2025-05-14 15:06:55
833
原创 自由学习记录(59)
VBO 是显卡上的一块连续显存,用来存储每个顶点所需的数据,包括位置、法线、UV、颜色等等。它相当于一张“表格”,每一行是一个顶点,每一列是一个属性字段。不,你在appdata中写的字段顺序不会影响 VBO 的数据排列。Unity 引擎内部的约定布局,而不是你 Shader 中结构体的顺序。Shader 中的语义标签(如POSITIONNORMALTEXCOORD0才是匹配关键,它告诉 GPU:“我这个字段要绑定哪个通道/位置的数据”。
2025-05-09 12:14:02
1093
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人