엄연하게 표현식과 함수는 다르다.
function과 다른의미로 생각하고 내용을 들어가는 것을 권장한다.
값을 확인하고 싶다면 "DebugScalarValues"를 사용할 수 있다
- 출력값을 Emissive Color에 연결하여 값을 프리뷰에서 확인할 수 있다.
1. 수학적 연산을 기반으로 한 노드들
이름 |
설명
|
사진 |
Add : 더하기
|
- 사칙연산의 "덧셈"연산.
- 같은개수의 컨테이너끼리 연산이 성립
Tip: Add는 색을 밝게/ 어둡게 하거나 UV 텍스쳐 좌표를 오프셋 할때 사용할 수 있음 |
|
Subtract : 빼기
|
- 사칙연산의 "빼기"연산
- Add와 마찬가지로 각각 채널별로 연산
- 같은 개수의 컨테이너를 가지고 있어야 성립 Tip: 색을 어둡게하고 UV를 오프셋 하는데 사용할 수 있음 |
|
Multiply : 곱하기
|
- 기본적으로 사칙연산의 "곱하기"
1) 하나의 컨테이너와 여러 컨테이너의 곱셈 2) 여러개 컨테이너 끼리의 곱셈
주의할 점 - 언리얼에서는 머티리얼의 범위가 (0~1)사이로 제한되어있지 않기때문에, 곱셈 연산 후에 결과값이 만약 1보다 크다면 색이 밝아지게 된다.
- clamp 나 saturation과 같은 노드로 값을 제한해줘야합니다.
Tip: 색/텍스쳐를 밝거나 어둡게 할때, 또는 UV좌표를 조작할때 자주 사용됩니다 |
|
Divide : 나누기
|
- 기본적으로 사칙연산의 "나누기" 주의할점 - 어느 채널이든 제수가 0~0.00001이면 0.00001로 올리고, 0~0.00001이면, -0.00001로 내립니다 - 0으로 나누기 오류가 발생할 가능성을 없애기 위함 - 하지만 이렇게하면 채널의 출력값이 매우 커질 수 있습니다 Tip: 색/텍스쳐를 어둡게 할때, 또는 UV좌표를 조작할때 자주 사용됩니다 |
|
Power : 제곱
|
- 제곱연산을 할때 사용함 - Base : 밑 - Exp : 지수 ex) Base =0.5 , Exp = 2.0 --------> 0.5*0.5 = 0.25 Tip: 전달되는 색의범위가 0~1인경우: Power는 매우 밝은 값일때는 약간 어두워 지지만, 낮은 값일수록 밝기가 급격히 어두워지는 일조의 "대비조절"효과를 낼 수 있습니다. (Contrast 효과를 낼 수 있음) |
|
SquareRoot : 루트
|
- 제곱근을 출력하는 연산 - 벡터에 적용하면 각 컴포넌트별로 개별적인 처리가 됨 Tip: 범위가 0~1인 텍스쳐의 경우 이 표현식은 이미지에서 대비를 눈에 띄게 감소시킵니다. |
|
DotProduct : 내적
|
- 두 입력의 내적, 하나의 벡터를 다른 벡터에 투영했을때의 길이를 계산 - 감쇠계산 기법에 많이 사용됩니다. - Magnitude ( 두 벡터 사이의 코사인에 크기)를 곱한 값이기도 합니다. |
|
CrossProduct :외적
|
- 두 3채널 벡터값 입력을 계산하여 결과를 3채널 벡터 값으로 출력합니다. - 공간에 벡터가 두개 있다면 외적은 이 두 입력에 모두 수직인 벡 |
2. 값을 보정하는 노드
Abs (절댓값) | - Abs는 수학적 용어인 ‘절댓값(Absolute value)’의 약어 - 이 노드는 입력된 값의 절댓값을 출력합니다. - 절댓값은 숫자의 부호를 무시하고 양수로 변환하는 것을 의미합니다. 따라서 양수와 0은 그대로 출력되고, 음수는 양수로 변환됩니다 Tip: Abs 노드는 일반적으로 벡터 간의 내적(Dot Product) 계산에서 많이 사용됩니다. 내적 계산 결과는 두 벡터가 평행한지, 직각인지 또는 그 중간 상태인지를 나타냅니다 내적 값은 -1.0부터 1.0 사이의 값을 가지며, 이 값의 절댓값을 취하면 음수 값도 양수로 변환되므로 방향에 상관없이 두 벡터의 관계를 파악할 수 있습니다. |
|
Ceil | - 값을 받으면 더 큰 정수로 소수점을 올림한 결과를 출력 | |
Floor | - 값을 받으면 더 작은 정수로 소수점을 내림한 결과를 출력 | |
Clamp | - 최솟값과 최댓값을 특정 범위로 결과값을 제한합니다. - 사용할 범위제한 방식을 설정할 수 있습니다. - CMODE_Clamp는 범위의 상한과 하한을 모두 제한하 - CMODE_ClampMin or Max는 각각 사 |
|
Fmod | - 두 입력의 나누기연산에서 float의 나머지를 반환 - (A는 어떤 값이든 될 수 있지만, 음수일경우 결과값도 음수) - ( 0 으로 나눌 수 없음으로 B는 0이 아니어야하지만, 음수든지 양수든지 결과에 영향을 주지 않음) Tip: 최댓값으로 밝이를 올려주는 머티리얼을 만들고, 다음 프레임에서 바로 밝이를 최솟값으로 낮춘 후 다시 최댓값으로 올려야 할때 사용 |
|
Frac | - 값을 받아 그 값의 소수점 부분을 추력 - (입력값이 X ) ------> (X에서 X의 Floor를 뺀값) - 출력값의 범위는 0~1 - 하한값은 포함 , 상한값은 포함하지 않음 |
|
Linear Interpolation (Lerp) |
- Alpha 값을 이용해서 마스크로 두 입력값을 블렌딩 합니다. - 포토샵의 레이어 마스크와 같은 역할 - 마스크의 강도 알파는 두 입력값에서 취할 색의 비율을 결정 - Alpha = 0 ---> A - Alpha = 1 ---->B - 채널별로 적용시킬 수도 있다. 예를 들어 RGB를 알파에 연결할경우, A와 B에 연결된 각각 RGB채널에 따로따로 독립적으로 적용됨 |
|
Max | - 두 입력을 받고 둘중에 높은 입력을 출력 Tip: 컬러 입력에 사용하면 Lighten 레이어 블렌딩 효과가 나옴 |
|
Min | - 두 입력을 받고 둘중에 낮은 입력을 출력 Tip: 컬러입력에 사용하면 Darken 레이어 블렌딩 효과가 나옴 |
|
Normalize | - 입력에 정규화된 값을 계산하여 출력 - 정규화된 벡터의 전체길이는 1.0 - 즉, 입력의 각 요소를 벡터의 총 세기(길이) 로 나눔 ex) - (0,2,0) ----> (0,1,0) - (0,0.2,0) ----> (0,1,0) - (0,1,-1) ----> (0,0.707,0.707) |
|
OneMinus | - X를 입력받고 1-X를 출력합니다. ex) Tip: 색의 범위가 0~1인경우 OneMinus는 invert와 같은 효과를 줄수 있습니다 |
|
Round | - 입력받은 값을 가장 가까운 정수로 반올림 - 입력값은 소수부분이 0.5 이상인 경우 출력값은 반올림 됨 |
|
Saturate | - 노드의 값을 0~1로 범위를 제한함 - 값이 0보다 작으면 0 - 1보다 크면 1 - 거의 비용이 들지 않으므로, 입출력값을 0~1로 범위제한 하려는 경우 이 노드를 사용하면 퍼포먼스에 거의 영향을 주지 않음 |
|
Step | - 각 X값이Y의 참조 값보다 큰지 작은지에 따라 0 또는 1을 반환합니다. - Y의 값을 기준 - X의 값이 Gradient의 경우 Y보다 작은 값은 0, 큰값은 1 |
|
SmoothStep | - 최소 한계치, 최대 한계치 사이에서 0~1값을 보간함 - Min : 보간의 하한을 정함 -> 이하의 값은 0을 반환 - Max: 보간의 상한을 정함 -> 이상의 값은 1을 반환 - Value: 보간의 소스 값을 정의 -> 그라디언트나 텍스쳐 맵 등을 넣을 수 있음 |
|
Sign | - 입력값이 양수인지, 음수인지 정확히 0 인지를 나타냄 - 음수-> -1 - 0 -> 0 - 양수-> 1 |
|
Truncate | - 정수부분만 남기고 소수점을 버림 |
구조체를 기반한 노드들
Append Vector
Append Vector |
- 컨테이너를 추가하여 여러개의 자료들을 하나의 묶음으로 묶는 함수
- 어떤 자료의 묶음을 만들어내는 것 = 구조체 , 묶여저 있는 자료형들 = 컨테이너들 - 하나의 값에 덛붙이는 작업을 Append한다 라고 부른다. 즉, - 대표적인 예로 Vector3 값은 3개의 float 컨테이너를 묶은 구조체다 ex ) (0.2)와 (0.4)의 append 는 (0.2, 0.4)ex) (0.2, 0.4) 와 (0.1)의 append는(0.2, 0.4, 0.1)이다. |
|
ComponentMask | - RGBA중에 하나이상의 채널을 분리하여 출력으로 통과시킬 수 있다. - 입력에 존재하지 않는 채널을 통과시키려 할 경우 오류가 발생 - 단, 단일 상수의 경우 출력됨 |
삼각함수 기반의 노드들
Sine | - 0~1 범위와 , 1-~1 출력 범위에서 반복되는 사인 곡선 값을 출력 Tip: 입력에 Time 표현식을 연결하여 연속되는 진동파형을 출력하는데 사용하는 경우가 많다. 즉, 진동 이펙트가 사용한 경우 유용하게 사용할 수 있다. 1) 월드 스페이스 또는 스크린 스페이스 에서 물결을 만들때 2) 연속적이고 부드러운 사이클이 필요한경우 3) 파형의 시각적 표현은 사진과 같다 |
|
Cosine | - 0~1 범위와 , 1-~1 출력 범위에서 반복되는 코사인 곡선 값을 출력 - Cos(x)는 (Sin(x+0.25)) 와 같음 - Sine 파형에 비교해서 1/4만큼 offset 되어있음 - 나머지는 Sine과 동일함 Tip: Sin과 Cos는 결국 시작점이 0이냐 1이냐의 차이다. |
|
Tangent | - 지정한 값의 탄젠트를 출력 - 상단 바는 결과를 색으로 출력해서 보여줌 =좌측 끝은 입력값이 -1일때 이 표현식을 사용한 결과의 색 =우측 끝은 입력값이 1일때의 결과 - 그래프의 X축은 (-1 ~ 1)의 범위를 나타낸다 - Y축은 Tangent를 사용한 결과값이다. |
|
Arcsine | - 역 사인함수를 출력 - 그래프의 X축은 (-1 ~ 1)의 범위를 나타낸다 - Y축은 Arcsine 를 사용한 결과값이다 |
|
ArcsineFast | 정확도는 느리지만 계산 속도가 빠른 역 사인의 근사 함수를 출력 | |
Arccosine | -역 코사인 함수를 출력 - 그래프의 X축은 (-1 ~ 1)의 범위를 나타낸다 - Y축은 Arccosine 를 사용한 결과값이다 |
|
ArccosineFast | 정확도는 느리지만 계산 속도가 빠른 역코사인의 근사 함수를 출력 | |
Arctangent | - 역 탄젠트 함수를 출력 - 그래프의 X축은 (-1 ~ 1)의 범위를 나타낸다 - Y축은 Arctangent 를 사용한 결과값이다 |
|
ArctangentFast | 정확도는 느리지만 계산 속도가 빠른 역탄젠트의 근사 함수를 출력 | |
Arctangent2 | - x/y의 역탄젠트를 출력하며, 입력 부호를 통해 사분면을 결정 - 그래프의 X축은 (-1 ~ 1)의 범위를 나타낸다 - Y축은 Arctangent2 를 사용한 결과값이다 |
|
Arctangent2Fast | 정확도는 느리지만 계산 속도가 빠른 역탄젠트2의 근사 함수를 출력 |
로그 기반의 노드들
Logarithm2 | - 입력값에 밑이 2인 로그값을 반환 - 밑이 2인 어떤 값을 이 표현식으로 반환되는 수만금 제곱하면 입력값이 나옴 |
|
Logarithm10 | - 밑이 10인 로그값을 반환 - 입력값의 일반로그 - 밑이 10인 어떤 값을 이 표현식으로 반환되는 수만큼 2제곱하면 입력값이 나옴 |
'테크니컬 아트 > 언리얼 머티리얼' 카테고리의 다른 글
머티리얼 프로그래밍 기초 개념 (0) | 2024.07.12 |
---|---|
테크니컬 아트 : 기초 개념 1 (0) | 2024.07.01 |
머티리얼 (쉐이더) 최적화 기초 (1) | 2024.07.01 |
How to Make Default Master Material (0) | 2024.06.24 |