base on 希望开源能够帮到所有人 # 【ShaderLibrary】 [TOC] ------ # 😉约定 ​ 在Unity里有[**Shader Forge (SF)**](https://www.acegikmo.com/shaderforge/)、[**Amplify Shader Editor (ASE)**](http://amplify.pt/unity/amplify-shader-editor/)、[**Shader Graph (SG)**](https://docs.unity3d.com/cn/Packages/[email protected]/manual/index.html) 三种连连看,代码虽然都是[**ShaderLab**](https://docs.unity3d.com/cn/current/Manual/SL-Reference.html)语法但也主要分了[**CG**](https://en.wikipedia.org/wiki/Cg_%28programming_language%29)和[**HLSL**](https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl)两种,故在此假定我个人的使用规范。 ​ 因为CG语言NVIDIA不再更新,Unity也逐渐放弃,手机成为主流,故大多Shader使用[**URP**](https://docs.unity3d.com/cn/Packages/[email protected]/manual/index.html)管线编写,该工程以[**2021.3.0f1c1以上URP**](https://unity.cn/releases/lts)为基准,我更希望向上升级,尽量不向下兼容,不要再乘坐旧时代的大船了,如果说新的东西不好,那么为什么大家费时费力费钱的去更新这么些的东西。 ​ 命名前缀按照制作Shader的工具类型当作前缀。如:ASE_XXX、SG_XXX... ​ Shader路径按照使用的管线分类,一级为管线类型,二级为类别。如:Default/Base/ASE_XXX、URP/Base/SG_XXX... ​ Shader采用模块化路径,每一个Shader分为一个文件夹,相关的模型材质引用都放在根目录的**ShaderLib**文件夹下,如:Assets/ShaderLib/Base_XXX/S_XXX.shader ## 命名 | 使用工具 | 前缀缩写 | 命名方式:前缀缩写_名称.xxx | | :----------------------------- | :------- | :----------------------------- | | Shader Forge | SF_ | SF_SimpleLit.shader | | Amplify Shader Editor | ASE_ | ASE_SimpleLit.shader | | Amplify Shader Editor 材质函数 | ASEF_ | ASEF_CustomLight.asset | | Shader Graph | SG_ | SG_SimpleLit.shadergraph | | Shader Graph 子图 | SGS_ | SGS_CustomLight.shadersubgraph | | Shader Graph HLSL引用 | SGH_ | SGH_CustomLight.hlsl | | 代码 | S_ | S_SimpleLit.shader | | CG引用 | SIC_ | SIC_CustomLight.cg | | HLSL引用 | SIH_ | SIH_CustomLight.hlsl | | GLSL引用(几乎不用) | SIG_ | SIG_CustomLight.glsl | ## 路径 | 管线 | 命名方式:管线类型/类别/文件名 | | :---------------------- | :------------------------------ | | Default(默认渲染管线) | Default/Base/S_SimpleLit.shader | | LWRP(轻量渲染管线) | LWRP/Base/S_SimpleLit.shader | | **URP(通用渲染管线)** | **URP/Base/S_SimpleLit.shader** | | HDRP(高清渲染管线) | HDRP/Base/S_SimpleLit.shader | **引用材质函数/子图路径** 如果不通用只用一次就放在原材质旁边,如果通用就要放在对应的Include文件夹内,如项目文件夹路径:Assets/Arts/**Shaders**/Include/ASE | 使用工具 | 文件夹路径 | 命名方式 | | ------------------------------ | -------------------------------- | -------- | | Shader Forge 材质函数 | Assets/Arts/Shaders/Include/SF | SFF_xxx | | Amplify Shader Editor 材质函数 | Assets/Arts/Shaders/Include/ASE | ASEF_xxx | | Shader Graph 子图 | Assets/Arts/Shaders/Include/SG | SGS_xxx | | Shader Graph HLSL引用 | Assets/Arts/Shaders/Include/SG | SGH_xxx | | CG引用 | Assets/Arts/Shaders/Include/CG | SIC_xxx | | HLSL引用 | Assets/Arts/Shaders/Include/HLSL | SIH_xxx | | GLSL引用 | Assets/Arts/Shaders/Include/GLSL | SIG_xxx | ## 类别 ​ 该工程为模块化文件夹,是为了方便导出,以及导出后的在新工程的顺利的检索和迁移,与实际项目工程文件夹会有所出入。如: ​ 模块化文件夹路径:Assets/ShaderLib/**Base_SimpleLit**/S_SimpleLit.shader ​ 项目文件夹路径:Assets/Arts/Shader/**Base**/S_SimpleLit.shader | 类别 | 文件名 | 文件夹名称:类别_名称 | | :--------------------- | :----------------- | :-------------------- | | Base(基本的) | S_SimpleLit.shader | Base_SimpleLit | | Car(车漆相关) | | | | Character(角色相关) | | | | Cloud(云相关) | | | | Effect(效果类型的) | | | | Fog(雾效相关) | | | | FX(给特效使用的) | | | | Geometry(几何着色器) | | | | Glass(玻璃相关的) | | | | PPS(后处理相关) | | | | Render(渲染效果) | | | | Sky(天空盒相关) | | | | Tool(功能性材质) | | | | Vertex(顶点相关的) | | | | Water(水相关的) | | | ------ # 🤡目录 ## Base ### Base_SimplePBR ![](./ShaderLib_2021/Recordings/Base_SimplePBR/Base_SimplePBR.png) ![](./ShaderLib_2021/Recordings/Base_SimplePBR/Base_SimplePBR.gif) ------ ### Base_Unlit ![](./ShaderLib_2021/Recordings/Base_Unlit/Base_Unlit.png) ![](./ShaderLib_2021/Recordings/Base_Unlit/Base_Unlit.gif) ------ ## Car ### Car_CarPaint ![](./ShaderLib_2021/Recordings/Car_CarPaint/Car_CarPaint.png) ![](./ShaderLib_2021/Recordings/Car_CarPaint/Car_CarPaint.gif) ------ ## Character ### Character_Hair(**Anisotropic Highlight Calculation**) ![](./ShaderLib_2021/Recordings/Character_Hair/Character_Hair.png) ![](./ShaderLib_2021/Recordings/Character_Hair/Character_Hair.gif) ------ ### Character_Hair2(UVNoise) ![](./ShaderLib_2021/Recordings/Character_Hair2/Character_Hair2.png) ![](./ShaderLib_2021/Recordings/Character_Hair2/Character_Hair2.gif) ------ ### Character_SimpleSSS ![](./ShaderLib_2021/Recordings/Character_SimpleSSS/Character_SimpleSSS.png) ![](./ShaderLib_2021/Recordings/Character_SimpleSSS/Character_SimpleSSS.gif) ------ ### Character_Stockings ![](./ShaderLib_2021/Recordings/Character_Stockings/Character_Stockings.png) ![](./ShaderLib_2021/Recordings/Character_Stockings/Character_Stockings.gif) ------ ### Character_StarRail ![](./ShaderLib_2022/Recordings/Character_StarRail/Character_StarRail_布洛妮娅.png) ![](./ShaderLib_2022/Recordings/Character_StarRail/Character_StarRail_布洛妮娅.gif) ![](./ShaderLib_2022/Recordings/Character_StarRail/Character_StarRail_流萤.png) ![](./ShaderLib_2022/Recordings/Character_StarRail/Character_StarRail_流萤.gif) ------ ## Cloud ### Cloud_ParallaxCloud ![](./ShaderLib_2021/Recordings/Cloud_ParallaxCloud/Cloud_ParallaxCloud.png) ![](./ShaderLib_2021/Recordings/Cloud_ParallaxCloud/Cloud_ParallaxCloud.gif) ------ ## Effect ### Effect_BoxWire ![](./ShaderLib_2021/Recordings/Effect_BoxWire/Effect_BoxWire.png) ![](./ShaderLib_2021/Recordings/Effect_BoxWire/Effect_BoxWire.gif) ------ ### Effect_Dissolve ![](./ShaderLib_2021/Recordings/Effect_Dissolve/Effect_Dissolve.png) ![](./ShaderLib_2021/Recordings/Effect_Dissolve/Effect_Dissolve.gif) ------ ### Effect_Fluid ![](./ShaderLib_2021/Recordings/Effect_Fluid/Effect_Fluid.png) ![](./ShaderLib_2021/Recordings/Effect_Fluid/Effect_Fluid.gif) ------ ### Effect_Glitch ![](./ShaderLib_2021/Recordings/Effect_Glitch/Effect_Glitch.png) ![](./ShaderLib_2021/Recordings/Effect_Glitch/Effect_Glitch.gif) ------ ### Effect_HexagonDiffusion ![](./ShaderLib_2021/Recordings/Effect_HexagonDiffusion/Effect_HexagonDiffusion.png) ![](./ShaderLib_2021/Recordings/Effect_HexagonDiffusion/Effect_HexagonDiffusion.gif) ------ ### Effect_Portal ![](./ShaderLib_2021/Recordings/Effect_Portal/Effect_Portal.png) ![](./ShaderLib_2021/Recordings/Effect_Portal/Effect_Portal.gif) ------ ### Effect_RhythmLED ![](./ShaderLib_2021/Recordings/Effect_RhythmLED/Effect_RhythmLED.png) ![](./ShaderLib_2021/Recordings/Effect_RhythmLED/Effect_RhythmLED.gif) ------ ### Effect_RhythmLEDScreen ![](./ShaderLib_2021/Recordings/Effect_RhythmLEDScreen/Effect_RhythmLEDScreen.png) ![](./ShaderLib_2021/Recordings/Effect_RhythmLEDScreen/Effect_RhythmLEDScreen.gif) ------ ### Effect_RhythmLight ![](./ShaderLib_2021/Recordings/Effect_RhythmLight/Effect_RhythmLight.png) ![](./ShaderLib_2021/Recordings/Effect_RhythmLight/Effect_RhythmLight.gif) ------ ### Effect_RhythmLineWave ![](./ShaderLib_2021/Recordings/Effect_RhythmLineWave/Effect_RhythmLineWave.png) ![](./ShaderLib_2021/Recordings/Effect_RhythmLineWave/Effect_RhythmLineWave.gif) ------ ### Effect_Shield ![](./ShaderLib_2021/Recordings/Effect_Shield/Effect_Shield.png) ![](./ShaderLib_2021/Recordings/Effect_Shield/Effect_Shield.gif) ------ ### Effect_TextureDiffusion ![](./ShaderLib_2021/Recordings/Effect_TextureDiffusion/Effect_TextureDiffusion.png) ![](./ShaderLib_2021/Recordings/Effect_TextureDiffusion/Effect_TextureDiffusion.gif) ------ ### Effect_ThermalChange ![](./ShaderLib_2021/Recordings/Effect_ThermalChange/Effect_ThermalChange.png) ![](./ShaderLib_2021/Recordings/Effect_ThermalChange/Effect_ThermalChange.gif) ------ ### Effect_TransitionPixel ![](./ShaderLib_2021/Recordings/Effect_TransitionPixel/Effect_TransitionPixel.png) ![](./ShaderLib_2021/Recordings/Effect_TransitionPixel/Effect_TransitionPixel_Random.png) ![](./ShaderLib_2021/Recordings/Effect_TransitionPixel/Effect_TransitionPixel_A.gif) ![](./ShaderLib_2021/Recordings/Effect_TransitionPixel/Effect_TransitionPixel_B.gif) ![](./ShaderLib_2021/Recordings/Effect_TransitionPixel/Effect_TransitionPixel_C.gif) ------ ### Effect_Transitions ![](./ShaderLib_2021/Recordings/Effect_Transitions/Effect_Transitions.png) ![](./ShaderLib_2021/Recordings/Effect_Transitions/Effect_Transitions.gif) ------ ### Effect_Transitions2 ![](./ShaderLib_2021/Recordings/Effect_Transitions2/Effect_Transitions2.png) ![](./ShaderLib_2021/Recordings/Effect_Transitions2/Effect_Transitions2.gif) ------ ### Effect_Transitions3 ![](./ShaderLib_2021/Recordings/Effect_Transitions3/Effect_Transitions3.png) ![](./ShaderLib_2021/Recordings/Effect_Transitions3/Effect_Transitions3.gif) ------ ### Effect_XRay ![](./ShaderLib_2021/Recordings/Effect_XRay/Effect_XRay.png) ![](./ShaderLib_2021/Recordings/Effect_XRay/Effect_XRay.gif) ------ ## Fog ### Fog_HeighFog ![](./ShaderLib_2021/Recordings/Fog_HeighFog/Fog_HeighFog.png) ![](./ShaderLib_2021/Recordings/Fog_HeighFog/Fog_HeighFog.gif) ------ ### Fog_UnderWaterFog ![](./ShaderLib_2021/Recordings/Fog_UnderWaterFog/Fog_UnderWaterFog.png) ![](./ShaderLib_2021/Recordings/Fog_UnderWaterFog/Fog_UnderWaterFog.gif) ------ ## FX ### FX_UniversalParticleTransparent ![](./ShaderLib_2021/Recordings/FX_UniversalParticleTransparent/FX_UniversalParticleTransparent.png) ![](./ShaderLib_2021/Recordings/FX_UniversalParticleTransparent/FX_UniversalParticleTransparent.gif) ------ ## Geometry ### Geometry_Grass ![](./ShaderLib_2021/Recordings/Geometry_Grass/Geometry_Grass.png) ![](./ShaderLib_2021/Recordings/Geometry_Grass/Geometry_Grass.gif) ------ ### Geometry_Wireframe ![](./ShaderLib_2021/Recordings/Geometry_Wireframe/Geometry_Wireframe.png) ![](./ShaderLib_2021/Recordings/Geometry_Wireframe/Geometry_Wireframe.gif) ------ ## Glass ### Glass_BlurGlass ![](./ShaderLib_2021/Recordings/Glass_BlurGlass/Glass_BlurGlass.png) ![](./ShaderLib_2021/Recordings/Glass_BlurGlass/Glass_BlurGlass.gif) ------ ### Glass_Bubble ![](./ShaderLib_2021/Recordings/Glass_Bubble/Glass_Bubble.png) ![](./ShaderLib_2021/Recordings/Glass_Bubble/Glass_Bubble.gif) ------ ### Glass_MatcapGlass ![](./ShaderLib_2021/Recordings/Glass_MatcapGlass/Glass_MatcapGlass.png) ![](./ShaderLib_2021/Recordings/Glass_MatcapGlass/Glass_MatcapGlass.gif) ------ ### Glass_RefractGlass ![](./ShaderLib_2021/Recordings/Glass_RefractGlass/Glass_RefractGlass.png) ![](./ShaderLib_2021/Recordings/Glass_RefractGlass/Glass_RefractGlass.gif) ------ ## PPS ### PPS_Bloom ![](./ShaderLib_2021/Recordings/PPS_Bloom/PPS_Bloom.png) ![](./ShaderLib_2021/Recordings/PPS_Bloom/PPS_Bloom.gif) ------ ### PPS_BokehBlur ![](./ShaderLib_2021/Recordings/PPS_BokehBlur/PPS_BokehBlur.png) ![](./ShaderLib_2021/Recordings/PPS_BokehBlur/PPS_BokehBlur.gif) ------ ### PPS_DOF_BokehBlur ![](./ShaderLib_2021/Recordings/PPS_DOF_BokehBlur/PPS_DOF_BokehBlur.png) ![](./ShaderLib_2021/Recordings/PPS_DOF_BokehBlur/PPS_DOF_BokehBlur.gif) ------ ### PPS_GaussianBlur ![](./ShaderLib_2021/Recordings/PPS_GaussianBlur/PPS_GaussianBlur.png) ![](./ShaderLib_2021/Recordings/PPS_GaussianBlur/PPS_GaussianBlur.gif) ------ ### PPS_HueBrightnessSaturationContrast ![](./ShaderLib_2021/Recordings/PPS_HueBrightnessSaturationContrast/PPS_HueBrightnessSaturationContrast.png) ![](./ShaderLib_2021/Recordings/PPS_HueBrightnessSaturationContrast/PPS_HueBrightnessSaturationContrast.gif) ------ ### PPS_Mosaic ![](./ShaderLib_2021/Recordings/PPS_Mosaic/PPS_Mosaic.png) ![](./ShaderLib_2021/Recordings/PPS_Mosaic/PPS_Mosaic.gif) ------ ### PPS_VolumeLighting ![](./ShaderLib_2021/Recordings/PPS_VolumeLighting/PPS_VolumeLighting.png) ![](./ShaderLib_2021/Recordings/PPS_VolumeLighting/PPS_VolumeLighting.gif) ------ ## Render ### Render_Ink ![](./ShaderLib_2021/Recordings/Render_Ink/Render_Ink.png) ![](./ShaderLib_2021/Recordings/Render_Ink/Render_Ink.gif) ------ ### Render_Ink2 ![](./ShaderLib_2021/Recordings/Render_Ink2/Render_Ink2.png) ![](./ShaderLib_2021/Recordings/Render_Ink2/Render_Ink2.gif) ------ ### Render_Ink3 ![](./ShaderLib_2021/Recordings/Render_Ink3/24_加个暗角.png) ![](./ShaderLib_2021/Recordings/Render_Ink3/19_混合雾.png) ![](./ShaderLib_2021/Recordings/Render_Ink3/18_水墨边缘光法线外扩描边(近大远小).png) ![](./ShaderLib_2021/Recordings/Render_Ink3/Render_Ink3_Sequence.gif) ![](./ShaderLib_2021/Recordings/Render_Ink3/Render_Ink3_Test.gif) ------ ### Render_SimpleJelly ![](./ShaderLib_2021/Recordings/Render_SimpleJelly/Render_SimpleJelly.png) ![](./ShaderLib_2021/Recordings/Render_SimpleJelly/Render_SimpleJelly.gif) ------ ### Render_SimpleToon ![](./ShaderLib_2021/Recordings/Render_SimpleToon/Render_SimpleToon.png) ![](./ShaderLib_2021/Recordings/Render_SimpleToon/Render_SimpleToon.gif) ------ ### Render_ThreeColor ![](./ShaderLib_2021/Recordings/Render_ThreeColor/Render_ThreeColor.png) ![](./ShaderLib_2021/Recordings/Render_ThreeColor/Render_ThreeColor.gif) ------ ### Render_Townscaper ![](./ShaderLib_2021/Recordings/Render_Townscaper/Render_Townscaper.png) ![](./ShaderLib_2021/Recordings/Render_Townscaper/Render_Townscaper.gif) ------ ## Sky ### Sky_CustomSkybox ![](./ShaderLib_2021/Recordings/Sky_CustomSkybox/Sky_CustomSkybox.png) ![](./ShaderLib_2021/Recordings/Sky_CustomSkybox/Sky_CustomSkybox.gif) ------ ### Sky_StylizedSky ![](./ShaderLib_2021/Recordings/Sky_StylizedSky/Sky_StylizedSky.png) ![](./ShaderLib_2021/Recordings/Sky_StylizedSky/Sky_StylizedSky.gif) ------ ### Sky_StylizedSky2 ![](./ShaderLib_2021/Recordings/Sky_StylizedSky2/Sky_StylizedSky2.png) ![](./ShaderLib_2021/Recordings/Sky_StylizedSky2/Sky_StylizedSky2.gif) ------ ## Tool ### Tool_Billboard ![](./ShaderLib_2021/Recordings/Tool_Billboard/Tool_Billboard.png) ![](./ShaderLib_2021/Recordings/Tool_Billboard/Tool_Billboard.gif) ------ ### Tool_BlendModePS(含GUI) ![](./ShaderLib_2021/Recordings/Tool_BlendModePS/Tool_BlendModePS.png) ![](./ShaderLib_2021/Recordings/Tool_BlendModePS/Tool_BlendModePS.gif) ------ ### Tool_BlendModeUnity(含GUI) ![](./ShaderLib_2021/Recordings/Tool_BlendModeUnity/Tool_BlendModeUnity.png) ![](./ShaderLib_2021/Recordings/Tool_BlendModeUnity/Tool_BlendModeUnity.gif) ------ ### Tool_CubeMap ![](./ShaderLib_2021/Recordings/Tool_CubeMap/Tool_CubeMap.png) ![](./ShaderLib_2021/Recordings/Tool_CubeMap/Tool_CubeMap.gif) ------ ### Tool_Decal ![](./ShaderLib_2021/Recordings/Tool_Decal/Tool_Decal.png) ![](./ShaderLib_2021/Recordings/Tool_Decal/Tool_Decal.gif) ------ ### Tool_Displacement ![](./ShaderLib_2021/Recordings/Tool_Displacement/Tool_Displacement.png) ![](./ShaderLib_2021/Recordings/Tool_Displacement/Tool_Displacement.gif) ------ ### Tool_FlowMap ![](./ShaderLib_2021/Recordings/Tool_FlowMap/Tool_FlowMap.png) ![](./ShaderLib_2021/Recordings/Tool_FlowMap/Tool_FlowMap.gif) ------ ### Tool_Fwidth ![](./ShaderLib_2021/Recordings/Tool_Fwidth/Tool_Fwidth.png) ![](./ShaderLib_2021/Recordings/Tool_Fwidth/Tool_Fwidth.gif) ------ ### Tool_MatCap ![](./ShaderLib_2021/Recordings/Tool_MatCap/Tool_MatCap.png) ![](./ShaderLib_2021/Recordings/Tool_MatCap/Tool_MatCap.gif) ------ ### Tool_PlanarShadow ![](./ShaderLib_2021/Recordings/Tool_PlanarShadow/Tool_PlanarShadow.png) ![](./ShaderLib_2021/Recordings/Tool_PlanarShadow/Tool_PlanarShadow.gif) ------ ### Tool_PolarCoord ![](./ShaderLib_2021/Recordings/Tool_PolarCoord/Tool_PolarCoord.png) ![](./ShaderLib_2021/Recordings/Tool_PolarCoord/Tool_PolarCoord.gif) ------ ### Tool_ScreenSpaceOutlines ![](./ShaderLib_2021/Recordings/Tool_ScreenSpaceOutlines/Tool_ScreenSpaceOutlines.png) ![](./ShaderLib_2021/Recordings/Tool_ScreenSpaceOutlines/Tool_ScreenSpaceOutlines.gif) ------ ### Tool_ScreenUV ![](./ShaderLib_2021/Recordings/Tool_ScreenUV/Tool_ScreenUV.png) ![](./ShaderLib_2021/Recordings/Tool_ScreenUV/Tool_ScreenUV.gif) ------ ### Tool_Sequence(含Billboard) ![](./ShaderLib_2021/Recordings/Tool_Sequence/Tool_Sequence.png) ![](./ShaderLib_2021/Recordings/Tool_Sequence/Tool_Sequence.gif) ------ ### Tool_Stencil ![](./ShaderLib_2021/Recordings/Tool_Stencil/Tool_Stencil.png) ![](./ShaderLib_2021/Recordings/Tool_Stencil/Tool_Stencil.gif) ------ ## Vertex ### Vertex_VertexAnimaionTexture ![](./ShaderLib_2021/Recordings/Vertex_VertexAnimaionTexture/Vertex_VertexAnimaionTexture.png) ![](./ShaderLib_2021/Recordings/Vertex_VertexAnimaionTexture/Vertex_VertexAnimaionTexture.gif) ------ ### Vertex_VertexAnimaionUVCut ![](./ShaderLib_2021/Recordings/Vertex_VertexAnimaionUVCut/Vertex_VertexAnimaionUVCut.png) ![](./ShaderLib_2021/Recordings/Vertex_VertexAnimaionUVCut/Vertex_VertexAnimaionUVCut.gif) ------ ## Water ### Water_LiquidWater ![](./ShaderLib_2021/Recordings/Water_LiquidWater/Water_LiquidWater.png) ![](./ShaderLib_2021/Recordings/Water_LiquidWater/Water_LiquidWater.gif) ------ ### Water_LiquidWater2D ![](./ShaderLib_2021/Recordings/Water_LiquidWater2D/Water_LiquidWater2D.png) ![](./ShaderLib_2021/Recordings/Water_LiquidWater2D/Water_LiquidWater2D.gif) ------ ### Water_RealWater ![](./ShaderLib_2021/Recordings/Water_RealWater/Water_RealWater.png) ![](./ShaderLib_2021/Recordings/Water_RealWater/Water_RealWater.gif) ------ ### Water_SimpleLava ![](./ShaderLib_2021/Recordings/Water_SimpleLava/Water_SimpleLava.png) ![](./ShaderLib_2021/Recordings/Water_SimpleLava/Water_SimpleLava.gif) ------ ### Water_ToonWater ![](./ShaderLib_2021/Recordings/Water_ToonWater/Water_ToonWater.png) ![](./ShaderLib_2021/Recordings/Water_ToonWater/Water_ToonWater.gif) ------ # 🥰巨人的肩膀 ## 函数相关 [Cg Toolkit | NVIDIA Developer](https://developer.nvidia.com/cg-toolkit) [Cg标准函数库 - 简书 (jianshu.com)](https://www.jianshu.com/p/c789aff2d6e9) [Unity Shader目录-初级篇 - 简书 (jianshu.com)](https://www.jianshu.com/p/3db29c182669) [Unity Shader目录-中级篇 - 简书 (jianshu.com)](https://www.jianshu.com/p/8c3f1b363768) ## 光照相关 [Unity URP GI,Meta Pass,脚本切换Light Map学习 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/606484690) ", Assign "at most 3 tags" to the expected json: {"id":"8668","tags":[]} "only from the tags list I provide: [{"id":39,"name":"3d-generation","display_name":"3D generation","slug":"3d-generation"},{"id":3,"name":"ai-agent","display_name":"AI agent","slug":"ai-agent"},{"id":8,"name":"ai-coding","display_name":"AI coding assistant","slug":"ai-coding"},{"id":5,"name":"ai-image","display_name":"AI image generation","slug":"ai-image"},{"id":9,"name":"ai-infrastructure","display_name":"AI infrastructure","slug":"ai-infrastructure"},{"id":10,"name":"ai-memory","display_name":"AI memory","slug":"ai-memory"},{"id":11,"name":"ai-skills","display_name":"AI skills","slug":"ai-skills"},{"id":12,"name":"ai-translation","display_name":"AI translation","slug":"ai-translation"},{"id":6,"name":"ai-video","display_name":"AI video generation","slug":"ai-video"},{"id":4,"name":"ai-voice","display_name":"AI voice","slug":"ai-voice"},{"id":7,"name":"ai-workflow","display_name":"AI workflow","slug":"ai-workflow"},{"id":22,"name":"audio-processing","display_name":"Audio processing","slug":"audio-processing"},{"id":29,"name":"authentication","display_name":"Authentication","slug":"authentication"},{"id":51,"name":"bundler","display_name":"Bundler","slug":"bundler"},{"id":41,"name":"chatbot","display_name":"Chatbot","slug":"chatbot"},{"id":27,"name":"cloud-native","display_name":"Cloud native","slug":"cloud-native"},{"id":1,"name":"computer-vision","display_name":"Computer vision","slug":"computer-vision"},{"id":37,"name":"crypto-trading","display_name":"Crypto trading","slug":"crypto-trading"},{"id":57,"name":"curated-list","display_name":"Curated list","slug":"curated-list"},{"id":54,"name":"data-streaming","display_name":"Data streaming","slug":"data-streaming"},{"id":35,"name":"data-visualization","display_name":"Data visualization","slug":"data-visualization"},{"id":16,"name":"database-backup","display_name":"Database backup","slug":"database-backup"},{"id":49,"name":"design-system","display_name":"Design system","slug":"design-system"},{"id":38,"name":"digital-human","display_name":"Digital human","slug":"digital-human"},{"id":34,"name":"document-processing","display_name":"Document processing","slug":"document-processing"},{"id":44,"name":"ecommerce","display_name":"E-commerce","slug":"ecommerce"},{"id":45,"name":"emulator","display_name":"Emulator","slug":"emulator"},{"id":46,"name":"file-management","display_name":"File management","slug":"file-management"},{"id":32,"name":"fintech","display_name":"Fintech","slug":"fintech"},{"id":31,"name":"game-development","display_name":"Game development","slug":"game-development"},{"id":24,"name":"headless-browser","display_name":"Headless browser","slug":"headless-browser"},{"id":52,"name":"headless-cms","display_name":"Headless CMS","slug":"headless-cms"},{"id":36,"name":"home-automation","display_name":"Home automation","slug":"home-automation"},{"id":20,"name":"image-editing","display_name":"Image editing","slug":"image-editing"},{"id":28,"name":"iot","display_name":"IoT","slug":"iot"},{"id":13,"name":"local-llm","display_name":"Local LLM","slug":"local-llm"},{"id":17,"name":"mcp","display_name":"MCP","slug":"mcp"},{"id":47,"name":"monitoring","display_name":"Monitoring","slug":"monitoring"},{"id":2,"name":"nlp","display_name":"NLP","slug":"nlp"},{"id":26,"name":"observability","display_name":"Observability","slug":"observability"},{"id":40,"name":"pentesting","display_name":"Pentesting","slug":"pentesting"},{"id":48,"name":"programming-examples","display_name":"Programming examples","slug":"programming-examples"},{"id":42,"name":"proxy","display_name":"Proxy","slug":"proxy"},{"id":14,"name":"rag","display_name":"RAG","slug":"rag"},{"id":56,"name":"resume-building","display_name":"Resume building","slug":"resume-building"},{"id":33,"name":"robotics","display_name":"Robotics","slug":"robotics"},{"id":30,"name":"search","display_name":"Search","slug":"search"},{"id":43,"name":"self-hosted","display_name":"Self-hosted","slug":"self-hosted"},{"id":50,"name":"static-analysis","display_name":"Static analysis","slug":"static-analysis"},{"id":18,"name":"synthetic-data","display_name":"Synthetic data","slug":"synthetic-data"},{"id":19,"name":"text-to-speech","display_name":"Text to speech","slug":"text-to-speech"},{"id":53,"name":"ui-components","display_name":"UI components","slug":"ui-components"},{"id":15,"name":"vector-database","display_name":"Vector database","slug":"vector-database"},{"id":21,"name":"video-editing","display_name":"Video editing","slug":"video-editing"},{"id":25,"name":"web-scraping","display_name":"Web scraping","slug":"web-scraping"},{"id":55,"name":"webassembly","display_name":"WebAssembly","slug":"webassembly"},{"id":23,"name":"workflow-automation","display_name":"Workflow automation","slug":"workflow-automation"}]" returns me the "expected json"