Camera에 ImageEffect 스크립트 첨부

4151 단어 ImageEffectunity5

이 문장의 목적

  • Unity Editor에 ImageEffect 효과가 표시됩니다.
  • PostEffect


    렌더링된 이미지의 효과를 PostEffect라고 합니다.
    (Unity에서는 ImageEffect라고 합니다.
    아래 그림처럼 PostEffect를 통해 게임 화면에 묘사된 그림을 모자이크할 수 있습니다.
    Before:

    After:

    스크립트에 표시된 이미지 수신


    MyImageEffect.cs
    using UnityEngine;
    
    [RequireComponent(typeof(Camera)) ExecuteInEditMode]
    public class GrayScaleEffect : MonoBehaviour {
    
        private Material material;
    
        void Awake()
        {
            material = new Material (Shader.Find ("Custom/redScale"));
        }
    
        void OnRenderImage(RenderTexture source, RenderTexture destination)
        {
            Graphics.Blit (source, destination, material);
        }
    
    }
    
    redScale.shrder
    Shader "Custom/redScale"
    {
        SubShader
        {
            // No culling or depth
            Cull Off ZWrite Off ZTest Always
    
            Pass
            {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
    
                fixed4 _Color;
    
                float4 vert(float4 v:POSITION) : SV_POSITION {
                    return mul (UNITY_MATRIX_MVP, v);
                }
    
                fixed4 frag () : COLOR
                {
                    return fixed4(1, 0, 0, 1);
                }
                ENDCG
            }
        }
    }
    
    Camera 구성 요소의 GameObject 스크립트에서
    void OnRenderImage(RenderTexture source, RenderTexture destination)
    를 입력하면 각 프레임 카메라가 그리는 렌더링 및 그리기 대상이 매개 변수로 전달됩니다.
    Graphics.Blit을 사용하여 카메라에 그려진 소스에 Shader(material)를 사용하여 렌더링하고 결과를 destination에 기록하여 ImageEffect 효과를 화면에 표시합니다.

    각본을 카메라에 부착하다


    Shader 및 스크립트를 작성합니다.


    이렇게 하면 아래 화면이 빨간색이라는 것을 알 수 있을 것 같다.
    Before:

    After:

    이후 Shader 컨텐트를 덮어쓰면서 다양한 ImageEffect를 시도할 수 있습니다.

    좋은 웹페이지 즐겨찾기