2

我正在尝试创建一个轮廓着色器,它有一个编辑过的轮廓。目前它看起来像这样。 在此处输入图像描述

Shader "test/SimpleOutline" {

 Properties {
  _MainTex ("Texture", 2D) = "white" {}
  _OutlineColor ("Outline Color", Color) = (0,0,0,1)
  _Outline ("Outline Width", Range (.002, 1.1)) = .005
}



 SubShader {
      Tags { "Queue"="Transparent" }
      ZWrite off
      CGPROGRAM
          #pragma surface surf Lambert vertex:vert
          struct Input {
          float3 viewDir;
          float2 uv_MainTex;
      };
      float _Outline;
      float4 _OutlineColor;
      void vert (inout appdata_full v) {

          v.vertex.xyz += v.normal * _Outline;

      }
      sampler2D _MainTex;

      void surf (Input IN, inout SurfaceOutput o) 
      {
        o.Emission = float4(0, 1, 0,0);
      }
  ENDCG

  ZWrite on

  CGPROGRAM
      #pragma surface surf Lambert
      struct Input {
          float2 uv_MainTex;
      };

      sampler2D _MainTex;
      void surf (Input IN, inout SurfaceOutput o) {
          o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
      }
  ENDCG

} 
Fallback "Diffuse"

}

我想要这样。

在此处输入图像描述

它应该与实际对象透明,以便您可以看到背景。完全环绕每个对象并拱起。喜欢这个喇叭吗?

在此处输入图像描述

有没有人对如何最好地实现这一点提出建议?

4

1 回答 1

0

嗯,有趣的问题。
1.如何勾勒出距离物体的效果?
我建议模板
Pass1:在没有模板
的情况下绘制网格 Pass2:使用 MaskColor 0 绘制网格,模板写入一些值
Pass3:以纯色绘制轮廓网格,启用模板,比上一次传递更大的“比例”

那样的。

  1. 弯曲的图像。感觉应该使用此视频中的技术
    https://www.youtube.com/watch?v=xH5uUfeB2Go尝试在 Pass3 中应用它。

PS如果我有时间的话,我会在接下来的几天里自己尝试这个效果。

于 2020-05-06T17:33:21.710 回答