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


------
### Base_Unlit


------
## Car
### Car_CarPaint


------
## Character
### Character_Hair(**Anisotropic Highlight Calculation**)


------
### Character_Hair2(UVNoise)


------
### Character_SimpleSSS


------
### Character_Stockings


------
### Character_StarRail




------
## Cloud
### Cloud_ParallaxCloud


------
## Effect
### Effect_BoxWire


------
### Effect_Dissolve


------
### Effect_Fluid


------
### Effect_Glitch


------
### Effect_HexagonDiffusion


------
### Effect_Portal


------
### Effect_RhythmLED


------
### Effect_RhythmLEDScreen


------
### Effect_RhythmLight


------
### Effect_RhythmLineWave


------
### Effect_Shield


------
### Effect_TextureDiffusion


------
### Effect_ThermalChange


------
### Effect_TransitionPixel





------
### Effect_Transitions


------
### Effect_Transitions2


------
### Effect_Transitions3


------
### Effect_XRay


------
## Fog
### Fog_HeighFog


------
### Fog_UnderWaterFog


------
## FX
### FX_UniversalParticleTransparent


------
## Geometry
### Geometry_Grass


------
### Geometry_Wireframe


------
## Glass
### Glass_BlurGlass


------
### Glass_Bubble


------
### Glass_MatcapGlass


------
### Glass_RefractGlass


------
## PPS
### PPS_Bloom


------
### PPS_BokehBlur


------
### PPS_DOF_BokehBlur


------
### PPS_GaussianBlur


------
### PPS_HueBrightnessSaturationContrast


------
### PPS_Mosaic


------
### PPS_VolumeLighting


------
## Render
### Render_Ink


------
### Render_Ink2


------
### Render_Ink3


.png)


------
### Render_SimpleJelly


------
### Render_SimpleToon


------
### Render_ThreeColor


------
### Render_Townscaper


------
## Sky
### Sky_CustomSkybox


------
### Sky_StylizedSky


------
### Sky_StylizedSky2


------
## Tool
### Tool_Billboard


------
### Tool_BlendModePS(含GUI)


------
### Tool_BlendModeUnity(含GUI)


------
### Tool_CubeMap


------
### Tool_Decal


------
### Tool_Displacement


------
### Tool_FlowMap


------
### Tool_Fwidth


------
### Tool_MatCap


------
### Tool_PlanarShadow


------
### Tool_PolarCoord


------
### Tool_ScreenSpaceOutlines


------
### Tool_ScreenUV


------
### Tool_Sequence(含Billboard)


------
### Tool_Stencil


------
## Vertex
### Vertex_VertexAnimaionTexture


------
### Vertex_VertexAnimaionUVCut


------
## Water
### Water_LiquidWater


------
### Water_LiquidWater2D


------
### Water_RealWater


------
### Water_SimpleLava


------
### Water_ToonWater


------
# 🥰巨人的肩膀
## 函数相关
[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"