사용자 씬 텍스처(User Scene Textures) 는 포스트 프로세스 머티리얼에서 쓰고 읽을 수 있는 일시적인 사용자 정의 렌더 타깃으로, 멀티 패스 포스트 프로세스 이펙트를 지원할 수 있습니다.
이 가이드에서는 사용자 씬 텍스처를 사용하여 화면 중앙에는 블러가 없고 화면의 가장자리로 갈수록 블러 양이 다양해지는 가변 블러 이펙트를 화면에 생성하는 방법을 설명합니다. 각각 2패스 분리형 가우시안 필터로 생성되는 두 개의 다운샘플링되고 블러링된 사용자 씬 텍스처와 원본 씬 컬러를 보간함으로써 이러한 블러 이펙트를 구현합니다. 이 방법은 단일 패스 블러보다 효율성이 더 좋을 수 있습니다.


이 가이드에서는 다음을 설정합니다.
- 사용자 씬 텍스처를 다운샘플링하고 블러링할 머티리얼을 설정합니다.
- 화면의 가로/세로 부분을 따라 블러링할 머티리얼을 설정합니다.
- 사용자 씬 텍스처의 읽기 및 쓰기 엘리먼트를 생성하기 위한 여러 머티리얼 인스턴스를 설정합니다.
- 콘솔 명령과 머티리얼 로직을 사용하여 이 타입의 이펙트에 사용 가능한 몇 가지 디버깅 옵션을 살펴봅니다.
예비 머티리얼 생성
먼저 세 가지 별도의 머티리얼을 생성하면서 시작합니다. 이러한 각 머티리얼은 가변 블러 포스트 프로세스 이펙트를 생성하는 데 필요한 다양한 엘리먼트를 빌드하는 데 사용됩니다. 먼저 하나의 머티리얼로 다운샘플링하고 두 개의 머티리얼로 각각 이펙트의 가로 컴포넌트와 세로 컴포넌트를 블러링합니다. 이러한 머티리얼은 이 가이드의 후반부에서 이 멀티 패스 효과를 생성할 사용자 씬 텍스처를 읽고 쓸 머티리얼 인스턴스를 생성하는 데 사용됩니다.
다음 단계에 따라 이 이펙트를 생성하기 시작합니다.
- 콘텐츠 브라우저(Content Browser) 에서 + 추가(+ Add) 버튼을 클릭하고 세 개의 머티리얼 을 생성합니다.
- 각 머티리얼 이름 을 다음과 같이 지정합니다.
- Downsample
- BlurHoriz
- BlurVert
이런 모양의 머티리얼이 세 개 있어야 합니다.

Downsample 머티리얼 설정하기
다음 단계에 따라 Downsample 머티리얼을 생성합니다.
- Downsample 머티리얼을 엽니다.
-
디테일(Details) 패널에서 다음 프로퍼티를 설정합니다.
- 머티리얼 도메인(Material Domain): Post Process
- 블렌더블 위치(Blendable Location): Scene Color Before Bloom
- 사용자 씬 텍스처(User Scene Texture): Output
- 'Output'이라는 사용자 씬 텍스처에 쓰는 데 사용됩니다.
- 사용자 텍스처 제수(User Texture Divisor): 2, 2(두 값 모두)
- 이렇게 설정하면 머티리얼이 X, Y 양쪽 차원에서 두 배로 다운샘플링합니다.
- 입력 기준 해상도(Resolution Relative To Input): Input
- 이 프로퍼티는 이러한 머티리얼을 세팅하는 단계에 사용됩니다. 하지만 설정하지 않으면 사용자 텍스처 제수는 절대 화면 해상도에 상대적으로 스케일링됩니다.
- 머티리얼 그래프에서 우클릭하고 User Scene Texture 노드를 추가합니다.
-
User Scene Texture 노드를 선택한 상태로 디테일 패널을 사용하여 다음 파라미터를 설정합니다.
- 사용자 씬 텍스처(User Scene Texture): Input
- 필터링됨(Filtered): 체크됨
- 체크하면 이중선형 다운샘플링을 수행하고 아티팩트 방지에 도움이 되므로 체크해야 합니다.
- User Scene Texture 노드의 컬러(Color) 출력을 메인 머티리얼 노드의 이미시브 컬러(Emissive Color) 입력에 연결합니다.
- 저장(Save) 을 클릭합니다.
이 시점에서 사용자 씬 텍스처 노드가 생성되고 나면 프리뷰(Preview) 창에 오류 메시지가 표시됩니다. 누락된 입력이 있다는 뜻입니다. 이는 디버그 표시 화면으로, 실행 중인 다양한 패스와 해당 입출력이 무엇인지 보여주므로 사용자 씬 텍스처가 있는 포스트 프로세스 머티리얼을 생성하는 데 유용합니다.

