Shader "Renderers/#SCRIPTNAME#" { Properties { _Color("Color", Color) = (1,1,1,1) _ColorMap("ColorMap", 2D) = "white" {} // Transparency _AlphaCutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 } HLSLINCLUDE #pragma target 4.5 #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch // #pragma enable_d3d11_debug_symbols //enable GPU instancing support #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON ENDHLSL SubShader { Pass { Name "FirstPass" Tags { "LightMode" = "FirstPass" } Blend Off ZWrite Off ZTest LEqual Cull Back HLSLPROGRAM // Toggle the alpha test #define _ALPHATEST_ON // Toggle transparency // #define _SURFACE_TYPE_TRANSPARENT // Toggle fog on transparent #define _ENABLE_FOG_ON_TRANSPARENT // List all the attributes needed in your shader (will be passed to the vertex shader) // you can see the complete list of these attributes in VaryingMesh.hlsl #define ATTRIBUTES_NEED_TEXCOORD0 #define ATTRIBUTES_NEED_NORMAL #define ATTRIBUTES_NEED_TANGENT // List all the varyings needed in your fragment shader #define VARYINGS_NEED_TEXCOORD0 #define VARYINGS_NEED_TANGENT_TO_WORLD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassRenderers.hlsl" TEXTURE2D(_ColorMap); float4 _ColorMap_ST; float4 _Color; // If you need to modify the vertex datas, you can uncomment this code // Note: all the transformations here are done in object space // #define HAVE_MESH_MODIFICATION // AttributesMesh ApplyMeshModification(AttributesMesh input, float3 timeParameters) // { // input.positionOS += input.normalOS * 0.0001; // inflate a bit the mesh to avoid z-fight // return input; // } // Put the code to render the objects in your custom pass in this function void GetSurfaceAndBuiltinData(FragInputs fragInputs, float3 viewDirection, inout PositionInputs posInput, out SurfaceData surfaceData, out BuiltinData builtinData) { float2 colorMapUv = TRANSFORM_TEX(fragInputs.texCoord0.xy, _ColorMap); float4 result = SAMPLE_TEXTURE2D(_ColorMap, s_trilinear_clamp_sampler, colorMapUv) * _Color; float opacity = result.a; float3 color = result.rgb; #ifdef _ALPHATEST_ON DoAlphaTest(opacity, _AlphaCutoff); #endif // Write back the data to the output structures ZERO_INITIALIZE(BuiltinData, builtinData); // No call to InitBuiltinData as we don't have any lighting ZERO_INITIALIZE(SurfaceData, surfaceData); builtinData.opacity = opacity; builtinData.emissiveColor = float3(0, 0, 0); surfaceData.color = color; } #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForwardUnlit.hlsl" #pragma vertex Vert #pragma fragment Frag ENDHLSL } } }