Kojote Geschrieben 11. Mai 2021 Melden Share Geschrieben 11. Mai 2021 Hi! Zur Abwechslung brauche ich mal Hilfe beim Standard-Shader. Diesen nutze ich bei dem Großteil meiner Objekte in der Landschaft. Um nun Vegetation Studio Pro Instant Indirect zu nutzen, braucht der Standard-Shader ein kleines Update in jedem Pass: #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" Ich habe mir nun von Unity das Shader Build geladen und den Namen des Shaders geändert, zudem überall passend die drei Zeilen inplementiert. Shader wurde compiliert. Frage nun von mir, funktioniert dies so? Ich habe jetzt zwiespältiges gelesen. Die einen meinen, einfach Copy+Paste+Namensänderung und der Shader funktioniert, sehe ich auch bei mir. Andere meinen, es würde zu internen Fehlern führen. Hat da jemand Erfahrung? So sieht der Shader nun bei mir aus: // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) // // Modified by Coyote to support Instant Indirect from Vegetation Studio Pro. Shader "Custom/Standard_Instant_Indirect" { Properties { _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo", 2D) = "white" {} _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5 _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0 [Enum(Metallic Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0 [Gamma] _Metallic("Metallic", Range(0.0, 1.0)) = 0.0 _MetallicGlossMap("Metallic", 2D) = "white" {} [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0 [ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0 _BumpScale("Scale", Float) = 1.0 [Normal] _BumpMap("Normal Map", 2D) = "bump" {} _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02 _ParallaxMap ("Height Map", 2D) = "black" {} _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0 _OcclusionMap("Occlusion", 2D) = "white" {} _EmissionColor("Color", Color) = (0,0,0) _EmissionMap("Emission", 2D) = "white" {} _DetailMask("Detail Mask", 2D) = "white" {} _DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {} _DetailNormalMapScale("Scale", Float) = 1.0 [Normal] _DetailNormalMap("Normal Map", 2D) = "bump" {} [Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0 // Blending state [HideInInspector] _Mode ("__mode", Float) = 0.0 [HideInInspector] _SrcBlend ("__src", Float) = 1.0 [HideInInspector] _DstBlend ("__dst", Float) = 0.0 [HideInInspector] _ZWrite ("__zw", Float) = 1.0 } CGINCLUDE #define UNITY_SETUP_BRDF_INPUT MetallicSetup ENDCG SubShader { Tags { "RenderType"="Opaque" "PerformanceChecks"="False" } LOD 300 // ------------------------------------------------------------------ // Base forward pass (directional light, emission, lightmaps, ...) Pass { Name "FORWARD" Tags { "LightMode" = "ForwardBase" } Blend [_SrcBlend] [_DstBlend] ZWrite [_ZWrite] CGPROGRAM #pragma target 3.0 // ------------------------------------- #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_fragment _EMISSION #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _DETAIL_MULX2 #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _PARALLAXMAP #pragma multi_compile_fwdbase #pragma multi_compile_fog #pragma multi_compile_instancing // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes. //#pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex vertBase #pragma fragment fragBase #include "UnityStandardCoreForward.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Additive forward pass (one light per pass) Pass { Name "FORWARD_DELTA" Tags { "LightMode" = "ForwardAdd" } Blend [_SrcBlend] One Fog { Color (0,0,0,0) } // in additive pass fog should be black ZWrite Off ZTest LEqual CGPROGRAM #pragma target 3.0 // ------------------------------------- #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _DETAIL_MULX2 #pragma shader_feature_local _PARALLAXMAP #pragma multi_compile_fwdadd_fullshadows #pragma multi_compile_fog // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes. //#pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex vertAdd #pragma fragment fragAdd #include "UnityStandardCoreForward.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Shadow rendering pass Pass { Name "ShadowCaster" Tags { "LightMode" = "ShadowCaster" } ZWrite On ZTest LEqual CGPROGRAM #pragma target 3.0 // ------------------------------------- #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _PARALLAXMAP #pragma multi_compile_shadowcaster #pragma multi_compile_instancing // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes. //#pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex vertShadowCaster #pragma fragment fragShadowCaster #include "UnityStandardShadow.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Deferred pass Pass { Name "DEFERRED" Tags { "LightMode" = "Deferred" } CGPROGRAM #pragma target 3.0 #pragma exclude_renderers nomrt // ------------------------------------- #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_fragment _EMISSION #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _DETAIL_MULX2 #pragma shader_feature_local _PARALLAXMAP #pragma multi_compile_prepassfinal #pragma multi_compile_instancing // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes. //#pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex vertDeferred #pragma fragment fragDeferred #include "UnityStandardCore.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Extracts information for lightmapping, GI (emission, albedo, ...) // This pass it not used during regular rendering. Pass { Name "META" Tags { "LightMode"="Meta" } Cull Off CGPROGRAM #pragma vertex vert_meta #pragma fragment frag_meta #pragma shader_feature_fragment _EMISSION #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _DETAIL_MULX2 #pragma shader_feature EDITOR_VISUALIZATION #include "UnityStandardMeta.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } } SubShader { Tags { "RenderType"="Opaque" "PerformanceChecks"="False" } LOD 150 // ------------------------------------------------------------------ // Base forward pass (directional light, emission, lightmaps, ...) Pass { Name "FORWARD" Tags { "LightMode" = "ForwardBase" } Blend [_SrcBlend] [_DstBlend] ZWrite [_ZWrite] CGPROGRAM #pragma target 2.0 #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_fragment _EMISSION #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _GLOSSYREFLECTIONS_OFF // SM2.0: NOT SUPPORTED shader_feature_local _DETAIL_MULX2 // SM2.0: NOT SUPPORTED shader_feature_local _PARALLAXMAP #pragma skip_variants SHADOWS_SOFT DIRLIGHTMAP_COMBINED #pragma multi_compile_fwdbase #pragma multi_compile_fog #pragma vertex vertBase #pragma fragment fragBase #include "UnityStandardCoreForward.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Additive forward pass (one light per pass) Pass { Name "FORWARD_DELTA" Tags { "LightMode" = "ForwardAdd" } Blend [_SrcBlend] One Fog { Color (0,0,0,0) } // in additive pass fog should be black ZWrite Off ZTest LEqual CGPROGRAM #pragma target 2.0 #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _DETAIL_MULX2 // SM2.0: NOT SUPPORTED shader_feature_local _PARALLAXMAP #pragma skip_variants SHADOWS_SOFT #pragma multi_compile_fwdadd_fullshadows #pragma multi_compile_fog #pragma vertex vertAdd #pragma fragment fragAdd #include "UnityStandardCoreForward.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Shadow rendering pass Pass { Name "ShadowCaster" Tags { "LightMode" = "ShadowCaster" } ZWrite On ZTest LEqual CGPROGRAM #pragma target 2.0 #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma skip_variants SHADOWS_SOFT #pragma multi_compile_shadowcaster #pragma vertex vertShadowCaster #pragma fragment fragShadowCaster #include "UnityStandardShadow.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } // ------------------------------------------------------------------ // Extracts information for lightmapping, GI (emission, albedo, ...) // This pass it not used during regular rendering. Pass { Name "META" Tags { "LightMode"="Meta" } Cull Off CGPROGRAM #pragma vertex vert_meta #pragma fragment frag_meta #pragma shader_feature_fragment _EMISSION #pragma shader_feature_local _METALLICGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _DETAIL_MULX2 #pragma shader_feature EDITOR_VISUALIZATION #include "UnityStandardMeta.cginc" #pragma instancing_options procedural:setup #pragma multi_compile GPU_FRUSTUM_ON __ #include "VS_indirect.cginc" ENDCG } } FallBack "VertexLit" CustomEditor "StandardShaderGUI" } Grüße v. Kojote EDIT: Scheint nicht zu funktionieren, der Shader ansich funktioniert, jedoch bekomme ich aus anderen Stadern zich Fehlermeldungen. Liegt wahrscheintlich wie ich schon vermutete an den Keywords. Hat jemand ne andere Idee, was ich als Standardshader nutzen könnte? Brauche nicht umbedingt mehr Funktionen in diesem. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.