找回密码
 立即注册
查看: 620|回复: 0

[笔记] Vscode for Unity Shader 用户代码片段(持续更新)

[复制链接]
发表于 2020-12-22 17:40 | 显示全部楼层 |阅读模式
使用方法:打开vscode,文件→首选项→用户片段,输入shaderlab,复制粘贴即可
  1. {
  2.     // Place your snippets for shaderlab here. Each snippet is defined under a snippet name and has a prefix, body and
  3.     // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
  4.     // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
  5.     // same ids are connected.
  6.     // Example:
  7.     // "Print to console": {
  8.     //  "prefix": "log",
  9.     //  "body": [
  10.     //      "console.log('$1');",
  11.     //      "$2"
  12.     //  ],
  13.     //  "description": "Log output to console"
  14.     // }
  15.     "Unity3D Shaderlab": {
  16.         "prefix": "shaderlab",
  17.         "body":[
  18.             "Shader \"${1:New Shader}\"",
  19.             "{",
  20.                 "\tProperties",
  21.                 "\t{",
  22.                     "\t\t_MainTex (\"Texture\", 2D) = \"white\" {}",
  23.                 "\t}",
  24.                 "\tSubShader",
  25.                 "\t{",
  26.                     "\t\tTags { \"RenderType\"=\"${2:Opaque}\" }\n",
  27.                     "\t\tPass",
  28.                     "\t\t{",
  29.                     "\t\t\t$3",
  30.                     "\t\t}",
  31.                 "\t}",
  32.             "}"
  33.         ],
  34.         "description": "Unity3D Shaderlab"
  35.     },
  36.     "Unity3D SurfaceShader":{
  37.         "prefix": "surfaceShader",
  38.         "body": [
  39.             "Shader \"${1:New Shader}\"",
  40.                 "{",
  41.                     "\tProperties",
  42.                     "\t{\n",
  43.                                             
  44.                     "\t}",
  45.                     "\tSubShader",
  46.                     "\t{",
  47.                         "\t\tTags { \"RenderType\"=\"${2:Opaque}\" \"Queue\"=\"${3:Geometry}\" }\n",
  48.                         "\t\tCGPROGRAM",
  49.                         "\t\t#pragma surface surf Standard\n",
  50.                         "\t\tstruct Input{\n",
  51.                         "\t\t};\n\n",
  52.                         
  53.                         "\t\tvoid surf(Input IN,inout SurfaceOutput o) {\n",
  54.                         
  55.                         "\t\t}",
  56.                         "\t\tENDCG",
  57.                     "\t}",
  58.                     "\tFallBack \"Diffuse\"",
  59.                 "}"         
  60.             
  61.         ],
  62.     },
  63.     "CGPROGRAM": {
  64.         "prefix": "cg",
  65.         "body": [
  66.             "CGPROGRAM",
  67.             "#pragma vertex vert",
  68.             "#pragma fragment frag\n",
  69.             "#include \"UnityCG.cginc\"\n",
  70.             "struct appdata",
  71.             "{",
  72.                 "\tfloat4 vertex : POSITION;",
  73.                 "\tfloat2 uv : TEXCOORD0;",
  74.             "};\n",
  75.             "struct v2f",
  76.             "{",
  77.                 "\tfloat2 uv : TEXCOORD0;",
  78.                 "\tfloat4 vertex : SV_POSITION;",
  79.             "};\n",
  80.             "sampler2D _MainTex;\n",
  81.             "v2f vert(appdata v)",
  82.             "{",
  83.                 "\tv2f o;",
  84.                 "\to.vertex = UnityObjectToClipPos(v.vertex);",
  85.                 "\to.uv = TRANSFORM_TEX(v.uv, _MainTex);\n",
  86.             
  87.                 "\treturn o;",
  88.             "}\n",
  89.             
  90.             "fixed4 frag(v2f i) : SV_Target",
  91.             "{",
  92.                 "\t// sample the texture",
  93.                 "\tfixed4 col = tex2D(_MainTex, i.uv);",
  94.                 "\treturn col;",
  95.             "}",
  96.             "ENDCG"
  97.         ],
  98.         "description": "Unity3D Shaderlab CGPROGRAM"
  99.     },
  100.     "Multi Lighting Control":{
  101.         "prefix": "multi_compile_fwdbase",
  102.         "body": [
  103.             "multi_compile_fwdbase",
  104.             
  105.         ],
  106.         "description": "instructs Unity to compile all variants necessary for forward base rendering"
  107.     },
  108.     "Shadow Caster":{
  109.         "prefix": "multi_compile_shadowcaster",
  110.         "body": [
  111.             "multi_compile_shadowcaster",
  112.             
  113.         ],
  114.         "description": "ensures that the shader compiles all necessary variants required for shadow casting"
  115.     },
  116.     "SHADOW_ATTENUTATION":{
  117.         "prefix": "SHADOW_ATTENUATION",
  118.         "body": [
  119.             "SHADOW_ATTENUATION($0)",
  120.         ],
  121.         "description": "a macro that returns a value between 0 and 1, where 0 indicates no shadow and 1 is fully shadowed"
  122.     },
  123.     "Camera Depth Texture":{
  124.         "prefix": "_CameraDepthTexture",
  125.         "body": "_CameraDepthTexture",
  126.         "description": "the depth buffer globally available that Unity provides"
  127.     },
  128.     "Linear Eye Depth":{
  129.         "prefix": "LinearEyeDepth",
  130.         "body": "LinearEyeDepth($0)",
  131.         "description": " convert the raw value to the linear depth"
  132.     },
  133.     "SAMPLE_DEPTH_TEXTURE":{
  134.         "prefix": "SAMPLE_DEPTH_TEXTURE",
  135.         "body": "SAMPLE_DEPTH_TEXTURE(_CamperaDepthTexture,${float2:uv})",
  136.         "description": "a macro that for sampling the background depth"
  137.     },
  138.     "UNITY_Z_0_FAR_FROM_CLIPSPACE":{
  139.         "prefix": "UNITY_Z_0_FAR_FROM_CLIPSPACE",
  140.         "body": "UNITY_Z_0_FAR_FROM_CLIPSPACE($0)",
  141.         "description": "a macro that takes the Z component of screenPos—which is the interpolated clip space depth—and converts it to linear depth"
  142.     },
  143.     "Check Top-To-Bottom":{
  144.         "prefix": "CheckTopToBottom",
  145.         "body": [
  146.             "#if Unity_UV_STARTS_AT_TOP",
  147.             "\tif(_CameraDepthTexture_TexelSize.y <0){",
  148.             "\t\tuv.y = 1 - uv.y;",
  149.             "\t}"   ,
  150.             "#endif"
  151.         ],
  152.         "description": "check if our platforms work with top-to-bottom coordinates"
  153.     },
  154.     "SHADOW_CASTER_FRAGMENT":{
  155.         "prefix": "SHADOW_CASTER_FRAGMENT",
  156.         "body": "SHADOW_CASTER_FRAGMENT($0)",
  157.         "description": "shadow caster"
  158.     },
  159.     "UnityApplyLinearShadowBias":{
  160.         "prefix": "UnityApplyLinearShadowBias",
  161.         "body": "UnityApplyLinearShadowBias($0);",
  162.         "description": "Applying the bias prevents artifacts from appearing on the surface"
  163.     },
  164.     "Toggle":{
  165.         "prefix": "Toggle",
  166.         "body": "Toggle",
  167.         "description": "Make a toggle visual on the panel"
  168.     },
  169.     "UNITY_PROJ_COORD":{
  170.         "prefix":"UNITY_PROJ_COORD",
  171.         "body": "UNITY_PROJ_COORD($0)",
  172.         "description": "处理平台差异,一般直接返回输入的值"
  173.     }
  174. }
复制代码
使用示例:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 00:24 , Processed in 0.092115 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表