• 中文
  • unity3d urp下外轮廓描边没有了么?

Related Discussions
...

urp管线下,外轮廓描边没了,变成所有面片都描边

有轮廓功能,但它需要是一个单独的着色器/材质,因为URP只允许一个渲染通道。该着色器可以在材质中选择为"Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly"

你可以通过 "RenderExistingMesh "示例组件看到它在示例场景中的使用。
Packages/Spine Universal RP Shaders/Examples/Outline Shaders URP

也有其他方法在对象上添加额外的渲染通道,请看这里的视频(可惜有点长)。
https://youtu.be/ZPQdm1T7aRs?t=1470


There is outline functionality, but it needs to be a separate shader / material, because URP only allows a single render pass. The shader can be selected in the Material as "Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly".

You can see it in use in the example scene via the RenderExistingMesh example component:
Packages/Spine Universal RP Shaders/Examples/Outline Shaders URP.

There are also alternative ways of adding additional render passes at objects, please see this video here (it is a bit long unfortunately):
https://youtu.be/ZPQdm1T7aRs?t=1470

其实是URP是支持多pass的,第二个pass需要添加 "LightMode" = "SRPDefaultUnlit", 我已经弄出来了,但是spine shader有很多参数需要更改编辑器,希望官方搞定。上传了附件 替换官方的 Spine-Sprite-URP-2D.shader

