Guest User

Untitled

a guest
Dec 27th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.63 KB | None | 0 0
  1. // Made with Amplify Shader Editor
  2. // Available at the Unity Asset Store - http://u3d.as/y3X
  3. Shader "HDRenderPipeline/_Custom/Test1"
  4. {
  5. Properties
  6. {
  7.  
  8. }
  9.  
  10. SubShader
  11. {
  12. Tags { "RenderPipeline"="HDRenderPipeline" "RenderType"="Opaque" "Queue"="Geometry" }
  13.  
  14. Blend DstColor Zero
  15. Cull Back
  16. ZTest LEqual
  17. ZWrite Off
  18. Offset 0 , 0
  19.  
  20. HLSLINCLUDE
  21. #pragma target 4.5
  22. #pragma only_renderers d3d11 ps4 xboxone vulkan metal switch
  23. #pragma multi_compile_instancing
  24. ENDHLSL
  25.  
  26.  
  27. Pass
  28. {
  29.  
  30. Name "Depth prepass"
  31. Tags { "LightMode"="DepthForwardOnly" }
  32. ColorMask 0
  33.  
  34.  
  35. HLSLPROGRAM
  36.  
  37. #pragma vertex Vert
  38. #pragma fragment Frag
  39.  
  40.  
  41.  
  42. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  43. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Wind.hlsl"
  44.  
  45. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
  46. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
  47.  
  48. #define SHADERPASS SHADERPASS_DEPTH_ONLY
  49.  
  50.  
  51. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
  52. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
  53. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Unlit/Unlit.hlsl"
  54. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
  55. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
  56. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
  57.  
  58. struct AttributesMesh
  59. {
  60. float3 positionOS : POSITION;
  61. float4 normalOS : NORMAL;
  62.  
  63. #if UNITY_ANY_INSTANCING_ENABLED
  64. uint instanceID : INSTANCEID_SEMANTIC;
  65. #endif
  66. };
  67.  
  68. struct PackedVaryingsMeshToPS
  69. {
  70. float4 positionCS : SV_Position;
  71.  
  72. #if UNITY_ANY_INSTANCING_ENABLED
  73. uint instanceID : INSTANCEID_SEMANTIC;
  74. #endif
  75. };
  76.  
  77. CBUFFER_START(UnityPerMaterial)
  78. CBUFFER_END
  79.  
  80. struct SurfaceDescription
  81. {
  82. float Alpha;
  83. float AlphaClipThreshold;
  84. };
  85.  
  86. void BuildSurfaceData(FragInputs fragInputs, SurfaceDescription surfaceDescription, float3 V, out SurfaceData surfaceData)
  87. {
  88. ZERO_INITIALIZE(SurfaceData, surfaceData);
  89. }
  90.  
  91. void GetSurfaceAndBuiltinData(SurfaceDescription surfaceDescription, FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData)
  92. {
  93. #if _ALPHATEST_ON
  94. DoAlphaTest ( surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold );
  95. #endif
  96.  
  97. BuildSurfaceData(fragInputs, surfaceDescription, V, surfaceData);
  98. ZERO_INITIALIZE(BuiltinData, builtinData);
  99. builtinData.opacity = surfaceDescription.Alpha;
  100. builtinData.distortion = float2(0.0, 0.0);
  101. builtinData.distortionBlur =0.0;
  102. }
  103.  
  104. PackedVaryingsMeshToPS Vert(AttributesMesh inputMesh )
  105. {
  106. PackedVaryingsMeshToPS outputPackedVaryingsMeshToPS;
  107.  
  108. UNITY_SETUP_INSTANCE_ID(inputMesh);
  109. UNITY_TRANSFER_INSTANCE_ID(inputMesh, outputPackedVaryingsMeshToPS);
  110.  
  111.  
  112. inputMesh.positionOS.xyz += float3( 0, 0, 0 ) ;
  113. inputMesh.normalOS = inputMesh.normalOS ;
  114.  
  115. float3 positionRWS = TransformObjectToWorld(inputMesh.positionOS);
  116. outputPackedVaryingsMeshToPS.positionCS = TransformWorldToHClip(positionRWS);
  117. return outputPackedVaryingsMeshToPS;
  118. }
  119.  
  120. void Frag( PackedVaryingsMeshToPS packedInput
  121. #ifdef WRITE_NORMAL_BUFFER
  122. , out float4 outNormalBuffer : SV_Target0
  123. #ifdef WRITE_MSAA_DEPTH
  124. , out float1 depthColor : SV_Target1
  125. #endif
  126. #else
  127. , out float4 outColor : SV_Target0
  128. #endif
  129.  
  130. #ifdef _DEPTHOFFSET_ON
  131. , out float outputDepth : SV_Depth
  132. #endif
  133.  
  134. )
  135. {
  136. FragInputs input;
  137. ZERO_INITIALIZE(FragInputs, input);
  138. input.worldToTangent = k_identity3x3;
  139. input.positionSS = packedInput.positionCS;
  140.  
  141. PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS);
  142.  
  143. float3 V = float3(1.0, 1.0, 1.0); // Avoid the division by 0
  144.  
  145. SurfaceData surfaceData;
  146. BuiltinData builtinData;
  147. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  148.  
  149. surfaceDescription.Alpha = 1;
  150. surfaceDescription.AlphaClipThreshold = 0;
  151.  
  152. GetSurfaceAndBuiltinData(surfaceDescription, input, V, posInput, surfaceData, builtinData);
  153.  
  154. #ifdef _DEPTHOFFSET_ON
  155. outputDepth = posInput.deviceDepth;
  156. #endif
  157.  
  158. #ifdef WRITE_NORMAL_BUFFER
  159. EncodeIntoNormalBuffer(ConvertSurfaceDataToNormalData(surfaceData), posInput.positionSS, outNormalBuffer);
  160. #ifdef WRITE_MSAA_DEPTH
  161. // In case we are rendering in MSAA, reading the an MSAA depth buffer is way too expensive. To avoid that, we export the depth to a color buffer
  162. depthColor = packedInput.positionCS.z;
  163. #endif
  164. #elif defined(SCENESELECTIONPASS)
  165. // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly
  166. outColor = float4(_ObjectId, _PassValue, 1.0, 1.0);
  167. #else
  168. outColor = float4(0.0, 0.0, 0.0, 0.0);
  169. #endif
  170. }
  171.  
  172. ENDHLSL
  173. }
  174.  
  175. Pass
  176. {
  177.  
  178. Name "Forward Unlit"
  179. Tags { "LightMode"="ForwardOnly" }
  180.  
  181. ColorMask RGBA
  182.  
  183. HLSLPROGRAM
  184.  
  185. #pragma vertex Vert
  186. #pragma fragment Frag
  187.  
  188.  
  189.  
  190. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  191. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Wind.hlsl"
  192.  
  193. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
  194. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
  195.  
  196. #define SHADERPASS SHADERPASS_FORWARD_UNLIT
  197. #pragma multi_compile _ LIGHTMAP_ON
  198. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  199. #pragma multi_compile _ DYNAMICLIGHTMAP_ON
  200.  
  201.  
  202. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
  203. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
  204. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Unlit/Unlit.hlsl"
  205. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
  206. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
  207. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
  208.  
  209. struct AttributesMesh
  210. {
  211. float3 positionOS : POSITION;
  212. float4 normalOS : NORMAL;
  213.  
  214. #if UNITY_ANY_INSTANCING_ENABLED
  215. uint instanceID : INSTANCEID_SEMANTIC;
  216. #endif
  217. };
  218.  
  219. struct PackedVaryingsMeshToPS
  220. {
  221. float4 positionCS : SV_Position;
  222. float4 ase_texcoord : TEXCOORD0;
  223. #if UNITY_ANY_INSTANCING_ENABLED
  224. uint instanceID : INSTANCEID_SEMANTIC;
  225. #endif
  226. };
  227.  
  228. CBUFFER_START(UnityPerMaterial)
  229. CBUFFER_END
  230.  
  231.  
  232. struct SurfaceDescription
  233. {
  234. float3 Color;
  235. float Alpha;
  236. float AlphaClipThreshold;
  237. };
  238.  
  239.  
  240. void BuildSurfaceData(FragInputs fragInputs, SurfaceDescription surfaceDescription, float3 V, out SurfaceData surfaceData)
  241. {
  242. ZERO_INITIALIZE(SurfaceData, surfaceData);
  243. surfaceData.color = surfaceDescription.Color;
  244. }
  245.  
  246. void GetSurfaceAndBuiltinData(SurfaceDescription surfaceDescription , FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData)
  247. {
  248. #if _ALPHATEST_ON
  249. DoAlphaTest ( surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold );
  250. #endif
  251. BuildSurfaceData(fragInputs, surfaceDescription, V, surfaceData);
  252. ZERO_INITIALIZE(BuiltinData, builtinData);
  253. builtinData.opacity = surfaceDescription.Alpha;
  254. builtinData.distortion = float2(0.0, 0.0);
  255. builtinData.distortionBlur = 0.0;
  256. }
  257.  
  258.  
  259. PackedVaryingsMeshToPS Vert(AttributesMesh inputMesh )
  260. {
  261. PackedVaryingsMeshToPS outputPackedVaryingsMeshToPS;
  262. UNITY_SETUP_INSTANCE_ID(inputMesh);
  263. UNITY_TRANSFER_INSTANCE_ID(inputMesh, outputPackedVaryingsMeshToPS);
  264.  
  265. outputPackedVaryingsMeshToPS.ase_texcoord = float4(inputMesh.positionOS,0);
  266. inputMesh.positionOS.xyz += float3( 0, 0, 0 ) ;
  267. inputMesh.normalOS = inputMesh.normalOS ;
  268.  
  269. float3 positionRWS = TransformObjectToWorld(inputMesh.positionOS);
  270. outputPackedVaryingsMeshToPS.positionCS = TransformWorldToHClip(positionRWS);
  271. return outputPackedVaryingsMeshToPS;
  272. }
  273.  
  274. float4 Frag(PackedVaryingsMeshToPS packedInput) : SV_Target
  275. {
  276.  
  277. FragInputs input;
  278. ZERO_INITIALIZE(FragInputs, input);
  279. input.worldToTangent = k_identity3x3;
  280. input.positionSS = packedInput.positionCS;
  281.  
  282. PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS);
  283.  
  284. float3 V = float3(1.0, 1.0, 1.0);
  285.  
  286. SurfaceData surfaceData;
  287. BuiltinData builtinData;
  288. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  289.  
  290. surfaceDescription.Color = mul( UNITY_MATRIX_MVP, float4( packedInput.ase_texcoord.xyz , 0.0 ) ).xyz;
  291. surfaceDescription.Alpha = 1;
  292. surfaceDescription.AlphaClipThreshold = 0;
  293.  
  294. GetSurfaceAndBuiltinData(surfaceDescription, input, V, posInput, surfaceData, builtinData);
  295.  
  296. BSDFData bsdfData = ConvertSurfaceDataToBSDFData(input.positionSS.xy, surfaceData);
  297.  
  298. float4 outColor = ApplyBlendMode(bsdfData.color + builtinData.emissiveColor, builtinData.opacity);
  299. outColor = EvaluateAtmosphericScattering(posInput, V, outColor);
  300.  
  301. return outColor;
  302. }
  303.  
  304. ENDHLSL
  305. }
  306.  
  307.  
  308. Pass
  309. {
  310.  
  311. Name "ShadowCaster"
  312. Tags { "LightMode"="ShadowCaster" }
  313.  
  314. ZClip [_ZClip]
  315. ColorMask 0
  316.  
  317. HLSLPROGRAM
  318.  
  319. #pragma instancing_options renderinglayer
  320. #pragma multi_compile _ LOD_FADE_CROSSFADE
  321.  
  322. #pragma vertex Vert
  323. #pragma fragment Frag
  324.  
  325.  
  326.  
  327. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  328. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Wind.hlsl"
  329.  
  330. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
  331.  
  332. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
  333. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
  334.  
  335. #define SHADERPASS SHADERPASS_SHADOWS
  336. #define USE_LEGACY_UNITY_MATRIX_VARIABLES
  337. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
  338. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
  339. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
  340. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
  341. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
  342. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
  343.  
  344.  
  345. struct AttributesMesh
  346. {
  347. float3 positionOS : POSITION;
  348. float3 normalOS : NORMAL;
  349.  
  350. #if UNITY_ANY_INSTANCING_ENABLED
  351. uint instanceID : INSTANCEID_SEMANTIC;
  352. #endif
  353. };
  354.  
  355. struct PackedVaryingsMeshToPS
  356. {
  357. float4 positionCS : SV_Position;
  358.  
  359. #if UNITY_ANY_INSTANCING_ENABLED
  360. uint instanceID : INSTANCEID_SEMANTIC;
  361. #endif
  362. };
  363.  
  364. CBUFFER_START(UnityPerMaterial)
  365. CBUFFER_END
  366.  
  367.  
  368. struct SurfaceDescription
  369. {
  370. float Alpha;
  371. float AlphaClipThreshold;
  372. };
  373.  
  374.  
  375. void BuildSurfaceData(FragInputs fragInputs, SurfaceDescription surfaceDescription, float3 V, out SurfaceData surfaceData)
  376. {
  377. ZERO_INITIALIZE(SurfaceData, surfaceData);
  378. surfaceData.ambientOcclusion = 1.0f;
  379. surfaceData.subsurfaceMask = 1.0f;
  380. surfaceData.materialFeatures = MATERIALFEATUREFLAGS_LIT_STANDARD;
  381. #ifdef _MATERIAL_FEATURE_SPECULAR_COLOR
  382. surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_LIT_SPECULAR_COLOR;
  383. #endif
  384. float3 normalTS = float3(0.0f, 0.0f, 1.0f);
  385. GetNormalWS(fragInputs, normalTS, surfaceData.normalWS);
  386. surfaceData.tangentWS = normalize(fragInputs.worldToTangent[0].xyz); // The tangent is not normalize in worldToTangent for mikkt. TODO: Check if it expected that we normalize with Morten. Tag: SURFACE_GRADIENT
  387. surfaceData.tangentWS = Orthonormalize(surfaceData.tangentWS, surfaceData.normalWS);
  388. surfaceData.anisotropy = 0;
  389. surfaceData.coatMask = 0.0f;
  390. surfaceData.iridescenceThickness = 0.0;
  391. surfaceData.iridescenceMask = 1.0;
  392. surfaceData.ior = 1.0;
  393. surfaceData.transmittanceColor = float3(1.0, 1.0, 1.0);
  394. surfaceData.atDistance = 1000000.0;
  395. surfaceData.transmittanceMask = 0.0;
  396. surfaceData.specularOcclusion = 1.0;
  397. #if defined(_BENTNORMALMAP) && defined(_ENABLESPECULAROCCLUSION)
  398. // If we have bent normal and ambient occlusion, process a specular occlusion
  399. surfaceData.specularOcclusion = GetSpecularOcclusionFromBentAO(V, bentNormalWS, surfaceData);
  400. #elif defined(_MASKMAP)
  401. surfaceData.specularOcclusion = GetSpecularOcclusionFromAmbientOcclusion(NdotV, surfaceData.ambientOcclusion, PerceptualSmoothnessToRoughness(surfaceData.perceptualSmoothness));
  402. #endif
  403. }
  404.  
  405. void GetSurfaceAndBuiltinData(SurfaceDescription surfaceDescription, FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData)
  406. {
  407. #if _ALPHATEST_ON
  408. DoAlphaTest(surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold);
  409. #endif
  410. DoAlphaTest(surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold);
  411.  
  412. BuildSurfaceData(fragInputs, surfaceDescription, V, surfaceData);
  413.  
  414. InitBuiltinData(surfaceDescription.Alpha, surfaceData.normalWS, -fragInputs.worldToTangent[2], fragInputs.positionRWS, fragInputs.texCoord1, fragInputs.texCoord2, builtinData);
  415. builtinData.distortion = float2(0.0, 0.0);
  416. builtinData.distortionBlur = 0.0;
  417. builtinData.depthOffset = 0.0;
  418.  
  419. PostInitBuiltinData(V, posInput, surfaceData, builtinData);
  420. }
  421.  
  422. PackedVaryingsMeshToPS Vert(AttributesMesh inputMesh )
  423. {
  424. PackedVaryingsMeshToPS outputPackedVaryingsMeshToPS;
  425.  
  426. UNITY_SETUP_INSTANCE_ID(inputMesh);
  427. UNITY_TRANSFER_INSTANCE_ID(inputMesh, outputPackedVaryingsMeshToPS);
  428.  
  429.  
  430. inputMesh.positionOS.xyz += float3( 0, 0, 0 ) ;
  431. inputMesh.normalOS = inputMesh.normalOS ;
  432.  
  433. float3 positionRWS = TransformObjectToWorld(inputMesh.positionOS);
  434. outputPackedVaryingsMeshToPS.positionCS = TransformWorldToHClip(positionRWS);
  435.  
  436. return outputPackedVaryingsMeshToPS;
  437. }
  438.  
  439. void Frag( PackedVaryingsMeshToPS packedInput
  440. #ifdef WRITE_NORMAL_BUFFER
  441. , out float4 outNormalBuffer : SV_Target0
  442. #ifdef WRITE_MSAA_DEPTH
  443. , out float1 depthColor : SV_Target1
  444. #endif
  445. #else
  446. , out float4 outColor : SV_Target0
  447. #endif
  448.  
  449. #ifdef _DEPTHOFFSET_ON
  450. , out float outputDepth : SV_Depth
  451. #endif
  452.  
  453. )
  454. {
  455. FragInputs input;
  456. ZERO_INITIALIZE(FragInputs, input);
  457. input.worldToTangent = k_identity3x3;
  458. input.positionSS = packedInput.positionCS; // input.positionCS is SV_Position
  459.  
  460. // input.positionSS is SV_Position
  461. PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS);
  462.  
  463. float3 V = float3(1.0, 1.0, 1.0); // Avoid the division by 0
  464.  
  465. SurfaceData surfaceData;
  466. BuiltinData builtinData;
  467. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  468.  
  469. surfaceDescription.Alpha = 1;
  470. surfaceDescription.AlphaClipThreshold = 0;
  471.  
  472. GetSurfaceAndBuiltinData(surfaceDescription,input, V, posInput, surfaceData, builtinData);
  473.  
  474. #ifdef _DEPTHOFFSET_ON
  475. outputDepth = posInput.deviceDepth;
  476. #endif
  477.  
  478. #ifdef WRITE_NORMAL_BUFFER
  479. EncodeIntoNormalBuffer(ConvertSurfaceDataToNormalData(surfaceData), posInput.positionSS, outNormalBuffer);
  480. #ifdef WRITE_MSAA_DEPTH
  481. // In case we are rendering in MSAA, reading the an MSAA depth buffer is way too expensive. To avoid that, we export the depth to a color buffer
  482. depthColor = packedInput.positionCS.z;
  483. #endif
  484. #elif defined(SCENESELECTIONPASS)
  485. // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly
  486. outColor = float4(_ObjectId, _PassValue, 1.0, 1.0);
  487. #else
  488. outColor = float4(0.0, 0.0, 0.0, 0.0);
  489. #endif
  490. }
  491.  
  492. ENDHLSL
  493. }
  494.  
  495.  
  496. Pass
  497. {
  498.  
  499. Name "META"
  500. Tags { "LightMode"="Meta" }
  501.  
  502. Cull Off
  503.  
  504. HLSLPROGRAM
  505.  
  506. #pragma vertex Vert
  507. #pragma fragment Frag
  508.  
  509.  
  510.  
  511. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  512. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Wind.hlsl"
  513.  
  514. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"
  515. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
  516.  
  517. #define SHADERPASS SHADERPASS_LIGHT_TRANSPORT
  518.  
  519. #define ATTRIBUTES_NEED_NORMAL
  520. #define ATTRIBUTES_NEED_TANGENT
  521. #define ATTRIBUTES_NEED_TEXCOORD0
  522. #define ATTRIBUTES_NEED_TEXCOORD1
  523. #define ATTRIBUTES_NEED_TEXCOORD2
  524. #define ATTRIBUTES_NEED_COLOR
  525.  
  526.  
  527. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
  528. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
  529. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Unlit/Unlit.hlsl"
  530. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/BuiltinUtilities.hlsl"
  531. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl"
  532. #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderGraphFunctions.hlsl"
  533.  
  534. struct AttributesMesh
  535. {
  536. float3 positionOS : POSITION;
  537. float3 normalOS : NORMAL;
  538. float4 tangentOS : TANGENT;
  539. float4 uv0 : TEXCOORD0;
  540. float4 uv1 : TEXCOORD1;
  541. float4 uv2 : TEXCOORD2;
  542. float4 color : COLOR;
  543.  
  544. #if UNITY_ANY_INSTANCING_ENABLED
  545. uint instanceID : INSTANCEID_SEMANTIC;
  546. #endif
  547. };
  548.  
  549. struct PackedVaryingsMeshToPS
  550. {
  551. float4 positionCS : SV_Position;
  552.  
  553. #if UNITY_ANY_INSTANCING_ENABLED
  554. uint instanceID : INSTANCEID_SEMANTIC;
  555. #endif
  556. };
  557.  
  558. CBUFFER_START(UnityPerMaterial)
  559. CBUFFER_END
  560.  
  561. struct SurfaceDescription
  562. {
  563. float3 Color;
  564. float Alpha;
  565. float AlphaClipThreshold;
  566. };
  567.  
  568. void BuildSurfaceData(FragInputs fragInputs, SurfaceDescription surfaceDescription, float3 V, out SurfaceData surfaceData)
  569. {
  570. ZERO_INITIALIZE(SurfaceData, surfaceData);
  571. surfaceData.color = surfaceDescription.Color;
  572. }
  573.  
  574. void GetSurfaceAndBuiltinData(SurfaceDescription surfaceDescription, FragInputs fragInputs, float3 V, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData)
  575. {
  576.  
  577. #if _ALPHATEST_ON
  578. DoAlphaTest(surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold);
  579. #endif
  580.  
  581. BuildSurfaceData(fragInputs, surfaceDescription, V, surfaceData);
  582. ZERO_INITIALIZE(BuiltinData, builtinData);
  583. builtinData.opacity = surfaceDescription.Alpha;
  584. builtinData.distortion = float2(0.0, 0.0);
  585. builtinData.distortionBlur = 0.0;
  586. }
  587.  
  588. CBUFFER_START(UnityMetaPass)
  589. bool4 unity_MetaVertexControl;
  590. bool4 unity_MetaFragmentControl;
  591. CBUFFER_END
  592.  
  593. float unity_OneOverOutputBoost;
  594. float unity_MaxOutputValue;
  595.  
  596. PackedVaryingsMeshToPS Vert(AttributesMesh inputMesh )
  597. {
  598. PackedVaryingsMeshToPS outputPackedVaryingsMeshToPS;
  599.  
  600. UNITY_SETUP_INSTANCE_ID(inputMesh);
  601. UNITY_TRANSFER_INSTANCE_ID(inputMesh, outputPackedVaryingsMeshToPS);
  602.  
  603.  
  604. inputMesh.positionOS.xyz += float3( 0, 0, 0 ) ;
  605. inputMesh.normalOS = inputMesh.normalOS ;
  606.  
  607. float2 uv;
  608.  
  609. if (unity_MetaVertexControl.x)
  610. {
  611. uv = inputMesh.uv1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
  612. }
  613. else if (unity_MetaVertexControl.y)
  614. {
  615. uv = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw;
  616. }
  617.  
  618. outputPackedVaryingsMeshToPS.positionCS = float4(uv * 2.0 - 1.0, inputMesh.positionOS.z > 0 ? 1.0e-4 : 0.0, 1.0);
  619. return outputPackedVaryingsMeshToPS;
  620. }
  621.  
  622. float4 Frag(PackedVaryingsMeshToPS packedInput) : SV_Target
  623. {
  624. FragInputs input;
  625. ZERO_INITIALIZE(FragInputs, input);
  626. input.worldToTangent = k_identity3x3;
  627. input.positionSS = packedInput.positionCS;
  628.  
  629.  
  630. PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS);
  631.  
  632. float3 V = float3(1.0, 1.0, 1.0); // Avoid the division by 0
  633.  
  634. SurfaceData surfaceData;
  635. BuiltinData builtinData;
  636. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  637.  
  638. surfaceDescription.Color = float3( 1, 1, 1 );
  639. surfaceDescription.Alpha = 1;
  640. surfaceDescription.AlphaClipThreshold = 0;
  641.  
  642. GetSurfaceAndBuiltinData(surfaceDescription,input, V, posInput, surfaceData, builtinData);
  643. BSDFData bsdfData = ConvertSurfaceDataToBSDFData(input.positionSS.xy, surfaceData);
  644. LightTransportData lightTransportData = GetLightTransportData(surfaceData, builtinData, bsdfData);
  645. float4 res = float4(0.0, 0.0, 0.0, 1.0);
  646. if (unity_MetaFragmentControl.x)
  647. {
  648. res.rgb = clamp(pow(abs(lightTransportData.diffuseColor), saturate(unity_OneOverOutputBoost)), 0, unity_MaxOutputValue);
  649. }
  650.  
  651. if (unity_MetaFragmentControl.y)
  652. {
  653. res.rgb = lightTransportData.emissiveColor;
  654. }
  655.  
  656. return res;
  657. }
  658.  
  659. ENDHLSL
  660. }
  661. }
  662. FallBack "Hidden/InternalErrorShader"
  663. CustomEditor "ASEMaterialInspector"
  664.  
  665.  
  666. }
  667. /*ASEBEGIN
  668. Version=16103
  669. 0;588;1803;772;662.7166;642.1201;1;True;True
  670. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;140;282.6934,-373.8443;Float;False;2;2;0;FLOAT4x4;0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1;False;1;FLOAT3;0,0,0;False;1;FLOAT3;0
  671. Node;AmplifyShaderEditor.TransformVariables;134;-168.3892,-371.9722;Float;False;UNITY_MATRIX_MVP;0;1;FLOAT4x4;0
  672. Node;AmplifyShaderEditor.PosVertexDataNode;139;-72.30664,-271.8443;Float;False;0;0;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  673. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;129;1018.243,-1103.579;Float;False;False;2;Float;ASEMaterialInspector;0;3;Hidden/Templates/HDSRPUnlit;dfe2f27ac20b08c469b2f95c236be0c3;0;2;ShadowCaster;1;True;1;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;False;False;True;0;False;-1;False;False;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;3;RenderPipeline=HDRenderPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;5;0;False;False;False;False;True;False;False;False;False;0;False;-1;False;False;False;False;True;1;LightMode=ShadowCaster;False;0;;0;0;Standard;0;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;0
  674. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;127;1018.243,-1103.579;Float;False;False;2;Float;ASEMaterialInspector;0;3;Hidden/Templates/HDSRPUnlit;dfe2f27ac20b08c469b2f95c236be0c3;0;0;Depth prepass;0;True;1;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;False;False;True;0;False;-1;False;False;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;3;RenderPipeline=HDRenderPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;5;0;False;False;False;False;True;False;False;False;False;0;False;-1;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;True;1;LightMode=DepthForwardOnly;False;0;;0;0;Standard;0;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;0
  675. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;130;1018.243,-1103.579;Float;False;False;2;Float;ASEMaterialInspector;0;3;Hidden/Templates/HDSRPUnlit;dfe2f27ac20b08c469b2f95c236be0c3;0;3;META;1;True;1;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;False;False;True;0;False;-1;False;False;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;3;RenderPipeline=HDRenderPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;5;0;False;False;False;True;2;False;-1;False;False;False;False;False;True;1;LightMode=Meta;False;0;;0;0;Standard;0;5;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;0
  676. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;128;529.8132,-373.256;Float;False;True;2;Float;ASEMaterialInspector;0;3;HDRenderPipeline/_Custom/Test1;dfe2f27ac20b08c469b2f95c236be0c3;0;1;Forward Unlit;5;True;6;2;False;-1;0;False;-1;0;1;False;-1;0;False;-1;False;False;True;0;False;-1;False;False;True;2;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;3;RenderPipeline=HDRenderPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;5;0;False;False;False;False;True;True;True;True;True;0;False;-1;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;True;1;LightMode=ForwardOnly;False;0;;0;0;Standard;0;5;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;0
  677. WireConnection;140;0;134;0
  678. WireConnection;140;1;139;0
  679. WireConnection;128;0;140;0
  680. ASEEND*/
  681. //CHKSM=C3ECB7E35DD89F0E5E0630FE58EE777F06A40211
Add Comment
Please, Sign In to add comment