summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-09-20 18:27:37 -0700
committeryum <yum.food.vr@gmail.com>2024-09-20 18:28:48 -0700
commit8bcfe9a6a31e4c4400cb0be4fb1823748ec7fcb2 (patch)
treef2920dbf7f8777902167a6a6b85efdcf60eccab9
parent9c3b0eb22f65c158462894ed849ce9866446abd0 (diff)
Fix subtle bug in LRGB <-> XYZ conversion
Also do some misc cleanup.
-rw-r--r--Editor/tooner.cs5
-rw-r--r--oklab.cginc42
-rw-r--r--tooner.shader70
3 files changed, 53 insertions, 64 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs
index 24c693e..1ee5135 100644
--- a/Editor/tooner.cs
+++ b/Editor/tooner.cs
@@ -447,11 +447,6 @@ public class ToonerGUI : ShaderGUI {
}
}
- void DoBrightness() {
- MaterialProperty bc;
-
- }
-
void DoEmission() {
if (!AddCollapsibleMenu("Emission", "_Emission")) {
return;
diff --git a/oklab.cginc b/oklab.cginc
index 4c33428..c91204d 100644
--- a/oklab.cginc
+++ b/oklab.cginc
@@ -1,7 +1,7 @@
/*
* MIT License
*
- * Copyright (c) 2023 yum_food
+ * Copyright (c) 2023-2024 yum_food
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
@@ -40,9 +40,8 @@ float3 LRGBtoXYZ(float3 c) {
float3x3 rgb_to_xyz = float3x3(
0.4124, 0.3576, 0.1805,
0.2126, 0.7152, 0.0722,
- 0.0193, 0.1192, 0.9505
- );
- return mul(rgb_to_xyz, c);
+ 0.0193, 0.1192, 0.9505);
+ return saturate(mul(rgb_to_xyz, c));
}
// Weights: https://en.wikipedia.org/wiki/SRGB
@@ -50,23 +49,20 @@ float3 XYZtoLRGB(float3 c) {
float3x3 xyz_to_rgb = float3x3(
3.24062548, -1.53720797, -0.4986286,
-0.96893071, 1.87575606, 0.04151752,
- 0.05571012, -0.20402105, 1.05699594
- );
- return mul(xyz_to_rgb, c);
+ 0.05571012, -0.20402105, 1.05699594);
+ return saturate(mul(xyz_to_rgb, c));
}
// Source: https://bottosson.github.io/posts/oklab/
float3 XYZtoOKLAB(float3 c) {
float3x3 m1 = float3x3(
- 0.8189, 0.3618, -0.1288,
- 0.0329, 0.9293, 0.0361,
- 0.0482, 0.2643, 0.6338
- );
+ 0.8189330101, 0.3618667424, -0.1288597137,
+ 0.0329845436, 0.9293118715, 0.0361456387,
+ 0.0482003018, 0.2643662691, 0.6338517070);
float3x3 m2 = float3x3(
- 0.2104, 0.7936, -0.0040,
- 1.9779, -2.4285, 0.4505,
- 0.0259, 0.7827, -0.8086
- );
+ 0.2104542553, 0.7936177850, -0.0040720468,
+ 1.9779984951, -2.4285922050, 0.4505937099,
+ 0.0259040371, 0.7827717662, -0.8086757660);
c = mul(m1, c);
c = pow(c, 0.33333333333);
return mul(m2, c);
@@ -75,17 +71,15 @@ float3 XYZtoOKLAB(float3 c) {
// Source: https://bottosson.github.io/posts/oklab/
float3 OKLABtoXYZ(float3 c) {
float3x3 m1i = float3x3(
- 1.22700842, -0.5576564 , 0.28111404,
- -0.04047048, 1.11219073, -0.07157255,
- -0.07643651, -0.42138367, 1.58625265
- );
+ 1.22701385, -0.55779998, 0.28125615,
+ -0.04058018, 1.11225687, -0.07167668,
+ -0.07638128, -0.42148198, 1.58616322);
float3x3 m2i = float3x3(
- 1.00003964, 0.39638005, 0.21589049,
- 0.99998945, -0.10553958, -0.06374665,
- 0.99999105, -0.08946276, -1.291495
- );
+ 1.00000000, 0.39633779, 0.21580376,
+ 1.00000001, -0.10556134, -0.06385417,
+ 1.00000005, -0.08948418, -1.29148554);
c = mul(m2i, c);
- c = pow(c, 3);
+ c = pow(c, 3.0);
return mul(m1i, c);
}
diff --git a/tooner.shader b/tooner.shader
index 64faef1..84a6539 100644
--- a/tooner.shader
+++ b/tooner.shader
@@ -8,7 +8,7 @@ Shader "yum_food/tooner"
{
_Color("Base color", Color) = (0.8, 0.8, 0.8, 1)
_Metallic("Metallic", Range(0, 1)) = 0
- _Roughness("Roughness", Range(0, 4)) = 1
+ _Roughness("Roughness", Range(0, 4)) = 0.5
_Roughness_Invert("Roughness invert", Float) = 0
_Clearcoat_Enabled("Clearcoat enabled", Float) = 0
@@ -516,40 +516,40 @@ Shader "yum_food/tooner"
_Discard_Enable_Static("Enable discard feature (static)", Float) = 0
_Discard_Enable_Dynamic("Enable discard feature (dynamic)", Float) = 0
- _PBR_UI_Show("UI hide", Float) = 1
- _PBR_Overlay_UI_Show("UI hide", Float) = 0
- _PBR_Overlay0_UI_Show("UI hide", Float) = 0
- _PBR_Overlay1_UI_Show("UI hide", Float) = 0
- _PBR_Overlay2_UI_Show("UI hide", Float) = 0
- _PBR_Overlay3_UI_Show("UI hide", Float) = 0
- _Clearcoat_UI_Show("UI hide", Float) = 0
- _Decal_UI_Show("UI hide", Float) = 0
- _Decal0_UI_Show("UI hide", Float) = 0
- _Decal1_UI_Show("UI hide", Float) = 0
- _Decal2_UI_Show("UI hide", Float) = 0
- _Decal3_UI_Show("UI hide", Float) = 0
- _Lighting_UI_Show("UI hide", Float) = 0
- _Emission_UI_Show("UI hide", Float) = 0
- _Shading_UI_Show("UI hide", Float) = 0
- _Matcaps_UI_Show("UI hide", Float) = 0
- _Matcap0_UI_Show("UI hide", Float) = 0
- _Matcap1_UI_Show("UI hide", Float) = 0
- _Rim_Lighting0_UI_Show("UI hide", Float) = 0
- _Rim_Lighting1_UI_Show("UI hide", Float) = 0
- _Rim_Lighting2_UI_Show("UI hide", Float) = 0
- _Rim_Lighting3_UI_Show("UI hide", Float) = 0
- _Outlines_UI_Show("UI hide", Float) = 0
- _Glitter_UI_Show("UI hide", Float) = 0
- _Gimmicks_UI_Show("UI hide", Float) = 0
- _Rendering_UI_Show("UI hide", Float) = 0
- _Explosion_UI_Show("UI hide", Float) = 0
- _Geometry_Scroll_UI_Show("UI hide", Float) = 0
- _UV_Scroll_UI_Show("UI hide", Float) = 0
- _Hue_Shift_UI_Show("UI hide", Float) = 0
- _Hue_Shift_OKLAB_UI_Show("UI hide", Float) = 0
- _Hue_Shift_HSV_UI_Show("UI hide", Float) = 0
- _Clones_UI_Show("UI hide", Float) = 0
- _Mochie_UI_Show("UI hide", Float) = 0
+ _PBR_UI_Show("UI show", Float) = 1
+ _PBR_Overlay_UI_Show("UI show", Float) = 0
+ _PBR_Overlay0_UI_Show("UI show", Float) = 0
+ _PBR_Overlay1_UI_Show("UI show", Float) = 0
+ _PBR_Overlay2_UI_Show("UI show", Float) = 0
+ _PBR_Overlay3_UI_Show("UI show", Float) = 0
+ _Clearcoat_UI_Show("UI show", Float) = 0
+ _Decal_UI_Show("UI show", Float) = 0
+ _Decal0_UI_Show("UI show", Float) = 0
+ _Decal1_UI_Show("UI show", Float) = 0
+ _Decal2_UI_Show("UI show", Float) = 0
+ _Decal3_UI_Show("UI show", Float) = 0
+ _Lighting_UI_Show("UI show", Float) = 0
+ _Emission_UI_Show("UI show", Float) = 0
+ _Shading_UI_Show("UI show", Float) = 0
+ _Matcaps_UI_Show("UI show", Float) = 0
+ _Matcap0_UI_Show("UI show", Float) = 0
+ _Matcap1_UI_Show("UI show", Float) = 0
+ _Rim_Lighting0_UI_Show("UI show", Float) = 0
+ _Rim_Lighting1_UI_Show("UI show", Float) = 0
+ _Rim_Lighting2_UI_Show("UI show", Float) = 0
+ _Rim_Lighting3_UI_Show("UI show", Float) = 0
+ _Outlines_UI_Show("UI show", Float) = 0
+ _Glitter_UI_Show("UI show", Float) = 0
+ _Gimmicks_UI_Show("UI show", Float) = 0
+ _Rendering_UI_Show("UI show", Float) = 0
+ _Explosion_UI_Show("UI show", Float) = 0
+ _Geometry_Scroll_UI_Show("UI show", Float) = 0
+ _UV_Scroll_UI_Show("UI show", Float) = 0
+ _Hue_Shift_UI_Show("UI show", Float) = 0
+ _Hue_Shift_OKLAB_UI_Show("UI show", Float) = 0
+ _Hue_Shift_HSV_UI_Show("UI show", Float) = 0
+ _Clones_UI_Show("UI show", Float) = 0
+ _Mochie_UI_Show("UI show", Float) = 0
}
SubShader
{