Shader "Universal Render Pipeline/2D/Spine/Sprite-outline"
{
   Properties
   {
      _MainTex("Main Texture", 2D) = "white" {}
      _MaskTex("Mask", 2D) = "white" {}
      _Color("Color", Color) = (1,1,1,1)

  _BumpScale("Scale", Float) = 1.0
  _BumpMap("Normal Map", 2D) = "bump" {}

  [MaterialToggle] PixelSnap("Pixel snap", Float) = 0

  _EmissionColor("Color", Color) = (0,0,0,0)
  _EmissionMap("Emission", 2D) = "white" {}
  _EmissionPower("Emission Power", Float) = 2.0

  _FixedNormal("Fixed Normal", Vector) = (0,0,1,1)
  _ZWrite("Depth Write", Float) = 0.0
  _Cutoff("Depth alpha cutoff", Range(0,1)) = 0.0
  _ShadowAlphaCutoff("Shadow alpha cutoff", Range(0,1)) = 0.1
  _CustomRenderQueue("Custom Render Queue", Float) = 0.0

  _OverlayColor("Overlay Color", Color) = (0,0,0,0)
  _Hue("Hue", Range(-0.5,0.5)) = 0.0
  _Saturation("Saturation", Range(0,2)) = 1.0
  _Brightness("Brightness", Range(0,2)) = 1.0

  _RimPower("Rim Power", Float) = 2.0
  _RimColor("Rim Color", Color) = (1,1,1,1)

  _BlendTex("Blend Texture", 2D) = "white" {}
  _BlendAmount("Blend", Range(0,1)) = 0.0

  [HideInInspector] _SrcBlend("__src", Float) = 1.0
  [HideInInspector] _DstBlend("__dst", Float) = 0.0
  [HideInInspector] _RenderQueue("__queue", Float) = 0.0
  [HideInInspector] _Cull("__cull", Float) = 0.0
  [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0
  [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Compare", Float) = 0.0 // Disabled stencil test by default


  // Outline properties are drawn via custom editor.
  [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0
  [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1)
  [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024
  [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25
  [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0
  [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1
  [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0
   }

   HLSLINCLUDE
   #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
   ENDHLSL

   SubShader
   {
      // UniversalPipeline tag is required. If Universal render pipeline is not set in the graphics settings
      // this Subshader will fail.
      Pass
      {
         Tags {"LightMode" = "Universal2D" "Queue" = "Transparent" "RenderType" = "Sprite" "RenderPipeline" = "UniversalPipeline" "IgnoreProjector" = "True" "AlphaDepth" = "False"  "CanUseSpriteAtlas" = "True" }
         
Stencil { Ref[_StencilRef] Comp[_StencilComp] Pass Keep } Blend[_SrcBlend][_DstBlend] ZWrite[_ZWrite] Cull[_Cull] HLSLPROGRAM // Required to compile gles 2.0 with standard srp library #pragma prefer_hlslcc gles #pragma exclude_renderers d3d11_9x #pragma multi_compile USE_SHAPE_LIGHT_TYPE_0 __ #pragma multi_compile USE_SHAPE_LIGHT_TYPE_1 __ #pragma multi_compile USE_SHAPE_LIGHT_TYPE_2 __ #pragma multi_compile USE_SHAPE_LIGHT_TYPE_3 __ // --- // Material Keywords #pragma shader_feature _ _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON _ADDITIVEBLEND _ADDITIVEBLEND_SOFT _MULTIPLYBLEND _MULTIPLYBLEND_X2 #pragma shader_feature _ _FIXED_NORMALS_VIEWSPACE _FIXED_NORMALS_VIEWSPACE_BACKFACE _FIXED_NORMALS_MODELSPACE _FIXED_NORMALS_MODELSPACE_BACKFACE #pragma shader_feature _NORMALMAP #pragma shader_feature _ALPHA_CLIP #pragma shader_feature _EMISSION #pragma shader_feature _COLOR_ADJUST #pragma shader_feature _RIM_LIGHTING #pragma shader_feature _TEXTURE_BLEND #pragma fragmentoption ARB_precision_hint_fastest #pragma multi_compile _ PIXELSNAP_ON #pragma multi_compile _ ETC1_EXTERNAL_ALPHA // --- // GPU Instancing #pragma multi_compile_instancing // --- // Spine related keywords #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT #pragma vertex CombinedShapeLightVertex #pragma fragment CombinedShapeLightFragment #define USE_URP #define fixed4 half4 #define fixed3 half3 #define fixed half #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/LightingUtility.hlsl" #include "../Include/Spine-Input-Sprite-URP.hlsl" #include "Include/Spine-Sprite-StandardPass-URP-2D.hlsl" ENDHLSL } // Pass // { // Tags { "LightMode" = "NormalsRendering"} // Blend SrcAlpha OneMinusSrcAlpha // Cull[_Cull] // ZWrite[_ZWrite] // HLSLPROGRAM // #pragma prefer_hlslcc gles // #pragma vertex NormalsRenderingVertex // #pragma fragment NormalsRenderingFragment // // --- // // Material Keywords // #pragma shader_feature _ _FIXED_NORMALS_VIEWSPACE _FIXED_NORMALS_VIEWSPACE_BACKFACE _FIXED_NORMALS_MODELSPACE _FIXED_NORMALS_MODELSPACE_BACKFACE // #pragma shader_feature _NORMALMAP // #pragma shader_feature _ALPHA_CLIP // #pragma multi_compile _ PIXELSNAP_ON // #pragma multi_compile _ ETC1_EXTERNAL_ALPHA // // --- // // GPU Instancing // #pragma multi_compile_instancing // #define USE_URP // #define fixed4 half4 // #define fixed3 half3 // #define fixed half // #include "../Include/Spine-Input-Sprite-URP.hlsl" // #include "Include/Spine-Sprite-NormalsPass-URP-2D.hlsl" // ENDHLSL // } //UsePass "Universal Render Pipeline/2D/Spine/Skeleton Lit/UNLIT" Pass { Tags {"LightMode" = "SRPDefaultUnlit" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } LOD 100 Cull Off ZWrite Off Blend One OneMinusSrcAlpha Stencil { Ref[_StencilRef] Comp[_StencilComp] Pass Keep } HLSLPROGRAM // Required to compile gles 2.0 with standard srp library #pragma prefer_hlslcc gles #pragma exclude_renderers d3d11_9x // --- // GPU Instancing #pragma multi_compile_instancing #pragma vertex vertOutline #pragma fragment fragOutline #pragma shader_feature _ _USE8NEIGHBOURHOOD_ON #define USE_URP #define fixed4 half4 #define fixed3 half3 #define fixed half #include "../Include/Spine-Input-Outline-URP.hlsl" #include "../Include/Spine-Outline-Pass-URP.hlsl" ENDHLSL } } FallBack "Universal Render Pipeline/2D/Spine/Skeleton Lit" CustomEditor "SpineSpriteShaderGUI" }

感谢您提供的信息,似乎最新版本的URP for Unity 2020.2已添加了此渲染过程,或者在此之前未对其进行记录。

如果它也适用于以前的URP版本,我们将进行一些测试,否则我们将需要为这些较新的多遍URP版本提供其他的URP Spine着色器软件包版本。

由于针对Spine 4.0进行了大量的改编工作,因此我们需要一些时间才能使用此功能。 同时,请仅使用您的着色器版本。


Thanks for the info, it seems that the latest versions of URP for Unity 2020.2 have added this render pass, or they have not documented it before that.

We will perform some tests if it also works with previous versions of URP, otherwise we will need to offer an additional URP Spine shader package version for these newer multi-pass URP versions.

Due to a lot of work on adaptations for Spine 4.0 it will however take some time until we get to this feature. In the meantime please simply use your version of the shader.

我是用的版本是2019.4

感谢您的信息。 然后,似乎文档只是缺少此信息。 您能否也让我们知道您正在使用哪个版本的Unity'URP'软件包?


Thanks for the information. Then it seems that the documentation was just lacking this information. Could you please also let us know which version of Unity's URP package you are using?

urp 7.5


这一块东西 得看源码,unity文档一直很差劲

13 dana kasnije

抱歉,您的回复很晚,感谢您提供的信息!

我只是注意到在我以前的帖子中缺少问题单的URL:
https://github.com/EsotericSoftware/spine-runtimes/issues/1824
实施该功能后,我们会通知您。


Sorry for the late reply and thanks for the information!

I just noticed that the url to the issue ticket was missing in my previous postings:
https://github.com/EsotericSoftware/spine-runtimes/issues/1824
We will let you know once the feature is implemented.