BlurHoriz 머티리얼 설정하기
다음 단계에 따라 가로 컴포넌트를 블러링할 머티리얼을 생성합니다.
- BlurHoriz 머티리얼을 엽니다.
-
디테일(Details) 패널에서 다음 프로퍼티를 설정합니다.
- 머티리얼 도메인(Material Domain): Post Process
- 블렌더블 위치(Blendable Location): Scene Color Before Bloom
- 사용자 씬 텍스처(User Scene Texture): Output
- 'Output'이라는 사용자 씬 텍스처에 쓰는 데 사용됩니다.
- 입력 기준 해상도(Resolution Relative To Input): Input
- 이 프로퍼티는 이러한 머티리얼을 세팅하는 단계에 사용됩니다. 하지만 설정하지 않으면 사용자 텍스처 제수는 절대 화면 해상도에 상대적으로 스케일링됩니다.
- 사전 노출 스케일 비활성화(Disable Pre Exposure Scale): 체크됨
- 이 머티리얼은 사용자 텍스처 제수를 설정하지 않는데, 블러를 같은 해상도로 처리하기 때문입니다. 이 경우 설정하지 않으면 사실상 0과 1은 동일합니다.
- 머티리얼 그래프에서 우클릭하고 User Scene Texture 노드를 추가합니다.
-
User Scene Texture 노드를 선택한 상태로 디테일 패널을 사용하여 다음 파라미터를 설정합니다.
- 사용자 씬 텍스처(User Scene Texture): Input
- 필터링됨(Filtered): 체크됨
- 범위제한됨(Clamped): 체크됨
- User Scene Texture 노드의 컬러(Color) 핀을 드래그하여 Custom 노드를 추가합니다. 이 노드는 이 머티리얼의 커스텀 HLSL 코드를 작성하는 데 사용됩니다.
-
Custom 노드를 선택한 상태로 디테일 패널을 사용하여 다음과 같이 설정합니다.
- 입력 이름(Input Name): Tex
- 이 입력은 Custom HLSL 노드에서 SceneTextureFetch 함수에 전달할 ID를 가져오는 데 사용되며, 해당 입력 핀에 연결된 SceneTexture 또는 UserSceneTexture 노드와 작동합니다.
-
코드(Code) 필드에 아래의 HLSL 코드를 복사해 붙여넣습니다.
// 선형 샘플링을 사용한 가우시안 블러 float offset[3] = { 0.0, 1.3846153846, 3.2307692308 }; float weight[3] = { 0.2270270270, 0.3162162162, 0.0702702703 }; float3 Color = SceneTextureFetch(Tex.ID, float2(0,0)) * weight[0]; for (int i=1; i<3; i++) { Color += SceneTextureFetch(Tex.ID, + float2(offset[i], 0.0)) * weight[i]; Color += SceneTextureFetch(Tex.ID, - float2(offset[i], 0.0)) * weight[i]; } return Color;
- 입력 이름(Input Name): Tex
- 커스텀(Custom) 출력을 메인 머티리얼의 이미시브 컬러(Emissive Color) 입력에 연결합니다.
- 저장(Save) 을 클릭합니다.
이 포스트 프로세스 이펙트 예시는 커스텀 HLSL을 사용하므로 사전 노출 스케일 비활성화(Disable Pre Exposure Scale) 를 설정해야 한다는 점을 명심해야 합니다. 그 이유는 이 세팅이 포스트 프로세스 머티리얼의 입출력의 스케일링에 영향을 주는 일부 로직을 비활성화하기 때문입니다. 그렇지 않으면 일반 노드 로직은 필요한 만큼 자동으로 스케일링하거나 언스케일링하는 코드를 생성하기 때문에 커스텀 HLSL을 작성할 때 이 로직을 고려해야 합니다. 커스텀 HLSL의 복잡성을 피하는 것 외에도 약간의 퍼포먼스 이점이 있습니다. 일반적으로 사용자 씬 텍스처와 커스텀 HLSL로 작업할 때는 사전 노출 스케일을 비활성화하는 것이 좋습니다.
이 시점에서 HLSL의 결과를 프리뷰하려면, 머티리얼의 프리뷰 창에서 User Scene Texture 노드의 '사용자 씬 텍스처' 필드를 'Input'에서 'SceneColor'로 변경하면 됩니다. 이 입력은 파이프라인에 있는 이 상태에 디폴트 씬 컬러를 사용하는 특별한 입력입니다.
User Scene Texture 노드의 디테일 패널에서 사용자 씬 텍스처(UserSceneTexture) 를 SceneColor
로 설정하고 머티리얼을 저장(Save) 합니다.
컴파일한 다음에는 프리뷰 창에 이 커스텀 HLSL 코드의 결과가 표시됩니다. 이 예시에서처럼 스피어의 바깥 가장자리는 블러가 강하고 창의 중앙은 블러가 덜해야 합니다(완료되면 다시 Input으로 변경).

