Unity의 PostProcessing 포스트 프로세싱 사용 소개

안녕하세요 여러분 Zhao입니다.
앞선 글에서 Unity의 PostProcessing 후처리에 버그가 있어 해결책을 제시했다고 했는데 여기서는 PostProcessing 사용법을 소개하겠습니다.

1. 설치

PackageManager를 연 다음 Post를 검색하면 왼쪽에 검색 결과가 표시되고 선택 후 Install을 선택하여 설치합니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

설치가 완료되면 패키지에 PostProcessing 폴더가 나타납니다.

둘, 사용

1. PostProcessLayer 컴포넌트 추가

이 구성 요소는 일반적으로 카메라 위에 추가됩니다.
여기에 이미지 설명 삽입

2. PostProcessVolume 컴포넌트 추가

카메라에 이 구성 요소를 추가하지 마십시오. 이유는 아래에 설명되어 있으며 빈 개체를 만든 다음 추가합니다.
여기에 이미지 설명 삽입

3. 프로필 만들기

여기에 이미지 설명 삽입

새로 만들기 버튼을 클릭하면 새로운 프로필 파일이 자동으로 생성되며, 물론 기존 파일을 이곳으로 직접 드래그할 수도 있습니다.
여기에 이미지 설명 삽입

새 파일을 생성하고 나면 Unity가 실제로 우리를 위해 새 파일을 생성했음을 알 수 있습니다.

4. 효과 추가

여기에 이미지 설명 삽입

효과 추가 버튼 클릭
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

효과 중 하나를 선택하고 매개변수를 설정합니다. 여기에서 무작위로 Bloom 효과를 설정했습니다.

5. 설정 변경

이때 장면에 있는 사물에 Bloom 효과가 없음을 발견했습니다.
여기에 이미지 설명 삽입

설정을 약간 변경해 보겠습니다. 이유에 대해 걱정하지 마세요. 아래에서 자세히 설명하겠습니다.
IsGlobal 옵션을 먼저 확인하십시오.
여기에 이미지 설명 삽입

그런 다음 PostProcessLayer로 이동하여 현재 아무것도 선택되어 있지 않기 때문에 레이어가 설정되지 않았다는 경고를 확인합니다.
여기에 이미지 설명 삽입

임의로 EveryThing을 선택하고 아래 경고를 무시하면 나중에 설명하겠습니다.
여기에 이미지 설명 삽입

이때 블룸 효과로 장면이 밝아지는 것을 보았습니다.
여기에 이미지 설명 삽입

6. 레이어 생성

지금 돌아가서 경고를 확인하십시오.
여기에 이미지 설명 삽입

경고는 EveryThing 및 Default를 레이어 마스크로 사용하지 말라는 의미입니다. 일반적으로 PostProcessLayer는 자신이 지정한 레이어의 볼륨만 보면 되는데, 모든 레이어나 기본 레이어를 추가하면 볼륨이 없는 오브젝트가 이유 없이 많이 추가되고, 이유 없이 많은 연산량이 늘어나게 됩니다. 이 점은 일반 미술 동료들이 가장 간과하고 실수하기 쉬운 부분입니다.
그래서 새로운 레이어를 구축
여기에 이미지 설명 삽입

쉽게 볼 수 있도록 새 레이어 이름을 PostProcess로 지정했습니다.
여기에 이미지 설명 삽입

그런 다음 볼륨이 있는 개체의 레이어를 PostProcess로 설정합니다.
여기에 이미지 설명 삽입

PostProcessLayer에서 지정한 Layer도 PostProcess로만 설정됩니다.
여기에 이미지 설명 삽입

세 번째, PostProcessLayer 설정

PostProcessLayer 설정에 대해 자세히 알아보겠습니다.
여기에 이미지 설명 삽입

1、볼륨 블렌딩

1.트리거

여기에서 PostProcessLayer가 대상으로 하는 카메라를 지정합니다.일반적으로 카메라에 매달리는 데 사용되므로 기본값은 자신이거나 This를 클릭하여 개체 자체의 카메라를 지정합니다.
2. 레이어는
이 PostProcessLayer가 렌더링할 수 있는 레이어의 볼륨을 지정합니다.

2、안티앨리어싱

앤티앨리어싱 설정
여기에 이미지 설명 삽입

3、NaN 전파 중지

개봉 후 유니티는 자동으로 렌더링되지 않은 픽셀을 검은색으로 대체합니다.
여기에 이미지 설명 삽입

설명에서 언급했듯이 GLES2 플랫폼에서는 이 설정이 효과가 없습니다.

4、카메라 대상에 직접

여기에 이미지 설명 삽입

사후 처리를 위해 카메라 렌더링 대상에 최종 블롭을 사용합니다.
이 항목을 선택하면 오버헤드가 줄어들지만 이전 버전에서 OnRenderImage를 사용하는 이미지 효과의 호환성이 손상된다는 메시지가 표시됩니다.

5、툴킷

여기에 이미지 설명 삽입

1. EXR로 프레임 내보내기

사후 처리를 EXR 형식으로 내보낼 수 있습니다.

2. 모든 레이어 볼륨 선택

장면의 모든 후처리 볼륨을 빠르게 선택

3. 모든 활성 볼륨 선택

장면의 모든 활성 볼륨을 빠르게 선택

6、CustomEffectSorting

커스텀 후처리의 렌더링 순서를 변경하는 데 사용됩니다.

