summaryrefslogtreecommitdiffstats
path: root/math.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-04-24 12:24:38 -0700
committeryum <yum.food.vr@gmail.com>2025-04-24 12:25:01 -0700
commit9a3459e7ba2c33376d9e705f751b1ac571509f92 (patch)
treec63c00adbfc79e434beb9ff78149863529d3f49c /math.cginc
parent7aae547b83c94ff3ecf62524809ecb21d6061d33 (diff)
add cmyk warping planes gimmick to decals
renders the decal 4 times one planes, and applies domain warping to each plane. Requires a 4-channel (RGBA) noise texture.
Diffstat (limited to 'math.cginc')
-rw-r--r--math.cginc37
1 files changed, 37 insertions, 0 deletions
diff --git a/math.cginc b/math.cginc
index f2b64fa..8ada893 100644
--- a/math.cginc
+++ b/math.cginc
@@ -246,4 +246,41 @@ void calcNormalInScreenSpace(inout float3 normal, float3 objPos) {
normal = normalize(cross(ddy(objPos), ddx(objPos)));
}
+// Formulae from here: https://www.rapidtables.com/convert/color/rgb-to-cmyk.html
+float4 rgbToCmyk(float3 rgb) {
+ float4 cmyk;
+ cmyk[3] = 1 - max(rgb.r, max(rgb.g, rgb.b));
+ cmyk[0] = (1 - rgb.r - cmyk[3]) / (1 - cmyk[3]);
+ cmyk[1] = (1 - rgb.g - cmyk[3]) / (1 - cmyk[3]);
+ cmyk[2] = (1 - rgb.b - cmyk[3]) / (1 - cmyk[3]);
+ return cmyk;
+}
+
+float rgbToCmyk_C(float3 rgb) {
+ float k = 1 - max(rgb.r, max(rgb.g, rgb.b));
+ float c = (1 - rgb.r - k) / (1 - k);
+ return c;
+}
+float rgbToCmyk_M(float3 rgb) {
+ float k = 1 - max(rgb.r, max(rgb.g, rgb.b));
+ float m = (1 - rgb.g - k) / (1 - k);
+ return m;
+}
+float rgbToCmyk_Y(float3 rgb) {
+ float k = 1 - max(rgb.r, max(rgb.g, rgb.b));
+ float y = (1 - rgb.b - k) / (1 - k);
+ return y;
+}
+float rgbToCmyk_K(float3 rgb) {
+ float k = 1 - max(rgb.r, max(rgb.g, rgb.b));
+ return k;
+}
+
+float3 cmykToRgb(float4 cmyk) {
+ return float3(
+ (1 - cmyk[0]) * (1 - cmyk[3]),
+ (1 - cmyk[1]) * (1 - cmyk[3]),
+ (1 - cmyk[2]) * (1 - cmyk[3]));
+}
+
#endif // __MATH_INC