Sample Gradient 노드
설명
특정 Time 입력을 고려하여 그레디언트를 샘플링합니다. 셰이더에서 사용할 벡터 4 컬러 값을 반환합니다.
포트
이름 | 방향 | Type | 바인딩 | 설명 |
---|---|---|---|---|
그레디언트 | 입력 | 그레디언트 | None | 샘플링할 그레디언트 |
Time | 입력 | 플로트 | None | 그레디언트를 샘플링할 시점(0.0–1.0) |
Out | 출력 | 벡터 4 | None | 값을 Vector4로 출력 |
생성된 코드 예제
다음 예제 코드는 이 노드의 가능한 결과 중 하나입니다.
void Unity_SampleGradient_float(float4 Gradient, float Time, out float4 Out)
{
float3 color = Gradient.colors[0].rgb;
[unroll]
for (int c = 1; c < 8; c++)
{
float colorPos = saturate((Time - Gradient.colors[c-1].w) / (Gradient.colors[c].w - Gradient.colors[c-1].w)) * step(c, Gradient.colorsLength-1);
color = lerp(color, Gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), Gradient.type));
}
# ifndef UNITY_COLORSPACE_GAMMA
color = SRGBToLinear(color);
# endif
float alpha = Gradient.alphas[0].x;
[unroll]
for (int a = 1; a < 8; a++)
{
float alphaPos = saturate((Time - Gradient.alphas[a-1].y) / (Gradient.alphas[a].y - Gradient.alphas[a-1].y)) * step(a, Gradient.alphasLength-1);
alpha = lerp(alpha, Gradient.alphas[a].x, lerp(alphaPos, step(0.01, alphaPos), Gradient.type));
}
Out = float4(color, alpha);
}