2016-07-23 2 views
2

я создаю IOS приложение в Unity game engine.Добавление цветения (свечение) эффект затенения (Единство игровой движок)

Я пытаюсь переписать мой шейдер так что материал, ведьма, используя его, дал Блум (Glow) Эффект (вроде Halo component).

Пример, как это должно выглядеть:

Bloom (Glow) effect

enter image description here

Я действительно искал ответ в Интернете, но не нашел ничего для работника или подходящих решение моей проблемы.

код моего шейдера:

Shader "Unlit" 
{ 
    Properties 
    { 
     _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} 
     _Color("Main Color", Color) = (1, 1, 1, 1) 
    } 
    SubShader 
    { 
     Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 
     LOD 100 
     Cull off 
     ZWrite on 
     Blend SrcAlpha OneMinusSrcAlpha 
     Pass 
     { 
      Lighting Off 
      SetTexture[_MainTex] 
      { 
       constantColor[_Color] 
       Combine texture * constant, texture * constant 
      } 
     } 
    } 
} 
+1

выбросов, и, таким образом, цветение количество приходит FROMTHE значение конечного пикселя значение цвета, которое обычно должно быть в диапазоне HDR. Попробуйте добавить свойство эмиссии, например. _Emission ("Emmisive Strength", Range (0.01,3.0)) = 1.0. Затем умножьте свой вывод на это свойство. – Absinthe

+0

Можете ли вы показать мне, как это должно быть сделано в моей шейдерной ведьме? Я добавляю к вопросу? – ARTAGE

+0

К сожалению, я не думаю, что все так просто. В настоящее время вы используете шейдерные программы. Чтобы управлять эмиссией, вам нужно будет переписать шейдер в качестве поверхностного шейдера вместо использования программ. См. Здесь в руководстве https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html и найдите «выброс», есть много примеров. Это говорит, что я довольно новичок в этом и приветствую другие комментарии. – Absinthe

ответ

4

Шейдер программа просто код, используемый для рисования треугольников на экране. Эффекты Bloom - совершенно другой зверь, and are screen-space calculations that are done after the geometry is drawn. Вы не получите эффект цветения, просто изменив шейдер объекта.

Проще говоря, с помощью шейдера вы не можете рисовать «вне линий», и здесь вам нужно изменить пиксели, которые находятся за пределами досягаемости объекта. Извините, но это просто не в возможностях шейдера.

Все еще, вы можете заставить его работать, реализуя сценарии Image Effect, например, единство built-in bloom effect. После добавления сценария в камеру и активации HDR-настройки камеры вы можете использовать специальный шейдер, который приведет к сиянию, но не раньше всего.

Как только вы правильно настроили эффект (и включите опцию HDR на камере), теперь вы можете использовать любой шейдер, который возвращает значения более 1 в пиксельном шейдере, чтобы генерировать эффект свечения вокруг объекта. Шейдер, который вы разместили, является старой программой шейдеров. Вот обновленный код, с мультипликатором Glow включены:

Shader "Glow" { 
    Properties { 
     _MainTex ("Texture", 2D) = "white" {} 
     _Color ("Color", Color) = (1,1,1,1) 
     _Glow ("Intensity", Range(0, 3)) = 1 
    } 
    SubShader { 
     Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 
     LOD 100 
     Cull Off 
     ZWrite On 
     Blend SrcAlpha OneMinusSrcAlpha 

     Pass { 
      CGPROGRAM 
       #pragma vertex vert 
       #pragma fragment frag 

       sampler2D _MainTex; 
       half4 _MainTex_ST; 
       fixed4 _Color; 
       half _Glow; 

       struct vertIn { 
        float4 pos : POSITION; 
        half2 tex : TEXCOORD0; 
       }; 

       struct v2f { 
        float4 pos : SV_POSITION; 
        half2 tex : TEXCOORD0; 
       }; 

       v2f vert (vertIn v) { 
        v2f o; 
        o.pos = mul(UNITY_MATRIX_MVP, v.pos); 
        o.tex = v.tex * _MainTex_ST.xy + _MainTex_ST.zw; 
        return o; 
       } 

       fixed4 frag (v2f f) : SV_Target { 
        fixed4 col = tex2D(_MainTex, f.tex); 
        col *= _Color; 
        col *= _Glow; 
        return col; 
       } 
      ENDCG 
     } 
    } 
} 
+0

Единство избирательное для каждого объекта цветения - https://m.youtube.com/watch?v=XJ0tMHDrzDo. Как я могу создать что-то подобное с моим шейдером? – ARTAGE

+1

С помощью сценария на камере, как на видео. Посмотрите на инспектора камеры в 2:16 –

+0

Так вы можете показать мне, как это должно быть сделано в моей шейдерной ведьме? Я добавляю к вопросу? – ARTAGE

 Смежные вопросы

  • Нет связанных вопросов^_^