diff options
| author | yum <yum.food.vr@gmail.com> | 2024-09-20 18:27:37 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-09-20 18:28:48 -0700 |
| commit | 8bcfe9a6a31e4c4400cb0be4fb1823748ec7fcb2 (patch) | |
| tree | f2920dbf7f8777902167a6a6b85efdcf60eccab9 | |
| parent | 9c3b0eb22f65c158462894ed849ce9866446abd0 (diff) | |
Fix subtle bug in LRGB <-> XYZ conversion
Also do some misc cleanup.
| -rw-r--r-- | Editor/tooner.cs | 5 | ||||
| -rw-r--r-- | oklab.cginc | 42 | ||||
| -rw-r--r-- | tooner.shader | 70 |
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 { |