프리뷰 창에서 이러한 변경사항의 적용 전후로 머티리얼을 테스트합니다.
BlurVert 머티리얼 설정하기
다음 단계에 따라 세로 컴포넌트를 블러링하기 위한 머티리얼을 생성합니다.
- BlurVert 머티리얼을 엽니다.
-
디테일(Details) 패널에서 다음 프로퍼티를 설정합니다.
- 머티리얼 도메인(Material Domain): Post Process
- 블렌더블 위치(Blendable Location): Scene Color Before Bloom
- 사용자 씬 텍스처(User Scene Texture): Output
- 'Output'이라는 사용자 씬 텍스처에 쓰는 데 사용됩니다.
- 입력 기준 해상도(Resolution Relative To Input): Input
- 이 프로퍼티는 이러한 머티리얼을 세팅하는 단계에 사용됩니다. 하지만 설정하지 않으면 사용자 텍스처 제수는 절대 화면 해상도에 상대적으로 스케일링됩니다.
- 사전 노출 스케일 비활성화(Disable Pre Exposure Scale): 체크됨
- 이 머티리얼은 사용자 텍스처 제수를 설정하지 않는데, 블러를 같은 해상도로 처리하기 때문입니다. 이 경우 설정하지 않으면 사실상 0과 1은 동일합니다.
- 머티리얼 그래프에서 우클릭하고 User Scene Texture 노드를 추가합니다.
-
User Scene Texture 노드를 선택한 상태로 디테일 패널을 사용하여 다음 파라미터를 설정합니다.
- 사용자 씬 텍스처(User Scene Texture): Input
- 필터링됨(Filtered): 체크됨
- 범위제한됨(Clamped): 체크됨
- User Scene Texture 노드의 컬러(Color) 핀을 드래그하여 Custom 노드를 추가합니다. 이 노드는 이 머티리얼의 커스텀 HLSL 코드를 작성하는 데 사용됩니다.
-
Custom 노드를 선택한 상태로 디테일 패널을 사용하여 다음과 같이 설정합니다.
- 입력 이름(Input Name): Tex
- 이 입력은 Custom HLSL 노드에서 SceneTextureFetch 함수에 전달할 ID를 가져오는 데 사용되며, 해당 입력 핀에 연결된 SceneTexture 또는 UserSceneTexture 노드와 작동합니다.
-
코드(Code) 필드에 아래의 HLSL 코드를 복사해 붙여넣습니다.
// 선형 샘플링을 사용한 가우시안 블러 float offset[3] = { 0.0, 1.3846153846, 3.2307692308 }; float weight[3] = { 0.2270270270, 0.3162162162, 0.0702702703 }; float3 Color = SceneTextureFetch(Tex.ID, float2(0,0)) * weight[0]; for (int i=1; i<3; i++) { Color += SceneTextureFetch(Tex.ID, + float2(0.0, offset[i])) * weight[i]; Color += SceneTextureFetch(Tex.ID, - float2(0.0, offset[i])) * weight[i]; } return Color;
- 입력 이름(Input Name): Tex
- 커스텀(Custom) 출력을 메인 머티리얼의 이미시브 컬러(Emissive Color) 입력에 연결합니다.
- 저장(Save) 을 클릭합니다.
이 머티리얼의 설정은 이전 섹션의 BlurHoriz 머티리얼과 똑같습니다. 두 머티리얼의 유일한 차이점은 양수 및 음수 SceneTextureFetch
오프셋의 좌표 설정 순서를 변경하는 HLSL 코드입니다. 이렇게 HLSL 코드를 변경하면 입력 텍스처를 샘플링할 때 UV 오프셋이 가로에서 세로로 전환됩니다.
Color += SceneTextureFetch(Tex.ID, + float2(0.0, offset[i])) * weight[i];
Color += SceneTextureFetch(Tex.ID, - float2(0.0, offset[i])) * weight[i];
사용자 씬 텍스처 머티리얼 인스턴스 설정하기
기본 머티리얼을 구성한 후에는 이러한 머티리얼을 사용하여 여러 머티리얼 인스턴스를 생성합니다. 이 머티리얼 인스턴스로 사용자 씬 텍스처를 읽고 쓰면서 블러링 대상 화면의 가로 및 세로 부분을 생성하고, 이러한 패스가 최종 이펙트를 위해 포스트 프로세스 볼륨을 통해 적용되는 블러링에 얼마나 기여하는지 결정합니다.
가로 블러 머티리얼 인스턴스 생성하기
이 단계에서는 BlurHoriz 머티리얼로 머티리얼 인스턴스 세트를 생성하여 이 가변 블러 이펙트의 가로 블러링 컴포넌트를 위해 사용자 씬 텍스처를 읽고 쓰는 기본 정보를 설정합니다.
HalfA 블러 가로 머티리얼 인스턴스
이 첫 번째 머티리얼 인스턴스는 Downsample 머티리얼에서 생성됩니다. 이 머티리얼 인스턴스는 씬 컬러(Scene Color)라는 입력을 받아 HalfA라는 출력을 씁니다.
- 콘텐츠 브라우저에서 Downsample 머티리얼을 우클릭하고 머티리얼 인스턴스 생성(Create Material Instance) 을 클릭합니다. 'HalfA'로 이름을 지정합니다.
- 머티리얼 인스턴스 HalfA 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): SceneColor
- 사용자 씬 텍스처 출력(User Scene Texture Output): HalfA
- 머티리얼 인스턴스를 저장(Save) 합니다.
HalfB 블러 가로 머티리얼 인스턴스
이 두 번째 머티리얼 인스턴스는 BlurHoriz 머티리얼에서 생성됩니다. 이 머티리얼 인스턴스는 HalfA를 입력으로 사용하여 HalfB라는 출력을 씁니다.
- 콘텐츠 브라우저에서 BlurHoriz 머티리얼을 우클릭하고 머티리얼 인스턴스 생성 을 클릭합니다. 'HalfB'로 이름을 지정합니다.
- 머티리얼 인스턴스 HalfB 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): HalfA
- 사용자 씬 텍스처 출력(User Scene Texture Output): HalfB
- 머티리얼 인스턴스를 저장(Save) 합니다.
이 시점에서 두 개의 머티리얼 인스턴스인 HalfA와 HalfB가 설정되었는데, 이제 r.PostProcessing.UserSceneTextureDebug 1
콘솔 명령을 사용하여 프리뷰 창에서 사용자 씬 텍스처 디버그 디스플레이를 켜는 것이 좋습니다. 이 디스플레이는 사용자 씬 텍스처가 앞서 설정한 가변 블러 포스트 프로세스 머티리얼에서 어떻게 읽히고 쓰이는지 보여줍니다.
이 디스플레이가 활성화되면, 프리뷰 창에 이 머티리얼을 위해 실행 중인 다양한 패스가 간략하게 표시됩니다. HalfB 머티리얼 인스턴스에서는 HalfA 머티리얼 인스턴스가 HalfA라는 출력을 생성하고 HalfB가 HalfA의 출력을 읽고 생성한다는 것을 보여줍니다.

세로 블러 머티리얼 인스턴스 생성하기
이 단계에서는 BlurVert 머티리얼로 머티리얼 인스턴스 세트를 생성하여 이 가변 블러 이펙트의 세로 블러링 컴포넌트를 위해 사용자 씬 텍스처를 읽고 쓰는 기본 정보를 설정합니다.
HalfC 블러 세로 머티리얼 인스턴스
이 첫 번째 세로 머티리얼 인스턴스는 BlurVert 머티리얼에서 생성됩니다. HalfB라는 입력을 받아 HalfC라는 출력을 씁니다.
- 콘텐츠 브라우저에서 BlurVert 머티리얼을 우클릭하고 머티리얼 인스턴스 생성 을 클릭합니다. 'HalfC'로 이름을 지정합니다.
- 머티리얼 인스턴스 HalfC 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): HalfB
- 사용자 씬 텍스처 출력(User Scene Texture Output): HalfC
- 머티리얼 인스턴스를 저장(Save) 합니다.
이제 HalfA, HalfB, HalfC의 절반 해상도 머티리얼 세트가 완성되었습니다.
QuarterA 블러 세로 머티리얼 인스턴스
이 두 번째 세로 머티리얼 인스턴스는 Downsample 머티리얼에서 생성됩니다. HalfC에서 입력을 받아 QuarterA로 출력하는 1/4 해상도 체인의 출력을 씁니다.
- 콘텐츠 브라우저에서 Downsample 머티리얼을 우클릭하고 머티리얼 인스턴스 생성(Create Material Instance) 을 클릭합니다. 'QuarterA'로 이름을 지정합니다.
- 머티리얼 인스턴스 QuarterA 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): HalfC
- 사용자 씬 텍스처 출력(User Scene Texture Output): QuarterA
- 머티리얼 인스턴스를 저장(Save) 합니다.
QuarterB 블러 세로 머티리얼 인스턴스
이 세 번째 세로 머티리얼 인스턴스는 BlurHoriz 머티리얼에서 생성됩니다. QuarterA라는 입력을 받아 QuarterB라는 출력을 씁니다.
- 콘텐츠 브라우저에서 BlurHoriz 머티리얼을 우클릭하고 머티리얼 인스턴스 생성 을 클릭합니다. 'QuarterB'로 이름을 지정합니다.
- 머티리얼 인스턴스 QuarterB 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): QuarterA
- 사용자 씬 텍스처 출력(User Scene Texture Output): QuarterB
- 머티리얼 인스턴스를 저장(Save) 합니다.
QuarterC 블러 세로 머티리얼 인스턴스
이 네 번째이자 마지막 머티리얼 인스턴스는 BlurVert 머티리얼에서 생성됩니다. QuarterB라는 입력을 받아 QuarterC라는 출력을 씁니다.
- 콘텐츠 브라우저에서 BlurVert 머티리얼을 우클릭하고 머티리얼 인스턴스 생성 을 클릭합니다. 'QuarterC'로 이름을 지정합니다.
- 머티리얼 인스턴스 QuarterC 를 엽니다.
-
머티리얼 인스턴스 에디터의 디테일 패널에서 포스트 프로세스 오버라이드(Post Process Overrides) 카테고리를 다음과 같이 설정합니다.
- 입력(Input): QuarterB
- 사용자 씬 텍스처 출력(User Scene Texture Output): QuarterC
- 머티리얼 인스턴스를 저장(Save) 합니다.
이제 QuarterA, QuarterB, QuarterC의 1/4 해상도 머티리얼 인스턴스 세트를 완성했습니다.
머티리얼 인스턴스 절반 해상도 1/4 해상도 결과
각 머티리얼 인스턴스가 사용자 씬 텍스처를 읽고 쓰도록 설정되면 프리뷰 창에 각 머티리얼 인스턴스의 결과가 표시됩니다. 결과는 아래의 예시처럼 나타납니다. 즉, 머티리얼 인스턴스가 체인의 해당 포인트까지 읽고 쓰는 사용자 씬 텍스처에 따라 블러가 적용되는 양이 달라집니다.

