float3 gradient4(float3 r, float3 g, float3 b, float x) {
return select(select(mix(r, g, x * 3),
mix(g, b, x * 3 - 1.0),
x > 1.0 / 3.0),
mix(b, r, x * 3 - 2.0),
x > 2.0 / 3.0);
}
r, g, b - условны (в первых примерах буду использовать чистые цвета, но по сути там может быть что угодно)
градиент будет r-g-b-r
На картинке - результат для sRGB (без каких-либо преобразований дополнительных). Как видно, цвета грязные и темнят, хотя так быть не должно.
НИКОГДА НЕ МЕШАЙТЕ ЦВЕТА В sRGB (а это почти всегда дефолтное цветовое пространство) - мешайте как минимум в linear RGB
