Shader의 66번째 파트를 직접 만들어서 할 때가 거의 없어요.
쉐더를 할 시간이 얼마 안 남았어요.
하마터면 Shader를 할 뻔했다.쉐더를 할 시간이 많지 않을 것 같아서요.
100부까지 열심히 하겠습니다.10년이 걸려도 돼요.
100편의 글을 배웠다면 초보자라도 이해할 수 있을 것 같아요.
이렇게 하는 거야.
※ 초보자는 필기 레벨로 기록
기술 보도로는 도움이 안 될 것 같습니다.
미리 준비하다
아래 참조
Shader 파트 1Unite 2017 애니메이션을 볼 때가 많지 않아요. (기초지식~종이 스크레이퍼로 색깔 바꾸기)
데모
색상 곱하기 후효과와 흑백 후효과를 시도했다.
구조
On RenderImage라는 Unity 활동을 활용합니다.
On RenderImage는 카메라의 렌더링이 완료될 때 호출됩니다.
카메라 렌더링 결과의 픽셀의 경우 On RenderImage에 Shader 효과를 적용하여 사후 효과를 적용할 수 있습니다.
【참조 링크】: MonoBehaviour.OnRenderImage(RenderTexture,RenderTexture)
C#샘플
using UnityEngine;
/// <summary>
/// 自作ポストエフェクトを適用する
/// ImageEffectAllowedInSceneViewというアトリビュートを使うことでシーンビューにも反映される
/// </summary>
[ExecuteInEditMode, ImageEffectAllowedInSceneView]
public class CustomColorPostEffect : MonoBehaviour
{
[SerializeField] private Material colorEffectMaterial;
private enum UsePass
{
UsePass1,
UsePass2
}
[SerializeField] private UsePass usePass;
private void OnRenderImage(RenderTexture src, RenderTexture dest)
{
Graphics.Blit(src, dest, colorEffectMaterial,(int)usePass);
}
}
OnRenderImage(RenderTexture src, RenderTexture dest)
의 두 매개변수는 모두 RenderTexture입니다.src는 Source이고 dest는 Destination이라는 뜻입니다.각각 src=받은 렌더링 결과의 이미지,dest=대상의 이미지를 복사합니다.
On RenderImage 내에서 GraphicsBlit을 사용하여 받은 렌더링 결과의 이미지에 소재 효과를 적용하고 복사된 대상 이미지(최종 렌더링 결과)에 반영합니다.
네 번째 매개변수에 색인을 지정하여 Shader 경로를 선택할 수 있습니다.
【참조 링크】: Graphics.Blit
Shader 샘플
Shader "Custom/SimplePostEffect"
{
Properties
{
//_MainTexを定義しておけば勝手に描画結果が入ってくるらしい
_MainTex ("Texture", 2D) = "white" {}
//カラー
_EffectColor("EffectColor",Color) = (0,0,0,0)
}
SubShader
{
//パスを跨いで利用できる変数や関数をひとまとめにしておく
CGINCLUDE
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
};
sampler2D _MainTex;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
ENDCG
//色を変更するポストエフェクト
Pass
{
CGPROGRAM
float4 _EffectColor;
float4 frag(v2f i) : SV_Target
{
//描画結果をサンプリング
float4 renderingColor = tex2D(_MainTex, i.uv);
return renderingColor * _EffectColor;
}
ENDCG
}
//モノクロになるポストエフェクト
Pass
{
CGPROGRAM
float4 frag(v2f i) : SV_Target
{
//描画結果をサンプリング
float4 renderingColor = tex2D(_MainTex, i.uv);
float monochrome = 0.3 * renderingColor.r + 0.6 * renderingColor.g + 0.1 * renderingColor.b;
float4 monochromeColor = float4(monochrome.xxx, 1);
return monochromeColor;
}
ENDCG
}
}
}
_MainTex를 정의하면 효과가 적용되기 전의 이미지를 얻을 수 있습니다.그리고 이 이미지를 샘플링하여 부스러기 기계 안에서 가공하여 완성한 후의 효과.
효과를 전환하기 위해 두 개의 경로를 준비하세요.
데모 2
셰더를 바꾸면 다양한 표현을 할 수 있다.
예를 들어 소음과 지력을 가진 홀로그램의 표현을 적용했다면 다음과 같다.
【참조 링크】: 핸들 홀로그램 때문에 쉐더 할 부분 39
단색 처리도 합치면 아래의 느낌.
참조 링크
유닛에 후행진을 그려보고 싶어요.
[Unity 면도기 입문] Unity 후효과로 단색 화면 만들기
Reference
이 문제에 관하여(Shader의 66번째 파트를 직접 만들어서 할 때가 거의 없어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kento_o/articles/8593bc1a36def0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)