사용자 씬 텍스처 디버그 디스플레이를 활성화하면 이러한 모든 머티리얼 인스턴스가 서로 어떻게 작동하는지 확인할 수 있습니다. 예를 들어, 아래 QuarterC 프리뷰 창의 디버그 디스플레이에서는 모든 입출력이 서로 어떻게 연결되어 이 가변 블러 이펙트를 생성하는지 확인할 수 있습니다.

가변 블러 머티리얼 설정하기
이제 사용자 씬 텍스처를 절반 해상도와 1/4 해상도로 다운샘플링하고 블러링하는 모든 머티리얼 인스턴스를 설정했으니, 이러한 모든 엘리먼트를 서로 묶어주는 머티리얼을 생성하여 포스트 프로세스 볼륨에 사용할 가변 블러 이펙트를 생성해야 합니다.
삼중 이중선형 보간 머티리얼 함수 생성하기
이러한 컴포넌트를 모두 하나로 묶어주는 머티리얼을 생성하기 전에 먼저 절반 해상도와 1/4 해상도 사용자 씬 텍스처를 보간하는 커스텀 머티리얼 함수, 화면에서 영향받는 부분을 제어하는 알파, 그리고 포스트 프로세스 머티리얼의 씬 텍스처 입력을 생성해야 합니다.
- 콘텐츠 브라우저 에서 + 추가 버튼을 클릭하고 머티리얼 함수(Material Function) 를 생성합니다.
- 머티리얼 함수 이름(Name) 을 'TripleBilinearLerp'로 지정합니다.
- 머티리얼 함수(Material Function) 를 엽니다.
-
아래의 머티리얼 그래프를 재생성합니다.
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_1" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_1'" Begin Object Class=/Script/Engine.MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_0" ExportPath="/Script/Engine.MaterialExpressionLinearInterpolate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_1.MaterialExpressionLinearInterpolate_0'" End Object Begin Object Name="MaterialExpressionLinearInterpolate_0" ExportPath="/Script/Engine.MaterialExpressionLinearInterpolate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_1.MaterialExpressionLinearInterpolate_0'" A=(Expression="/Script/Engine.MaterialExpressionFunctionInput'MaterialGraphNode_2.MaterialExpressionFunctionInput_0'") B=(Expression="/Script/Engine.MaterialExpressionFunctionInput'MaterialGraphNode_3.MaterialExpressionFunctionInput_1'") Alpha=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_8.MaterialExpressionSaturate_0'") MaterialExpressionEditorX=96 MaterialExpressionEditorY=208 MaterialExpressionGuid=A8ED16194716D3B0CDA15C8D7C97D4D4 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_0'" NodePosX=96 NodePosY=208 NodeGuid=94A2C1E74424AB6F129C92A158EB6D29 CustomProperties Pin (PinId=985B04384243B156488DAE92605517A7,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_2 B3ABD15A414088DF1DA1B0B3A0844C02,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=61EAAD244DF5C6E7D51F51895AC08C8E,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_3 B11BDA6643D7D29138E2B996602F6620,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=5E45AE2047B136732D420A878357167A,PinName="Alpha",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.5",LinkedTo=(MaterialGraphNode_8 4E34FD8047F1D50EDF8060AF8586922C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=9F1246224CE0D8BA02D772A3023712F2,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 29A394C2458439B512865A8386BC3644,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_2" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_2'" Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_0" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_2.MaterialExpressionFunctionInput_0'" End Object Begin Object Name="MaterialExpressionFunctionInput_0" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_2.MaterialExpressionFunctionInput_0'" Preview=(Expression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialGraphNode_11.MaterialExpressionConstant4Vector_0'",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1) InputName="A" Id=A30BA5064D1E14D22C4E02A871B09C34 InputType=FunctionInput_Vector4 MaterialExpressionEditorX=-272 MaterialExpressionEditorY=128 MaterialExpressionGuid=F8E23BAC48D726B95A0BAE8888680A02 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_0'" NodePosX=-272 NodePosY=128 NodeGuid=D772B9CF4765C291A372E7B9ED106984 CustomProperties Pin (PinId=C2013CF4493F250AF21655B833569255,PinName="Preview",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_11 FEA99DF24557E46A117D28B908B129BF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B3ABD15A414088DF1DA1B0B3A0844C02,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_1 985B04384243B156488DAE92605517A7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_3" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3'" Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_1" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionFunctionInput_1'" End Object Begin Object Name="MaterialExpressionFunctionInput_1" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_3.MaterialExpressionFunctionInput_1'" Preview=(Expression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialGraphNode_12.MaterialExpressionConstant4Vector_1'",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1) InputName="B" Id=EE5FC89E4FCC14C6E933819A9B93DF50 InputType=FunctionInput_Vector4 MaterialExpressionEditorX=-272 MaterialExpressionEditorY=320 MaterialExpressionGuid=81E560EC40903A2A9CB00C8DB9495CC7 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_1'" NodePosX=-272 NodePosY=320 NodeGuid=E73233D547D31766537DACA2F1BB9FAB CustomProperties Pin (PinId=476E616140410D3053368CB8D0EA2355,PinName="Preview",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_12 44E3A31E46CE6C8CCE79B1956158F613,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B11BDA6643D7D29138E2B996602F6620,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_1 61EAAD244DF5C6E7D51F51895AC08C8E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_4" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_4'" Begin Object Class=/Script/Engine.MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_1" ExportPath="/Script/Engine.MaterialExpressionLinearInterpolate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_4.MaterialExpressionLinearInterpolate_1'" End Object Begin Object Name="MaterialExpressionLinearInterpolate_1" ExportPath="/Script/Engine.MaterialExpressionLinearInterpolate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_4.MaterialExpressionLinearInterpolate_1'" A=(Expression="/Script/Engine.MaterialExpressionLinearInterpolate'MaterialGraphNode_1.MaterialExpressionLinearInterpolate_0'") B=(Expression="/Script/Engine.MaterialExpressionFunctionInput'MaterialGraphNode_5.MaterialExpressionFunctionInput_2'") Alpha=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_10.MaterialExpressionSaturate_1'") MaterialExpressionEditorX=208 MaterialExpressionEditorY=352 MaterialExpressionGuid=DA2117CE4D4A9EF16C183FBCAC0EA4B7 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_1'" NodePosX=208 NodePosY=352 NodeGuid=43D7D2E44239AE53D96505BE1DD84A45 CustomProperties Pin (PinId=29A394C2458439B512865A8386BC3644,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_1 9F1246224CE0D8BA02D772A3023712F2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=33EFD05349E465E86D66AC8ABB711C2E,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_5 1E9CE5E04B304004FED9B098053CDCA0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=F3EB71E641D3ACB629195690430FEACC,PinName="Alpha",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.5",LinkedTo=(MaterialGraphNode_10 AB99B08745C6FF72A1B353804432D33F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=6D99616E4C79A88FE905C8A11ABEEFB3,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_0 B640EB3E41FB872DF2BC29B49F1C086C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_5" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_5'" Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_2" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_5.MaterialExpressionFunctionInput_2'" End Object Begin Object Name="MaterialExpressionFunctionInput_2" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_5.MaterialExpressionFunctionInput_2'" Preview=(Expression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialGraphNode_13.MaterialExpressionConstant4Vector_2'",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1) InputName="C" Id=BC7361C744FA6B9F29B67C925B79A4EE InputType=FunctionInput_Vector4 MaterialExpressionEditorX=-272 MaterialExpressionEditorY=496 MaterialExpressionGuid=54CBBA134D385DA6F2E0E5BE3E75ED14 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_2'" NodePosX=-272 NodePosY=496 NodeGuid=0232CDFF483F8B81A908788ABA536C23 CustomProperties Pin (PinId=3EBBB1CD41DE42002F9969A0781E31EF,PinName="Preview",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_13 BBE7B94E4BCA23CFBA928083F2730D3F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=1E9CE5E04B304004FED9B098053CDCA0,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 33EFD05349E465E86D66AC8ABB711C2E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_6" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_6'" Begin Object Class=/Script/Engine.MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_3" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_6.MaterialExpressionFunctionInput_3'" End Object Begin Object Name="MaterialExpressionFunctionInput_3" ExportPath="/Script/Engine.MaterialExpressionFunctionInput'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_6.MaterialExpressionFunctionInput_3'" Preview=(Expression="/Script/Engine.MaterialExpressionConstant'MaterialGraphNode_14.MaterialExpressionConstant_0'") InputName="Alpha" Id=077E90F14D801B92EF0AE5BB1BF365A3 InputType=FunctionInput_Scalar MaterialExpressionEditorX=-272 MaterialExpressionEditorY=688 MaterialExpressionGuid=4D27CDA24EE0A0DA8EAFD7ABC62DE98A Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_3'" NodePosX=-272 NodePosY=688 NodeGuid=5E20351F425DF761FE7B2091A3547CC6 CustomProperties Pin (PinId=F22CBC7E4B9374D1155C4B8124274F0F,PinName="Preview",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_14 9F19F2524D1F3E07365FB1A3AFA7B18F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=714CED574BF646A4A29BA3934518A104,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_7 0AF3C5304FACAE045A1C139C3AA4F72A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_7" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_7'" Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_0" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_7.MaterialExpressionMultiply_0'" End Object Begin Object Name="MaterialExpressionMultiply_0" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_7.MaterialExpressionMultiply_0'" A=(Expression="/Script/Engine.MaterialExpressionFunctionInput'MaterialGraphNode_6.MaterialExpressionFunctionInput_3'") ConstB=2.000000 MaterialExpressionEditorX=-16 MaterialExpressionEditorY=672 MaterialExpressionGuid=C63EA0854FFA9DAD435AF9A617769EC1 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_0'" NodePosX=-16 NodePosY=672 NodeGuid=C9EAA4D2423EC0DEFB0609948EA3136E CustomProperties Pin (PinId=0AF3C5304FACAE045A1C139C3AA4F72A,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_6 714CED574BF646A4A29BA3934518A104,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=681D235A42DE8088980B3AA913BA3A00,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="2.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=54572CE941A329E5EB3BD4AF21CE4FF1,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_8 E613D6D64982D5A4C5B98AB1502ED50E,MaterialGraphNode_9 BDE789E245713C3BE15E1F9CDA1A5D11,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_8" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_8'" Begin Object Class=/Script/Engine.MaterialExpressionSaturate Name="MaterialExpressionSaturate_0" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_8.MaterialExpressionSaturate_0'" End Object Begin Object Name="MaterialExpressionSaturate_0" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_8.MaterialExpressionSaturate_0'" Input=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_7.MaterialExpressionMultiply_0'") MaterialExpressionEditorX=-16 MaterialExpressionEditorY=384 MaterialExpressionGuid=9586172B4C3CF8D9DE92FCA4FE4E58BC Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionSaturate'MaterialExpressionSaturate_0'" NodePosX=-16 NodePosY=384 NodeGuid=FADAC2FE4813C61BBF743FBEDAA6C0CB CustomProperties Pin (PinId=E613D6D64982D5A4C5B98AB1502ED50E,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_7 54572CE941A329E5EB3BD4AF21CE4FF1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=4E34FD8047F1D50EDF8060AF8586922C,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_1 5E45AE2047B136732D420A878357167A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_9" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_9'" Begin Object Class=/Script/Engine.MaterialExpressionSubtract Name="MaterialExpressionSubtract_0" ExportPath="/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionSubtract_0'" End Object Begin Object Name="MaterialExpressionSubtract_0" ExportPath="/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionSubtract_0'" A=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_7.MaterialExpressionMultiply_0'") MaterialExpressionEditorX=192 MaterialExpressionEditorY=672 MaterialExpressionGuid=24F7B33C4448C051B6688D919FF0FEC1 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionSubtract'MaterialExpressionSubtract_0'" NodePosX=192 NodePosY=672 NodeGuid=0F409348433EEDB78314DA9DE740EBDF CustomProperties Pin (PinId=BDE789E245713C3BE15E1F9CDA1A5D11,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_7 54572CE941A329E5EB3BD4AF21CE4FF1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=5FC6EF1B4936F28C559AEDB1D6F9F32B,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CD3916D044075FBAF46A51AB8D91B59F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_10 E53A4D004989C469B01334A62051D7DA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_10" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_10'" Begin Object Class=/Script/Engine.MaterialExpressionSaturate Name="MaterialExpressionSaturate_1" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_10.MaterialExpressionSaturate_1'" End Object Begin Object Name="MaterialExpressionSaturate_1" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_10.MaterialExpressionSaturate_1'" Input=(Expression="/Script/Engine.MaterialExpressionSubtract'MaterialGraphNode_9.MaterialExpressionSubtract_0'") MaterialExpressionEditorX=160 MaterialExpressionEditorY=544 MaterialExpressionGuid=B524AC184E3FAAF5D8047DBBA5DAE752 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionSaturate'MaterialExpressionSaturate_1'" NodePosX=160 NodePosY=544 NodeGuid=367B05C8472F60143DCDDAB83923609E CustomProperties Pin (PinId=E53A4D004989C469B01334A62051D7DA,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_9 CD3916D044075FBAF46A51AB8D91B59F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AB99B08745C6FF72A1B353804432D33F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 F3EB71E641D3ACB629195690430FEACC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_11'" Begin Object Class=/Script/Engine.MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_0" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionConstant4Vector_0'" End Object Begin Object Name="MaterialExpressionConstant4Vector_0" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionConstant4Vector_0'" Constant=(R=1.000000,G=0.000000,B=0.000000,A=0.000000) MaterialExpressionEditorX=-480 MaterialExpressionEditorY=128 MaterialExpressionGuid=D81F4D5B414E726D2178A1981EA27379 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_0'" NodePosX=-480 NodePosY=128 NodeGuid=0859F26B475C4E0BCB676E80E99DB1AA CustomProperties Pin (PinId=A05A04F6462E420EA9266896AD498F9E,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=1.000000,G=0.000000,B=0.000000,A=0.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=FEA99DF24557E46A117D28B908B129BF,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_2 C2013CF4493F250AF21655B833569255,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BF2E16FB4C5650EE38E0E59B00D843BF,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=2FE03B274BF8D6B10F9AF893C049F6C3,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=D5D7DFD34FF03718BFBF63B494606FBD,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=587B663848AF9B58644098BC45084BA6,PinName="Output5",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_12" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_12'" Begin Object Class=/Script/Engine.MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_1" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_12.MaterialExpressionConstant4Vector_1'" End Object Begin Object Name="MaterialExpressionConstant4Vector_1" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_12.MaterialExpressionConstant4Vector_1'" Constant=(R=0.000000,G=1.000000,B=0.000000,A=0.000000) MaterialExpressionEditorX=-480 MaterialExpressionEditorY=336 MaterialExpressionGuid=C7157E0A4D4A53576E90B9A7A64F4A43 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_1'" NodePosX=-480 NodePosY=336 NodeGuid=A61C84424BE1D388A10F269545DAFE72 CustomProperties Pin (PinId=131EEEA740E6263459B16D9EAF0BA074,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=1.000000,B=0.000000,A=0.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=44E3A31E46CE6C8CCE79B1956158F613,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_3 476E616140410D3053368CB8D0EA2355,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=A6D76C8046AF1F736DE9A0A16F6948B4,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AE6EB9FF40BD22D8BFAE2DBD34350C11,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=06F867094DDBB3230FB1E0BB5C98BE71,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BAF9E4DA499D1A5D68E7BC8264692A9A,PinName="Output5",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_13" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_13'" Begin Object Class=/Script/Engine.MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_2" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_13.MaterialExpressionConstant4Vector_2'" End Object Begin Object Name="MaterialExpressionConstant4Vector_2" ExportPath="/Script/Engine.MaterialExpressionConstant4Vector'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_13.MaterialExpressionConstant4Vector_2'" Constant=(R=0.000000,G=0.000000,B=1.000000,A=0.000000) MaterialExpressionEditorX=-480 MaterialExpressionEditorY=544 MaterialExpressionGuid=52F4C90141136B86C3CEAFA28ABF3B76 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_2'" NodePosX=-480 NodePosY=544 NodeGuid=D96C87E54C93786F8A3C77A59290B3BB CustomProperties Pin (PinId=F854AB3343B54FA41D385FB150BCC91C,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=0.000000,B=1.000000,A=0.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BBE7B94E4BCA23CFBA928083F2730D3F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_5 3EBBB1CD41DE42002F9969A0781E31EF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=C06357F349FCD1FBCCC84695B57393A4,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=FF35CD014403EE8D9F1E96AB7F23F8E5,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=11D60F2546BF8949C83A0A9CAAF5C02D,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=5147C1F34D09D137037B5CB31497CCFC,PinName="Output5",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_14" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_14'" Begin Object Class=/Script/Engine.MaterialExpressionConstant Name="MaterialExpressionConstant_0" ExportPath="/Script/Engine.MaterialExpressionConstant'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionConstant_0'" End Object Begin Object Name="MaterialExpressionConstant_0" ExportPath="/Script/Engine.MaterialExpressionConstant'/Engine/Transient.Material_0:MaterialGraph_0.MaterialGraphNode_14.MaterialExpressionConstant_0'" R=0.250000 MaterialExpressionEditorX=-480 MaterialExpressionEditorY=768 MaterialExpressionGuid=86ED9CB24534A6796328A78FD5473DA0 Material="/Script/Engine.Material'/Engine/Transient.Material_0'" End Object MaterialExpression="/Script/Engine.MaterialExpressionConstant'MaterialExpressionConstant_0'" NodePosX=-480 NodePosY=768 NodeGuid=C9716D6341ACD51A1AA8CCA8837358DF CustomProperties Pin (PinId=3D84EFAC4C0A27D392F358BC1808AAC3,PinName="Value",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.25",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=9F19F2524D1F3E07365FB1A3AFA7B18F,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_6 F22CBC7E4B9374D1155C4B8124274F0F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object - 각 FunctionInput 노드마다 다음과 같이 설정해야 합니다.
- 처음 세 노드는 입력 이름(Input Name) 으로 A, B 또는 C 를 사용하고 입력 타입(Input Type) 은 Function Input Vector 4 입니다.
- 마지막 노드의 입력 이름 은 Alpha 이고 입력 타입 은 Function Input Scalar 입니다.
- 아니면 위의 이미지에서 코드를 복사하여 머티리얼 함수 그래프에 바로 붙여넣을 수도 있습니다.
- 각 FunctionInput 노드마다 다음과 같이 설정해야 합니다.
-
Lerp 를 Output Result 노드에 연결합니다.
- 저장 하고 머티리얼 에디터 함수 에디터를 닫습니다.
사용자 씬 텍스처를 사용하여 가변 블러가 있는 머티리얼 생성하기
마지막으로 생성할 이 최종 머티리얼은 모든 컴포넌트를 하나로 묶어 가변 블러 포스트 프로세스 이펙트를 생성합니다. TripleBilinearLerp 머티리얼 함수는 절반 해상도 및 1/4 해상도 사용자 씬 텍스처를 사용하여 화면에 가변 블러 이펙트를 생성하며, Alpha 입력을 사용하여 화면의 중앙과 중심부, 바깥 가장자리에 걸쳐 블러 이펙트의 영향을 받는 화면 영역을 제어합니다.
- 콘텐츠 브라우저 에서 + 추가 버튼을 클릭하고 머티리얼(Material) 을 생성합니다. 'BlurApply'로 이름을 지정합니다.
- BlurApply 머티리얼을 엽니다.
-
디테일(Details) 패널에서 다음 프로퍼티를 설정합니다.
- 도메인(Domain): Post Process
- 블렌더블 위치(Blendable Location): Scene Color Before Bloom
-
그래프에서 앞서 생성한 TripleBilinearLerp 머티리얼 함수를 드래그합니다.
-
씬 텍스처(Scene Texture) 입력 데이터 표현식을 추가합니다. 디테일 패널에서 씬 텍스처 ID(Scene Texture Id) 를 PostProcessInput0 으로 설정합니다.
PostProcessInput0은 SceneColor와 같지만, 포스트 프로세스 머티리얼용입니다.
-
SceneTexture:PostProcessInput0 노드의 컬러 출력을 TripleBilinearLerp 머티리얼 함수 노드의 A 입력에 연결합니다.
-
두 개의 User Scene Texture 노드를 추가합니다. 각 노드의 디테일 패널에서 다음과 같이 설정합니다.
- 사용자 씬 텍스처(User Scene Texture): 절반 해상도 및 1/4 해상도 사용자 씬 텍스처를 입력으로 받습니다. 하나는 HalfC, 다른 하나는 QuarterC 로 이름을 지정합니다.
- 필터링됨(Filtered): 체크됨
- 범위제한됨(Clamped): 체크됨
- UserSceneTexture:HalfC 노드의 컬러 출력을 TripleBilinearLerp 노드의 B 입력에 연결합니다.
- UserSceneTexture:QuarterC 노드의 컬러 출력을 TripleBilinearLerp 노드의 C 입력에 연결합니다.
- 그래프에서 Constant 노드를 추가합니다. 값은 0으로 남겨둡니다.
-
Constant 를 TripleBilinearLerp 노드의 알파 입력에 연결합니다.
그러면 이 가이드의 다음 섹션으로 진행하기 전에 머티리얼이 컴파일됩니다.
- TripleBilinearLerp 노드의 출력을 메인 머티리얼 노드의 이미시브 컬러 입력에 연결합니다.
- 적용(Apply) 을 클릭하여 머티리얼을 컴파일합니다.
이제 머티리얼 그래프가 아래 이미지처럼 보일 것입니다.

프리뷰 창을 보면 QuarterA 머티리얼 인스턴스에서 HalfC
사용자 씬 텍스처 입력에 Red: Missing Input
입력 오류 메시지가 발생한 것을 알 수 있습니다. 이 오류는 HalfC 입력을 실제로 쓰기도 전에 QuarterA가 HalfC 입력을 사용하기 때문에 발생합니다. 프리뷰 창은 멀티 레벨 종속성을 처리할 수 없습니다. 하지만 머티리얼에서 패스의 우선순위를 설정하면 이 문제를 수동으로 해결할 수 있습니다.

머티리얼의 우선순위를 설정하는 방법은 다음과 같습니다.
- QuarterA, QuarterB, QuarterC 의 1/4 해상도 패스를 엽니다.
- 이러한 각 머티리얼 인스턴스의 디테일 패널에 있는 포스트 프로세스 오버라이드 아래에서 블렌더블 우선순위(Blendable Priority) 옆의 박스를 체크합니다.
-
각 1/4 해상도 인스턴스의 블렌더블 우선순위 를 1 로 설정합니다.
- 각 머티리얼 인스턴스를 저장 하고 닫습니다.
- BlurApply 머티리얼을 엽니다.
-
디테일 패널에서 블렌더블 우선순위 를 2 로 설정합니다.
- 적용(Apply) 을 클릭하여 머티리얼을 컴파일합니다.
아래 예시처럼 프리뷰 창에서 오류 메시지가 해결될 것입니다. 이렇게 변경하면 모든 패스가 절반 해상도 패스 이후에 실행되므로 절반 해상도 출력을 사용하기 전에 생성되도록 보장합니다.

파라미터를 사용하여 머티리얼에 가변 블러 추가하기
이전 섹션에서는 Constant 값을 사용하여 머티리얼을 컴파일하고 결과를 얻었습니다. 하지만 Alpha 입력에 몇 가지 로직을 적용하면 화면 중앙에는 블러가 없고, 화면 주변에는 중간 정도의 블러를, 바깥 가장자리에는 더 강한 블러를 적용하여 가변 블러 이펙트를 생성함으로써 화면 전체에 각기 다른 블러링을 적용할 수 있습니다.
- TripleBilinearLerp 노드의 알파 입력에 연결된 Constant 노드를 삭제합니다.
- TripleBilinearLerp 노드의 알파 입력을 드래그하여 Multiply 노드를 추가합니다.
- Multiply 노드의 A 입력을 드래그하여 Length 표현식을 추가합니다.
- Length 노드의 입력을 드래그하여 Subtract 노드를 추가합니다.
- Subtract 노드에서 B 입력 값을 0.5 로 설정합니다.
- 이렇게 하면 스크린 스페이스에서 블러 위치가 프레임의 중앙으로 이동합니다.
- Subtract 노드의 A 입력을 드래그하여 Screen Position 노드를 추가합니다.
- 적용(Apply) 을 클릭하여 머티리얼을 컴파일합니다.
이제 그래프 모습이 아래 이미지처럼 보일 것입니다.

알파 의 Multiply 에서 B 입력 값을 조정하여 화면에 나타나는 블러의 강도를 제어합니다.

![]() |
![]() |
![]() |
Alpha Multiply: 1.0 | Alpha Multiply: 1.5 | Alpha Multiply: 2.0 |
Multiply 노드 앞에 Subtract 노드를 추가하여 화면 중앙에 블러가 발생하지 않는 영역을 생성함으로써 이 이펙트를 더 세밀하게 제어할 수 있습니다.

Subtract 노드의 B 값을 점진적으로 조정하여 화면 중앙에 블러 미발생 영역을 스케일링할 수 있습니다.
![]() |
![]() |
![]() |
Subtract: 0.0(이펙트 없음) | Subtract: 0.1 | Subtract: 0.25 |
이 이펙트로 화면의 블러 적용 위치를 육안으로 검사하는 머티리얼 로직 설정 방법을 알아보려면 이 페이지의 머티리얼 이펙트 디버깅을 위해 컬러 적용하기 섹션을 참조하세요.
포스트 프로세스 볼륨에 포스트 프로세스 머티리얼 추가하기
마지막 단계는 포스트 프로세스 머티리얼을 설정하고 씬의 포스트 프로세스 볼륨에 추가하여 가변 블러 포스트 프로세스 이펙트가 작동하는 모습을 확인하는 것입니다.
-
씬에 포스트 프로세스 볼륨 을 추가한 후, 적용하는 이펙트를 확인할 수 있을 만큼 큰 영역을 포함하도록 해당 볼륨을 스케일링합니다.
무한 규모(언바운드)(Infinite Extent (Unbound)) 박스를 체크하여 볼륨이 바운딩 박스만이 아니라 전체 월드를 커버하도록 할 수 있습니다.
- 디테일 패널의 렌더링 기능(Rendering Features) 아래에서 포스트 프로세스 머티리얼(Post Process Materials) 섹션을 펼칩니다.
- 배열(Array) 옆의 추가(+) 아이콘을 클릭하여 새로운 포스트 프로세스 머티리얼 엘리먼트를 추가합니다. 배열 엘리먼트가 7 개가 될 때까지 이 단계를 계속합니다.
- 각 배열 엘리먼트 옆의 드롭다운을 클릭하고 에셋 레퍼런스 를 선택합니다.
- 각 배열 엘리먼트 옆의 드롭다운을 클릭하고 이 가이드를 따라 생성한 각 포스트 프로세스 머티리얼 을 할당합니다. 다음과 같은 순서로 실행되기 때문에 이러한 순서로 할당해야 합니다.
- HalfA
- HalfB
- HalfC
- QuarterA
- QuarterB
- QuarterC
- BlurApply
이제 포스트 프로세스 머티리얼 배열이 아래처럼 보일 것입니다.

이펙트를 포스트 프로세스 볼륨에 적용하면 그 이펙트는 아래와 같이 블러 없는 중앙, 중간 정도 블러의 중간 부분, 강한 블러의 바깥 가장자리가 있는 모습으로 보일 것입니다.
![]() |
![]() |
일인칭 템플릿 | 삼인칭 템플릿 |
얼핏 보면 화면의 어느 부분이 블러가 없고 어느 부분이 중간 블러고 어느 부분이 강한 블러인지 알기 어렵습니다. 이 페이지의 머티리얼 이펙트 디버깅을 위해 컬러 적용하기 섹션에 있는 지침에 따라 머티리얼 로직을 사용하여 블러가 적용된 부분을 육안으로 검사할 수 있습니다.
머티리얼 이펙트 디버깅을 위해 컬러 적용하기
가변 블러 이펙트를 씬에 더 잘 보이게 하려면 약간의 머티리얼 로직과 몇 가지 컬러 모듈레이션을 적용하면 됩니다. 이렇게 하면 화면에서 사용자 씬 텍스처 입력에 적용된 다양한 레벨의 블러를 개별적으로 파악할 수 있습니다.
- BlurApply 머티리얼을 엽니다.
- UserSceneTexture:HalfC 의 컬러 출력을 드래그하여 Multiply 노드를 추가합니다.
- 그래프를 우클릭하고 Constant4Vector 를 추가한 다음 컬러를 설정합니다.
- RGBA 컬러 핀 을 Multiply 노드의 B 입력에 연결합니다.
- Multiply 출력을 TripleBilinearLerp 노드의 B 입력에 연결합니다.
- UserSceneTexture:QuarterC 노드에도 앞의 단계를 반복하고 Multiply 를 TripleBilinearLerp 노드의 C 입력에 연결합니다.
다음과 비슷한 모습이 됩니다.

이렇게 하면 머티리얼 프리뷰 창이 아래 이미지와 비슷한 모습으로 보입니다.

이렇게 구성한 다음에는 TripleBilinearLerp 의 Alpha 입력에 Multiply 노드를 사용하여 가변 블러 이펙트의 스케일을 키울 수 있습니다.

아래 예시는 머티리얼 프리뷰 창에 이러한 스케일링 인수를 보여줍니다.
![]() |
![]() |
![]() |
디버그 컬러 Alpha Multiply: 1.0 | 디버그 컬러 Alpha Multiply: 1.5 | 디버그 컬러 Alpha Multiply: 2.0 |
Subtract 노드는 프레임 중앙에 블러링이 전혀 없는 비활성 영역을 생성하는 데 도움이 됩니다. 작은 값에서 점진적으로 값을 높여가면서 원하는 비활성 영역을 정합니다.

아래는 프레임 중앙에 블러 없이 Subtract 값을 점진적으로 높인 몇 가지 예시입니다.
![]() |
![]() |
![]() |
디버그 컬러 Subtract: 0.0(이펙트 없음) | 디버그 컬러 Subtract: 0.1 | 디버그 컬러 Subtract: 0.25 |
이 머티리얼이 포스트 프로세스 볼륨에 적용되면, 이 머티리얼을 사용하여 게임 세팅에서 가변 블러 이펙트가 어떻게 적용되는지 명확하게 확인할 수 있습니다. 아래 일인칭 템플릿과 삼인칭 템플릿을 사용한 이미지가 그 예입니다.
![]() |
![]() |
머티리얼 디버그 컬러를 사용하는 일인칭 템플릿. | 머티리얼 디버그 컬러를 사용하는 삼인칭 템플릿. |