Контурный шейдер с кривыми и прозрачностью - PullRequest
2 голосов
/ 06 мая 2020

Я пытаюсь создать шейдер контура, у которого есть отредактированный контур. На данный момент это выглядит так. enter image description here

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"

}

Я хочу вот так.

enter image description here

Он должен быть на некотором расстоянии от реального объекта. Прозрачный, чтобы вы могли видеть фон. Полностью обведите каждый объект и изогнитесь. Как этот рог?

enter image description here

Есть ли у кого-нибудь предложения, как лучше всего это реализовать?

1 Ответ

0 голосов
/ 06 мая 2020

Хм, интересный вопрос.
1. Как очертить эффект на расстоянии от объекта?
Предлагаю трафарет
Pass1: нарисуйте меня sh без трафарета
Pass2: нарисуйте меня sh с MaskColor 0 с трафаретом, записывающим какое-то значение
Pass3: рисовать контур меня sh в solid цвете с трафаретом, включенным с большим «масштабом», чем на предыдущем проходе

что-то вроде этого.

Искривленное изображение. Похоже, это нужно делать с помощью техник, как в этом видео
https://www.youtube.com/watch?v=xH5uUfeB2Go попробуйте применить его в Pass3.

PS Я попробую этот эффект сам в в ближайшие пару дней, если будет время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...