Unity URP模板遮罩实战:从原理到传送门效果实现
1. 项目概述从“遮罩”到“传送门”的视觉魔法在Unity URP项目中想要实现一个酷炫的传送门效果或者让一个物体只在特定区域比如一个魔法阵、一个屏幕内的画框内显示模板遮罩Stencil Buffer技术几乎是绕不开的核心。这听起来有点技术门槛但说白了它就像是一块可以自定义形状的“橡皮章”。普通的渲染是直接在画布屏幕上涂颜色而模板遮罩允许你先用这个“橡皮章”盖一下规定好哪些地方允许涂色哪些地方不允许。我们这次要做的传送门本质上就是利用这个“橡皮章”在墙上“抠”出一个洞透过这个洞看到另一个场景。为什么是URP相较于传统的内置渲染管线URP通用渲染管线对移动端和性能有更好的优化但它的Shader编写方式、一些内置宏和属性与内置管线有所不同。很多从内置管线转过来的开发者或者看了一些老旧教程的朋友在URP下实现模板遮罩时经常会遇到“为什么我的遮罩没效果”的问题。这篇内容我会以一个完整的“传送门”实战案例为线索带你从零理解URP下的模板遮罩原理手把手实现效果并分享那些官方文档里不会写的调试技巧和性能坑点。无论你是Shader新手还是想从内置管线平滑过渡到URP这篇内容都能让你获得可以直接复用到自己项目里的实用方案。2. 核心原理深度理解模板缓冲区在动手写代码之前我们必须把模板缓冲区Stencil Buffer的工作原理吃透。你可以把它想象成一张和屏幕分辨率一样大小的单通道灰度图每个像素点存储着一个0-255的整数值。渲染流程中在片元着色器计算颜色之前会先进行一个“模板测试”Stencil Test。这个测试的规则完全由我们通过Shader来定义。整个过程可以概括为三个关键操作它们通过一组特定的指令来控制比较Comp将当前像素的模板缓冲区值我们称为Ref值与一个预设的ReadMask值进行按位与操作后再与缓冲区中已存在的值称为Stencil Buffer Value进行指定的比较操作如大于、等于、小于等。操作Pass/Fail/ZFail根据比较的结果通过、未通过、深度测试未通过决定如何更新模板缓冲区中的值。例如可以通过了就把该像素的模板值设为255或者未通过就保持原样。写入掩码WriteMask控制我们更新模板缓冲区时可以写入哪些位。这通常用于更精细的分层控制。在URP的ShaderLab中这些指令被封装在Stencil代码块中。一个最基础的、用于“标记”区域的遮罩Shader的Stencil块可能长这样Stencil { Ref 1 // 我们设定的参考值这里是1 Comp Always // 比较操作总是通过 Pass Replace // 如果模板测试通过这里总是通过就用Ref值替换缓冲区原有值 WriteMask 255 // 写入掩码允许写入所有位255的二进制是11111111 ReadMask 255 // 读取掩码读取所有位 }这个Shader的作用就是“盖章”不管原来屏幕上是什么凡是被这个Shader渲染到的像素其对应的模板缓冲区值都会被设置为1。而另一个想要“被遮罩”的物体它的Shader则需要这样写Stencil { Ref 1 // 参考值也是1 Comp Equal // 比较操作相等 Pass Keep // 如果测试通过模板值等于1就保留缓冲区值 Fail Keep // 如果测试失败也保留但不渲染该像素 ZFail Keep // 如果深度测试失败也保留 }这个Shader的意思是“我只在模板缓冲区值等于1的地方才进行渲染即通过模板测试”。这样一来第二个物体就只会出现在第一个物体遮罩渲染过的区域了。这就是传送门效果的基础先用一个不可见的“遮罩”物体在墙上标记出“门洞”的区域写入模板值然后让门内的场景物体只在这个标记区域内渲染。注意渲染顺序是生命线这是模板遮罩最核心的实践原则。你必须确保“盖章”的遮罩物体写入模板值的Pass在渲染队列中先于“被遮罩”的物体读取模板值的Pass渲染。在URP中通常通过设置物体的渲染队列如“Queue” “Geometry-1”或使用RenderObjects渲染器特性来强制排序。顺序错了效果全无。3. URP下的关键配置与Shader结构差异直接从内置管线Shader复制代码到URP十有八九会失败。URP Shader有自己的一套规则理解这些差异是成功的第一步。3.1 Shader头与渲染管线识别URP Shader必须明确声明其兼容性。开头通常是这样的Shader “Universal Render Pipeline/MyStencilShader” { // 或者使用更简洁的Tag // “RenderPipeline” “UniversalPipeline” }这告诉Unity这个Shader是为URP设计的。使用内置管线的SurfaceShader或一些老的#pragma指令在URP中无法正常工作。3.2 核心的HLSLPROGRAM块与包含文件URP Shader的核心代码写在HLSLPROGRAM和ENDHLSL块中而不是传统的CGPROGRAM。最关键的一点是你需要包含URP的核心库文件#include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl”这些文件定义了URP下的基础数据结构如AttributesVaryings、空间转换函数如TransformObjectToHClip和光照模型。自己手写这些极易出错。3.3 顶点/片元着色器函数签名URP推荐使用一种更结构化的函数签名。顶点着色器接收一个Attributes结构体包含位置、法线、UV等返回一个Varyings结构体用于传递给片元着色器的数据。Varyings vert(Attributes IN) { Varyings OUT; VertexPositionInputs vertexInput GetVertexPositionInputs(IN.positionOS.xyz); OUT.positionHCS vertexInput.positionCS; // 裁剪空间位置 OUT.uv TRANSFORM_TEX(IN.uv, _BaseMap); return OUT; } float4 frag(Varyings IN) : SV_Target { half4 color SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, IN.uv); color * _BaseColor; return color; }使用GetVertexPositionInputs这类内置函数能自动且高效地处理模型空间到裁剪空间的转换比你自己写矩阵乘法更可靠。3.4 属性声明与纹理采样在URP中纹理和采样器通常分开声明并使用宏进行采样这对跨平台兼容性更好。TEXTURE2D(_BaseMap); // 声明纹理 SAMPLER(sampler_BaseMap); // 声明采样器 // 在片元着色器中采样 half4 albedo SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, uv);同时颜色属性最好使用half4类型以节省带宽。4. 实战双Pass实现传送门效果理论说得再多不如一行代码。我们来构建一个经典的传送门场景一堵墙Wall一个作为“门框”的遮罩物体PortalMask以及门内显示的另一个场景或物体PortalScene。4.1 第一步创建并配置“遮罩”材质写入模板值这个材质的目标是“悄无声息”地在模板缓冲区中做标记它本身不应该被看到。因此我们需要关闭颜色写入。创建新的Unlit Shader在URP中对于不参与光照计算的遮罩使用Unlit Shader模板最合适。新建一个Shader命名为URP_PortalMask。编写遮罩ShaderShader “Universal Render Pipeline/PortalMask” { Properties { // 可以留空或者放一个颜色用于调试 _Color (“Debug Color”, Color) (1,0,0,0.5) } SubShader { Tags { “RenderType” “Opaque” “Queue” “Geometry-1” // 关键确保此物体先于Geometry队列渲染 “RenderPipeline” “UniversalPipeline” } Pass { Name “MaskPass” // 关键关闭颜色输出只操作模板缓冲区 ColorMask 0 ZWrite Off Stencil { Ref 1 Comp Always Pass Replace // Fail Keep // 对于AlwaysFail和ZFail一般不需要设置 // ZFail Keep } HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” struct Attributes { float4 positionOS : POSITION; }; struct Varyings { float4 positionHCS : SV_POSITION; }; Varyings vert(Attributes IN) { Varyings OUT; VertexPositionInputs vertexInput GetVertexPositionInputs(IN.positionOS.xyz); OUT.positionHCS vertexInput.positionCS; return OUT; } half4 frag(Varyings IN) : SV_Target { // 因为ColorMask 0这里返回什么颜色都不显示 return half4(0,0,0,0); } ENDHLSL } } }创建材质并应用用这个Shader创建一个材质如Mat_PortalMask将其赋给一个简单的Quad或自定义网格这个网格的形状就是你想要的“门洞”形状如圆形、椭圆形、不规则形状。将其放置在墙上。由于ColorMask 0这个物体在Game视图中是不可见的但它已经成功地在模板缓冲区写入了“1”。实操心得调试遮罩形状。在开发阶段你可以暂时注释掉ColorMask 0并在frag函数里返回一个半透明的颜色如return half4(1,0,0,0.5);。这样就能在场景中直观地看到你的“遮罩”物体到底覆盖了哪些区域对于调整网格形状和位置至关重要。调试完毕记得改回去。4.2 第二步创建“门内场景”材质读取模板值这个材质将只在我们标记的区域模板值为1内渲染。创建新的Lit或Unlit Shader如果门内场景需要光照就基于URP Lit Shader模板修改如果只是一个自发光体或特殊效果用Unlit。这里以Unlit为例创建URP_PortalScene。编写场景ShaderShader “Universal Render Pipeline/PortalScene” { Properties { _MainTex (“Texture”, 2D) “white” {} _Color (“Color”, Color) (1,1,1,1) [HDR] _EmissionColor (“Emission Color”, Color) (0,0,0,1) } SubShader { Tags { “RenderType” “Opaque” “Queue” “Geometry” // 默认队列在MaskPass之后渲染 “RenderPipeline” “UniversalPipeline” } Pass { Name “ScenePass” // 深度写入根据需求决定如果希望门内物体与墙有正确的前后关系可以开启ZWrite On ZWrite On Stencil { Ref 1 Comp Equal // 核心只渲染模板值等于1的像素 Pass Keep Fail Keep ZFail Keep } HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; }; struct Varyings { float4 positionHCS : SV_POSITION; float2 uv : TEXCOORD0; }; TEXTURE2D(_MainTex); SAMPLER(sampler_MainTex); CBUFFER_START(UnityPerMaterial) float4 _MainTex_ST; half4 _Color; half4 _EmissionColor; CBUFFER_END Varyings vert(Attributes IN) { Varyings OUT; VertexPositionInputs vertexInput GetVertexPositionInputs(IN.positionOS.xyz); OUT.positionHCS vertexInput.positionCS; OUT.uv TRANSFORM_TEX(IN.uv, _MainTex); return OUT; } half4 frag(Varyings IN) : SV_Target { half4 col SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, IN.uv) * _Color; col.rgb _EmissionColor.rgb; return col; } ENDHLSL } } }应用与测试用这个Shader创建材质Mat_PortalScene将其赋给一个立方体、一个复杂的模型或一个显示另一场景的摄像机渲染纹理RenderTexture的Quad。将这个物体放置在遮罩物体的后方。运行游戏你应该能看到这个物体只在遮罩形状定义的区域内显示完美地嵌在“墙”上。4.3 第三步处理边缘与深度交互基础的遮罩完成了但一个真实的传送门还需要处理边缘效果如发光边框、扭曲效果以及门内场景与墙的深度关系。边缘效果我们可以创建第三个Shader专门用于渲染传送门的边框。这个边框的渲染需要一点技巧它应该比遮罩区域稍大一圈但同时又要剔除掉遮罩区域内部的部分。这可以通过模板测试的巧妙组合来实现。思路先正常渲染一个放大的边框网格写入一个不同的模板值比如2。然后在一个新的Pass中设置模板测试为“不等于1”Comp NotEqual并且参考值为1。这样这个Pass就只会在非遮罩区域即模板值不是1的地方渲染但结合网格本身的大小最终就只画出了边框那一圈环状区域。在这个Pass里你可以添加发光、流光、噪声扭曲等效果。深度测试ZTest与写入ZWrite遮罩物体Mask通常设置ZWrite Off。因为我们不关心它的深度它只是一个标记工具。如果开启深度写入可能会错误地遮挡住后面的“门内场景”。门内场景Scene需要根据情况设置。如果希望门内物体与墙外的其他物体有正确的前后遮挡关系比如门内有一个球球的一部分被门框挡住那么需要开启ZWrite On和ZTest LEqual默认。如果希望门内场景永远显示在最前面类似全息投影可以设置ZTest Always或ZWrite Off。5. 性能优化与高级技巧模板测试本身是GPU硬件支持的功能开销极低。性能瓶颈通常出现在Overdraw过度绘制和渲染状态切换上。减少Overdraw确保你的遮罩网格尽可能简单面数少且完全贴合你需要的形状。不要用一个巨大的Quad去盖一小块区域。对于“门内场景”也要做好视锥体剔除Frustum Culling和遮挡剔除Occlusion Culling避免渲染看不见的部分。批处理中断使用Stencil、ZWrite等指令会改变渲染状态可能导致动态合批Dynamic Batching或SRP Batcher中断。对于大量使用模板遮罩的物体要特别注意。一个优化策略是将多个使用相同模板操作比如都是写入值1的静态遮罩物体合并成一个网格。多层级遮罩模板值有8位0-255这意味着你可以设计多达256个不同的“图层”。例如你可以用值1标记“水洼”值2标记“玻璃窗”值3标记“传送门”。然后不同的物体根据不同的Comp条件Equal, NotEqual, Less等来决定自己在哪些图层显示。这为实现复杂的UI遮罩、技能范围指示器等提供了极大的灵活性。与Render Feature结合URP的ScriptableRendererFeature允许你在渲染流程的特定插入点执行自定义绘制。你可以编写一个Render Feature在渲染不透明物体之后、透明物体之前统一执行一次“全屏的模板检测后处理”。例如检测所有模板值为1的像素然后为这些像素统一添加一个全屏的扭曲效果或边缘光效果这比在每个物体Shader里单独计算要高效且统一。6. 常见问题与排查实录即使理解了原理实战中依然会遇到各种“诡异”的问题。下面是我踩过的一些坑和解决方法问题一遮罩完全没效果门内物体全部显示或全部不显示。检查清单渲染顺序这是头号嫌犯。确认遮罩材质“Queue” “Geometry-1”的渲染队列数值小于门内场景材质“Queue” “Geometry”。你可以在Frame Debugger中查看每一帧的绘制顺序确保MaskPass在ScenePass之前。模板值Ref检查两个Shader中的Ref值是否一致。一个写1一个读1。模板操作Comp, Pass检查写入Shader是否是Comp AlwaysPass Replace读取Shader是否是Comp Equal。Shader编译错误在Console窗口检查是否有Shader编译错误或警告。一个红色的错误会导致Shader回退到粉红色错误状态模板功能失效。URP Asset设置确保项目使用的是URP Asset并且材质球确实使用了我们编写的URP Shader而不是某个内置管线的Shader。问题二遮罩边缘有锯齿或闪烁。原因与解决这通常是深度测试Z-Fighting引起的。遮罩物体和墙面或门内场景物体的深度值过于接近。解决方案A在遮罩Shader中使用Offset -1, -1指令让遮罩物体在深度上稍微“后退”一点避免与墙面精确重合。解决方案B确保遮罩物体和它标记的“洞口”在物理上是分开的。例如遮罩Quad应该略微嵌入墙体内而不是完全贴合墙面。问题三在编辑器里预览正常打包后尤其是移动端失效。原因某些低端移动设备GPU可能不支持模板缓冲区或者默认不创建模板缓冲区。解决在URP Asset的配置中确保开启了模板缓冲区。路径通常为Project Settings - Graphics - 你的URP Asset - Depth/Stencil Settings确保Depth和Stencil选项是启用的。对于必须使用模板的移动端项目这是必查项。问题四使用多个不同的模板值Ref时效果混乱。排查善用Frame Debugger的“渲染状态”视图。它可以显示每个Draw Call时的模板缓冲区状态、当前设置的Ref值、比较函数等。这是调试复杂模板交互的终极利器。一步一步执行Draw Call观察模板缓冲区的变化是否符合你的预期。问题五透明物体与模板遮罩结合时出现问题。注意透明物体“Queue” “Transparent”的渲染顺序在所有不透明物体之后。如果你的遮罩或门内场景有透明部分需要特别注意队列设置。一个常见的做法是将透明部分的渲染也拆分成两个Pass或者使用AlphaTest“Queue” “AlphaTest”来代替纯透明因为AlphaTest队列在不透明物体之后、透明物体之前渲染更容易控制。实现一个稳定的传送门效果就像完成一次精密的仪器组装。理解模板缓冲区这个“硬件开关”的工作原理是蓝图遵循URP Shader的现代语法是使用正确的工具而严格控制渲染顺序和深度处理则是组装时的工艺。当你看到那个异次元入口在墙上稳定浮现门内的景象与当前世界无缝交融时那种成就感正是图形编程的魅力所在。记住遇到问题多依赖Frame Debugger它比任何猜测都更接近真相。

相关新闻

芯片设计全流程解析:从前端RTL到后端GDSII的EDA工具实战指南

芯片设计全流程解析:从前端RTL到后端GDSII的EDA工具实战指南

1. 项目概述:从想法到硅片,一场精密的数字交响乐 当你手握一部智能手机,或是打开一台高性能计算机时,驱动其运转的核心,是一枚枚比指甲盖还小的芯片。这些芯片并非天然形成,而是经过一系列极其复杂、环环相…

2026/10/13 3:14:29 阅读更多 →
SecureCRT中文乱码终极解决方案:从编码原理到系统性排查

SecureCRT中文乱码终极解决方案:从编码原理到系统性排查

1. 问题现象与初步排查 最近在调试一台远程服务器时,遇到了一个让人头疼的问题:SecureCRT终端里显示的中文突然变成了乱码,一堆问号或者奇怪的方块字符。这直接影响了查看日志、编辑配置文件等日常操作。我第一时间想到的解决方案&#xff0c…

2026/10/6 7:28:04 阅读更多 →
淘宝改价系统:批量改价3秒完成1000品,竞品没反应过来你就调完了

淘宝改价系统:批量改价3秒完成1000品,竞品没反应过来你就调完了

淘宝改价系统:批量改价3秒完成1000品,竞品没反应过来你就调完了 电商自动化圈子里流传一句话:淘宝的极速自动改价,是店群运营中最耗人力也最容易出错的环节。 电商价格战是分钟级的。竞品降价了你5分钟内不跟,流量就…

2026/10/13 10:44:31 阅读更多 →

最新新闻

Enterprise Architect v8.0858汉化安装与UML逆向建模实战指南

Enterprise Architect v8.0858汉化安装与UML逆向建模实战指南

简介:Enterprise Architect v8.0858 是一款企业级 UML 建模工具,本压缩包内置汉化包,面向系统分析师、软件架构师及需要模型驱动开发的团队,可解决英文界面操作不便的问题,适用于各类规模项目的架构设计。包内共 4 个文…

2026/10/13 14:49:08 阅读更多 →
Navicat Premium 12 免安装版实战:绿色部署与数据库连接避坑指南

Navicat Premium 12 免安装版实战:绿色部署与数据库连接避坑指南

简介:Navicat Premium 12免安装版面向数据库开发与运维人员、后端工程师及需要频繁切换多种数据库的学习者,解决多数据库客户端安装繁琐、环境迁移不便的问题。该版本无需安装即可运行,从单一应用程序中同时连接MySQL、MariaDB、MongoDB、SQL…

2026/10/13 14:49:08 阅读更多 →
TEngine 内置 com.unity.pipeline:Unity 资产与文件命令(Asset  File Commands)完整实战指南

TEngine 内置 com.unity.pipeline:Unity 资产与文件命令(Asset File Commands)完整实战指南

游戏开发 【免费下载链接】TEngine Unity 商用级别开发框架,原生内置 AI 工作流支持,集成 HybridCLR 高性能热更、Obfuz 代码混淆加固、YooAssets 企业级资源管理方案,构建高效、安全、可扩展的工业化开发底座。 项目地址: https:…

2026/10/13 14:49:08 阅读更多 →
Python单例模式实现详解:从模块缓存到元类,避开线程安全与序列化坑

Python单例模式实现详解:从模块缓存到元类,避开线程安全与序列化坑

单例模式应该是Python里讨论度最高、但写法争议也最大的设计模式之一。我在不少项目代码里见过五花八门的实现,有人把 __new__ 写得花里胡哨,有人用装饰器把类包成函数,还有人硬靠 classmethod 凑出一个所谓的单例。说起来,单…

2026/10/13 14:49:08 阅读更多 →
Being-H数据加工实战:LeRobot格式、delta动作转换与静态帧裁剪完整指南

Being-H数据加工实战:LeRobot格式、delta动作转换与静态帧裁剪完整指南

【免费下载链接】Being-H Being-H is BeingBeyonds family of human-centric embodied foundation models. 项目地址: https://gitcode.com/gh_mirrors/be/Being-H 点击查看 免费下载 Being-H 是 BeingBeyond 推出的以人为中心的具身基础模型家族,其中 …

2026/10/13 14:49:08 阅读更多 →
CT金属伪影成因与实战抑制指南:从物理原理到工作站实操

CT金属伪影成因与实战抑制指南:从物理原理到工作站实操

1. 项目概述:为什么CT图像里总会出现那些刺眼的“亮条纹”和“黑窟窿” 你有没有在医院拍完CT后,拿到报告单上写着“金属伪影明显,局部组织显示不清”?或者在做牙科CBCT时,看到自己种植牙周围一片雪白发亮、完全看不出…

2026/10/13 14:48:07 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →