UE 5.01 2022 05 22
커스텀 표현식 개념
사용자 정의 표현식(Custom expression)이란 임의의 입력에 대해 작동하고 작업 결과를 출력 하는 사용자 정의 HLSL 셰이도 코드를 작성하는 데 사용됩니다.
- 사용자 정의 노드를 사용하면 지속적인 접기를 방지하고 내장 노드로 수행되는 동등한 버전보다 훨씬 더 많은 명령을 사용할 수 있습니다.
- UE의 커스텀 노드는 어떠한 것도 축소할 수 없습니다. 이는 기존 노드로 구성된 동급 버전보다 덜 효율적인 셰이더를 생성할 수 있습니다. 따라서 기존 노드에서는 불가능한 기능에 액세스 할 수 있는 경우에만 사용자 지정 노드를 사용하는 것이 가장 좋습니다.
- 사용자 정의 노드에 작성된 셰이더 코드는 유효한 HLSL이어야 합니다.
Material editor 이용하기
- Window툴바의 Shader code에서 HLSL코드를 볼 수 있습니다.
- Property Materix에서 보다 편하게 작업할 수 있습니다. 또는 IDE에서 작업후 옮길 수 있습니다.
Multiple Outputs and Passes
? Multiple Outputs와 Multiple Passes어떻게 쓰는건지 이해 못하겠어요.
- 참고자료
- Custom Expressions
커스텀 표현식 함수 호출 방법
CustomExpression은 hlsl 변환기에 의해 자동으로 이름이 지정됩니다. 이러한 상황에서 함수를 생성하여 호출하기 위해서는 다음과 같은 편법을 이용할 수 있습니다.
- 사용하지 않는 노드는 생략되므로 사용하도록 연결시켜야 합니다.
- 편법이므로 hlsl코드를 보면 좋지 않은 부분을 볼 수 있습니다.
Function
return 1.0f;
}
float CustomFunction()
{
return 1.0f;
Custom
return CustomFunction();
뭐… 알아서
다른 방법들
-
Engine\Shaders의 “Common.usf” 끝에 함수를 추가할 수 있습니다. 이 함수는 사용자 정의 노드 내에서 호출할 수 있습니다.
-
.ush파일을 작성한 다음 커스텀 노드에서 #include하는 방식이 있습니다.
-
함수 내에서 Functor class를 작성한 후 호출하는 방법이 있습니다. 이 방식은 다른 Custom node에서 재활용 할 수 없다는 단점이 있습니다.
-
#define을 이용해 함수를 작성하여 호출할 수 도 있습니다.