네, PostVolume 설정

여기에 이미지 설명 삽입

1、이즈글로벌

현재 볼륨이 글로벌인지 여부를 설정합니다.
글로벌은 배치 위치에 관계없이 이 볼륨이 적용될 수 있음을 의미합니다.
여기에 이미지 설명 삽입

IsGlobal이 제거되면 BlendDistance가 나타납니다.
여기에 이미지 설명 삽입

로컬 후처리 볼륨을 사용하려면 먼저 충돌 바디를 추가해야 한다는 것을 프롬프트에서 볼 수 있습니다. 그런 다음 이 혼합 거리는 처음부터 후처리 과정에서 전환 혼합 효과입니다.
여기에 이미지 설명 삽입

따라서 구형 충돌기를 추가하십시오.
여기에 이미지 설명 삽입

이 볼륨에 두 개의 범위 표시가 있음을 알 수 있습니다. 하나는 충돌 바디의 범위이고 다른 하나는 BlendDistance의 범위입니다.
여기에 이미지 설명 삽입

이때 카메라를 움직여 트리거 범위에 들어가면 후처리 효과를 볼 수 있으며 범위를 벗어나면 더 이상 후처리 효과가 나타나지 않습니다.
볼륨에는 전역 및 로컬 기능이 있고 레이어는 좌표와 관계가 있으므로 절대 카메라에 볼륨을 걸지 마십시오. 이것은 많은 미술 동료들이 무시하고 실수하는 것입니다.

2、무게

여기에 이미지 설명 삽입

장면에 있는 현재 볼륨의 가중치입니다.

3、우선권

여기에 이미지 설명 삽입

스택에 있는 현재 볼륨의 우선 순위 수준입니다.

4、프로필

후처리 효과를 실제로 설정하는 프로필 파일 사양입니다.

5. 커스텀 후처리 효과

커스텀 후처리에는 3가지가 필요합니다.

1. 셰이더

여기에서는 그래프 가장자리의 효과를 찾기 위해 편도함수를 작성합니다.

Shader "azhao/LineStyle"
{
	HLSLINCLUDE

#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/StdLib.hlsl"

	TEXTURE2D_SAMPLER2D(_MainTex, sampler_MainTex);
	float _lineStrength = 1.0;
	float4 _lineColor = (0, 0, 0, 0);
	float4 _baseColor = (1, 1, 1, 0);

	float4 Frag(VaryingsDefault i) : SV_Target
	{
		float4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.texcoord);
		float grayscale = col.r * 0.2126729f + col.g * 0.7151522f + col.b * 0.0721750f;
		float ddVal = (saturate(ddx(grayscale) + ddy(grayscale))*_lineStrength);
		float3 finalRGB = _baseColor.rgb * (1.0 - ddVal) + _lineColor.rgb * ddVal;
		float4 finalCol = float4(finalRGB, 1);
		return finalCol;
	}

		ENDHLSL

		SubShader
	{
		Cull Off ZWrite Off ZTest Always

			Pass
		{
			HLSLPROGRAM

				#pragma vertex VertDefault
				#pragma fragment Frag

			ENDHLSL
		}
	}	
}

적용하려면 #include "Packages/com.unity.postprocessing/PostProcessing/Shaders/StdLib.hlsl"을 사용해야 하므로 이 셰이더는 HLSL로 작성해야 합니다.

2. 사용자 정의 효과에 대한 매개변수 클래스

using System;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

[Serializable]
[PostProcess(typeof(LineStyleRender), PostProcessEvent.AfterStack, "azhao/LineStyle")]
public class LineStyle : PostProcessEffectSettings
{
    [Range(0f, 20f), Tooltip("Strength of line.")]
    public FloatParameter lineStrength = new FloatParameter { value = 1f };

    [ColorUsage(false), Tooltip("Color of line.")]
    public ColorParameter lineColor = new ColorParameter { value = Color.black};

    [ColorUsage(false), Tooltip("Color of base.")]
    public ColorParameter baseColor = new ColorParameter { value = Color.white };

}

선택할 때 사용자 정의 매개변수의 경로를 지정합니다. 여기서는 "azhao/LineStyle"입니다. 그런 다음 플레이어는 위의 셰이더에서 사용되는 몇 가지 사용자 정의 매개변수의 입력도 받습니다.

3. 커스텀 효과 구현 클래스

using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

public class LineStyleRender : PostProcessEffectRenderer<LineStyle>
{
    public override void Render(PostProcessRenderContext context)
    {
        var sheet = context.propertySheets.Get(Shader.Find("azhao/LineStyle"));
        sheet.properties.SetFloat("_lineStrength", settings.lineStrength);
        sheet.properties.SetColor("_lineColor", settings.lineColor);
        sheet.properties.SetColor("_baseColor", settings.baseColor);
        context.command.BlitFullscreenTriangle(context.source, context.destination, sheet, 0);
    }
}

여기에서 사용자 정의 매개변수를 얻은 다음 셰이더로 설정하고 최종적으로 전체 화면으로 렌더링합니다.

위의 세 단계를 완료하면 방금 지정한 azhao/LineStyle 옵션이 내 사용자 지정 후처리 효과인 추가 효과에 나타나는 것을 확인할 수 있습니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

이 시점에서 커스텀 후처리 효과가 추가되었습니다.

Supongo que te gusta

Origin blog.csdn.net/liweizhao/article/details/131629999
Recomendado
Clasificación