├── .gitignore ├── LICENSE ├── README.md ├── SXTools_Godot_Shader.tres ├── SXTools_Unity_HDRP_Material.unitypackage ├── SXTools_Unity_URP_Material.unitypackage ├── SXTools_Unreal_Material.uasset ├── categories.json ├── gradients.json ├── materials.json ├── palettes.json └── sxtools2.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 FrandSX 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SX Tools 2 for Blender 2 | NOTE: Please visit the [Documentation Site](https://secretexit.notion.site/SX-Tools-2-for-Blender-Documentation-1681c68851fb4d018d1f9ec762e5aec9) 3 | 4 | ## Comparison 5 | 6 | SX Tools | SX Tools 2 7 | ---------|------------- 8 | Static layer stack | Fully dynamic layerstack 9 | CPU viewport compositing | GPU compositing 10 | Vertex color exporting | Vertex color and palette texture atlas exporting 11 | Transparency only as an export category | Transparency as a per-object viewport feature 12 | 13 | 14 | 15 | ## For Game Developers 16 | SX Tools 2 is a lightweight content pipeline for vertex-colored assets that drive PBR (Physically Based Rendering) materials in a game. This tool ships with baseline shader networks for Unreal and Unity. 17 | 18 | ## For 3D Artists 19 | SX Tools is a multi-layer vertex coloring toolbox, referencing a workflow from common 2D image editing programs. 20 | 21 | ## Highlights 22 | Game artists can now work with vertex colors as layers with opacities and blend modes. Regular paint operations like gradients, color fills and even occlusion baking can be performed directly to vertex color layers. SX Tools 2 comes with a dynamic custom material that displays all edits in the viewport in realtime. 23 | 24 | The artist can therefore apply per-vertex occlusion/metallic/smoothness/transmission/emission directly on the model, and tweak the results interactively. 25 | 26 | ### Features 27 | - Multi-layer vertex color editing 28 | - Layer blend modes (alpha, additive, multiply, overlay) 29 | - Color filler with optional noise 30 | - Color gradient tool with optional noise 31 | - Curvature-based shading 32 | - Vertex ambient occlusion baking 33 | - Mesh thickness baking 34 | - Luminance-based tone-mapping 35 | - Master Palette Tool for quickly replacing the color scheme of object/objects 36 | - PBR Material Library 37 | - Quick-crease tools 38 | - Modifier automations 39 | - Material channel editing (subsurface scattering, occlusion, metallic, roughness) 40 | - FBX-exporting multi-layer vertex-colors to game engines via UV channels to drive the standard PBR material 41 | 42 | ## Installation: 43 | - Download the zip file, uncompress it, then install and enable sxtools2.py through the Blender add-on interface 44 | - Point the library folder in SX Tools 2 prefs to the unzipped folder 45 | - Pick your asset library .json file if you also use [SX Batcher](https://github.com/FrandSX/sxbatcher-blender) 46 | - SX Tools 2 will appear as a tab in the top right corner of the 3D view 47 | 48 | ## Getting Started: 49 | Now would be a good time to visit the [Documentation Site](https://secretexit.notion.site/SX-Tools-2-for-Blender-Documentation-1681c68851fb4d018d1f9ec762e5aec9) 50 | 51 | ## Exporting to Game Engines 52 | The basic flow for using SX Tools in game development is as follows: 53 | 1) Model your assets as low-poly control cages for subdivision 54 | 2) Define the categories needed for your objects in your game 55 | 3) Assign objects to categories 56 | 4) Color the objects according to category-specific layer definitions 57 | 5) Batch-process the objects for export, leave as much work for automation as possible. Take a look at the existing batch functions and adapt to your project needs. 58 | 6) Export to your game engine as FBX 59 | 7) Run the assets using a the provided custom material (or make your own) 60 | 61 | The package contains simple example shader graphs for Unreal4, and both HDRP and URP renderers in Unity. Dynamic palette changes in the game engine are not facilitated by the example shader graphs, but they do fully support driving PBR material channels with UV data. 62 | 63 | Currently the export channels are set in the following way: 64 | 65 | Channel | Function 66 | ---------|------------- 67 | UV0 | Reserved for a regular texturing 68 | UV1 | Reserved for lightmaps 69 | U2 | Layer coverage masks for dynamic palettes 70 | V2 | Ambient Occlusion 71 | U3 | Transmission or SSS 72 | V3 | Emission 73 | U4 | Metallic 74 | V4 | Smoothness 75 | U5 | Alpha Overlay 1, an alpha mask channel 76 | V5 | Alpha Overlay 2, an alpha mask channel 77 | UV6/UV7 | RGBA Overlay, an optional additional color layer 78 | 79 | Vertex colors are exported from the Composite/VertexColor0 layer. Material properties are assigned according to the list above. 80 | Note that emission is exported only as an 8-bit mask for base vertex color, not a full RGBA-channel. 81 | 82 | (c) 2017-2023 Jani Kahrama / Secret Exit Ltd. 83 | 84 | 85 | # Acknowledgments 86 | 87 | Thanks to: 88 | 89 | Rory Driscoll for tips on better sampling 90 | 91 | Serge Scherbakov for tips on working with iterators 92 | 93 | Jason Summers for sRGB conversion formulas 94 | 95 | 96 | SX Tools 2 builds on the following work: 97 | 98 | ### Vertex-to-edge curvature calculation method 99 | Algorithm by Stepan Jirka 100 | 101 | http://www.stepanjirka.com/maya-api-curvature-shader/ 102 | 103 | Integrated into SX Tools 2 under MIT license with permission from the author. 104 | 105 | ### V-HACD For Blender 2.80 106 | Add-on by Alain Ducharme (original author), Andrew Palmer (Blender 2.80) 107 | 108 | https://github.com/andyp123/blender_vhacd 109 | 110 | SX Tools 2 detects the presence of the V-HACD add-on and utilizes it for mesh collider generation. 111 | 112 | -------------------------------------------------------------------------------- /SXTools_Godot_Shader.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="VisualShader" load_steps=63 format=3 uid="uid://cngrj7mk63gxt"] 2 | 3 | [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_pb52p"] 4 | varying_name = "custom1" 5 | varying_type = 5 6 | 7 | [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_4wbid"] 8 | varying_name = "custom2" 9 | varying_type = 5 10 | 11 | [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_ovd6o"] 12 | default_input_values = [0, Quaternion(0, 0, 0, 0)] 13 | op_type = 2 14 | 15 | [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_lxnle"] 16 | default_input_values = [0, Quaternion(0, 0, 0, 0)] 17 | op_type = 2 18 | 19 | [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_sx631"] 20 | default_input_values = [0, Quaternion(0, 0, 0, 0)] 21 | op_type = 2 22 | 23 | [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_vatgg"] 24 | function = 31 25 | 26 | [sub_resource type="VisualShaderNodeVectorCompose" id="VisualShaderNodeVectorCompose_6nkbk"] 27 | default_input_values = [0, 0.0, 1, 0.0, 2, 0.0, 3, 0.0] 28 | 29 | [sub_resource type="VisualShaderNodeColorOp" id="VisualShaderNodeColorOp_n1p5s"] 30 | operator = 4 31 | 32 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_uss3q"] 33 | default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 1, 1), 2, Quaternion(0.5, 0.5, 0.5, 0.5)] 34 | op_type = 5 35 | 36 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_106al"] 37 | default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 1, 1), 2, Quaternion(0.5, 0.5, 0.5, 0.5)] 38 | op_type = 5 39 | 40 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_dntdd"] 41 | default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 1, 1), 2, Quaternion(0.5, 0.5, 0.5, 0.5)] 42 | op_type = 5 43 | 44 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_bihwe"] 45 | parameter_name = "PaletteColor0" 46 | default_value_enabled = true 47 | 48 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_jhlq5"] 49 | parameter_name = "PaletteColor1" 50 | default_value_enabled = true 51 | 52 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_jprjn"] 53 | parameter_name = "PaletteColor2" 54 | default_value_enabled = true 55 | 56 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_535yb"] 57 | parameter_name = "PaletteColor3" 58 | default_value_enabled = true 59 | 60 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_0cskv"] 61 | parameter_name = "PaletteColor4" 62 | default_value_enabled = true 63 | 64 | [sub_resource type="VisualShaderNodeSwitch" id="VisualShaderNodeSwitch_rfkhs"] 65 | default_input_values = [0, false, 1, Vector3(1, 1, 1), 2, Vector3(0, 0, 0)] 66 | op_type = 4 67 | 68 | [sub_resource type="VisualShaderNodeBooleanParameter" id="VisualShaderNodeBooleanParameter_w56gb"] 69 | parameter_name = "Paletted" 70 | default_value_enabled = true 71 | 72 | [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_qi4pg"] 73 | default_input_values = [0, Vector2(0, 0)] 74 | op_type = 0 75 | 76 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_kfken"] 77 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 78 | op_type = 3 79 | 80 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_kd8sc"] 81 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 82 | op_type = 3 83 | 84 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_gdwek"] 85 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 86 | op_type = 3 87 | 88 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_1f0ta"] 89 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 90 | op_type = 3 91 | 92 | [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_m76ng"] 93 | parameter_name = "EmissionIntensity" 94 | hint = 1 95 | max = 100.0 96 | default_value_enabled = true 97 | default_value = 1.0 98 | 99 | [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_jw4f4"] 100 | operator = 2 101 | 102 | [sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_ykiyf"] 103 | operator = 2 104 | 105 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_k2yg2"] 106 | size = Vector2(324.787, 1300) 107 | title = "Palette Colors" 108 | 109 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_rfr8c"] 110 | size = Vector2(223.166, 1022.03) 111 | title = "Palette Masks" 112 | 113 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_bnkef"] 114 | size = Vector2(1219.77, 1239.43) 115 | title = "Palette Layer Compositing" 116 | 117 | [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_0cdn6"] 118 | input_name = "color" 119 | 120 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_d6d3g"] 121 | size = Vector2(417.396, 241.598) 122 | title = "Gradient Layers" 123 | 124 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_uw6tg"] 125 | size = Vector2(423.601, 219.926) 126 | title = "Overlay Layer" 127 | 128 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_j3sfh"] 129 | size = Vector2(398.802, 259.834) 130 | title = "Emission" 131 | 132 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_omarf"] 133 | size = Vector2(363.189, 162.905) 134 | title = "Base Color" 135 | 136 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_4w5g7"] 137 | size = Vector2(836.928, 258.825) 138 | title = "Overlay Source" 139 | 140 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_fcaif"] 141 | size = Vector2(827.652, 259.766) 142 | title = "Metallic, Roughness and Gradient Layer Sources" 143 | 144 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_txh0s"] 145 | size = Vector2(840.421, 403.855) 146 | title = "Palette Layer Masks, Occlusion, Transmission and Emission Source" 147 | 148 | [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_ei162"] 149 | function = 31 150 | 151 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_aukkg"] 152 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 153 | op_type = 3 154 | 155 | [sub_resource type="VisualShaderNodeColorParameter" id="VisualShaderNodeColorParameter_ctm2l"] 156 | parameter_name = "MetallicColor" 157 | default_value_enabled = true 158 | 159 | [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_eb33v"] 160 | default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] 161 | op_type = 3 162 | 163 | [sub_resource type="VisualShaderNodeFresnel" id="VisualShaderNodeFresnel_jjfvg"] 164 | default_input_values = [2, false, 3, 5.0] 165 | 166 | [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_3wvr8"] 167 | parameter_name = "RimPower" 168 | hint = 1 169 | max = 100.0 170 | default_value_enabled = true 171 | default_value = 5.0 172 | 173 | [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_alljb"] 174 | operator = 2 175 | 176 | [sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_4yumx"] 177 | parameter_name = "RimIntensity" 178 | hint = 1 179 | max = 100.0 180 | default_value_enabled = true 181 | default_value = 1.0 182 | 183 | [sub_resource type="VisualShaderNodeComment" id="VisualShaderNodeComment_or8ix"] 184 | size = Vector2(1000.59, 759.81) 185 | title = "Rim" 186 | 187 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_1do4b"] 188 | default_input_values = [0, 1.9, 1, 2.0] 189 | 190 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_iaorh"] 191 | default_input_values = [0, 2.9, 1, 3.0] 192 | 193 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_rhw6e"] 194 | default_input_values = [0, 3.9, 1, 4.0] 195 | 196 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_ew80r"] 197 | default_input_values = [0, 4.9, 1, 5.0] 198 | 199 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_05v7v"] 200 | default_input_values = [0, 5.9, 1, 6.0] 201 | 202 | [sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_wh070"] 203 | default_input_values = [0, 6.9, 1, 7.0] 204 | 205 | [sub_resource type="VisualShaderNodeFloatFunc" id="VisualShaderNodeFloatFunc_4i1cx"] 206 | function = 31 207 | 208 | [sub_resource type="VisualShaderNodeVaryingGetter" id="VisualShaderNodeVaryingGetter_g0uqk"] 209 | varying_name = "custom0" 210 | varying_type = 5 211 | 212 | [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_o1v6s"] 213 | input_name = "custom0" 214 | 215 | [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_ki7pp"] 216 | input_name = "custom1" 217 | 218 | [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_hnusr"] 219 | input_name = "custom2" 220 | 221 | [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_gkgfl"] 222 | input_name = "custom3" 223 | 224 | [sub_resource type="VisualShaderNodeVaryingSetter" id="VisualShaderNodeVaryingSetter_wrqyt"] 225 | varying_name = "custom0" 226 | varying_type = 5 227 | 228 | [sub_resource type="VisualShaderNodeVaryingSetter" id="VisualShaderNodeVaryingSetter_dymfj"] 229 | varying_name = "custom1" 230 | varying_type = 5 231 | 232 | [sub_resource type="VisualShaderNodeVaryingSetter" id="VisualShaderNodeVaryingSetter_74s0g"] 233 | varying_name = "custom2" 234 | varying_type = 5 235 | 236 | [sub_resource type="VisualShaderNodeVaryingSetter" id="VisualShaderNodeVaryingSetter_g2joc"] 237 | varying_name = "custom3" 238 | varying_type = 5 239 | 240 | [resource] 241 | code = "shader_type spatial; 242 | render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; 243 | 244 | 245 | // Varyings 246 | varying vec4 custom0; 247 | varying vec4 custom1; 248 | varying vec4 custom2; 249 | varying vec4 custom3; 250 | 251 | uniform bool Paletted = false; 252 | uniform vec4 PaletteColor0 : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 253 | uniform vec4 PaletteColor1 : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 254 | uniform vec4 PaletteColor2 : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 255 | uniform vec4 PaletteColor3 : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 256 | uniform vec4 PaletteColor4 : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 257 | uniform vec4 MetallicColor : source_color = vec4(1.000000, 1.000000, 1.000000, 1.000000); 258 | uniform float EmissionIntensity : hint_range(0, 100) = 1; 259 | uniform float RimPower : hint_range(0, 100) = 5; 260 | uniform float RimIntensity : hint_range(0, 100) = 1; 261 | 262 | 263 | 264 | void vertex() { 265 | // Input:2 266 | vec4 n_out2p0 = CUSTOM0; 267 | 268 | 269 | // VaryingSetter:6 270 | custom0 = n_out2p0; 271 | 272 | 273 | // Input:3 274 | vec4 n_out3p0 = CUSTOM1; 275 | 276 | 277 | // VaryingSetter:7 278 | custom1 = n_out3p0; 279 | 280 | 281 | // Input:4 282 | vec4 n_out4p0 = CUSTOM2; 283 | 284 | 285 | // VaryingSetter:8 286 | custom2 = n_out4p0; 287 | 288 | 289 | // Input:5 290 | vec4 n_out5p0 = CUSTOM3; 291 | 292 | 293 | // VaryingSetter:9 294 | custom3 = n_out5p0; 295 | 296 | 297 | } 298 | 299 | void fragment() { 300 | // BooleanParameter:35 301 | bool n_out35p0 = Paletted; 302 | 303 | 304 | // ColorParameter:29 305 | vec4 n_out29p0 = PaletteColor0; 306 | 307 | 308 | // ColorParameter:30 309 | vec4 n_out30p0 = PaletteColor1; 310 | 311 | 312 | // VaryingGetter:9 313 | vec4 n_out9p0 = custom0; 314 | 315 | 316 | // VectorDecompose:12 317 | float n_out12p0 = n_out9p0.x; 318 | float n_out12p1 = n_out9p0.y; 319 | float n_out12p2 = n_out9p0.z; 320 | float n_out12p3 = n_out9p0.w; 321 | 322 | 323 | // VectorDecompose:4 324 | float n_out4p0 = vec2(n_out12p0).x; 325 | float n_out4p1 = vec2(n_out12p0).y; 326 | 327 | 328 | // Step:81 329 | float n_in81p0 = 1.90000; 330 | float n_out81p0 = step(n_in81p0, n_out4p0); 331 | 332 | 333 | // Mix:50 334 | vec3 n_out50p0 = mix(vec3(n_out29p0.xyz), vec3(n_out30p0.xyz), vec3(n_out81p0)); 335 | 336 | 337 | // ColorParameter:31 338 | vec4 n_out31p0 = PaletteColor2; 339 | 340 | 341 | // Step:82 342 | float n_in82p0 = 2.90000; 343 | float n_out82p0 = step(n_in82p0, n_out4p0); 344 | 345 | 346 | // Mix:51 347 | vec3 n_out51p0 = mix(n_out50p0, vec3(n_out31p0.xyz), vec3(n_out82p0)); 348 | 349 | 350 | // ColorParameter:32 351 | vec4 n_out32p0 = PaletteColor3; 352 | 353 | 354 | // Step:83 355 | float n_in83p0 = 3.90000; 356 | float n_out83p0 = step(n_in83p0, n_out4p0); 357 | 358 | 359 | // Mix:52 360 | vec3 n_out52p0 = mix(n_out51p0, vec3(n_out32p0.xyz), vec3(n_out83p0)); 361 | 362 | 363 | // ColorParameter:33 364 | vec4 n_out33p0 = PaletteColor4; 365 | 366 | 367 | // Step:84 368 | float n_in84p0 = 4.90000; 369 | float n_out84p0 = step(n_in84p0, n_out4p0); 370 | 371 | 372 | // Mix:53 373 | vec3 n_out53p0 = mix(n_out52p0, vec3(n_out33p0.xyz), vec3(n_out84p0)); 374 | 375 | 376 | // Input:6 377 | vec4 n_out6p0 = COLOR; 378 | 379 | 380 | // Step:85 381 | float n_in85p0 = 5.90000; 382 | float n_out85p0 = step(n_in85p0, n_out4p0); 383 | 384 | 385 | // Mix:71 386 | vec3 n_out71p0 = mix(n_out53p0, vec3(n_out6p0.xyz), vec3(n_out85p0)); 387 | 388 | 389 | // ColorParameter:72 390 | vec4 n_out72p0 = MetallicColor; 391 | 392 | 393 | // Step:86 394 | float n_in86p0 = 6.90000; 395 | float n_out86p0 = step(n_in86p0, n_out4p0); 396 | 397 | 398 | // Mix:74 399 | vec3 n_out74p0 = mix(n_out71p0, vec3(n_out72p0.xyz), vec3(n_out86p0)); 400 | 401 | 402 | // VaryingGetter:10 403 | vec4 n_out10p0 = custom1; 404 | 405 | 406 | // VectorDecompose:13 407 | float n_out13p0 = n_out10p0.x; 408 | float n_out13p1 = n_out10p0.y; 409 | float n_out13p2 = n_out10p0.z; 410 | float n_out13p3 = n_out10p0.w; 411 | 412 | 413 | // Mix:20 414 | vec4 n_out20p0 = mix(vec4(n_out74p0, 0.0), n_out32p0, vec4(n_out13p2)); 415 | 416 | 417 | // FloatFunc:88 418 | float n_out88p0 = 1.0 - n_out13p3; 419 | 420 | 421 | // Mix:21 422 | vec4 n_out21p0 = mix(n_out20p0, n_out33p0, vec4(n_out88p0)); 423 | 424 | 425 | // VaryingGetter:11 426 | vec4 n_out11p0 = custom2; 427 | 428 | 429 | // VectorDecompose:14 430 | float n_out14p0 = n_out11p0.x; 431 | float n_out14p1 = n_out11p0.y; 432 | float n_out14p2 = n_out11p0.z; 433 | float n_out14p3 = n_out11p0.w; 434 | 435 | 436 | // VectorCompose:18 437 | vec3 n_out18p0 = vec3(n_out14p0, n_out14p1, n_out14p2); 438 | 439 | 440 | vec3 n_out19p0; 441 | // ColorOp:19 442 | { 443 | float base = vec3(n_out21p0.xyz).x; 444 | float blend = n_out18p0.x; 445 | if (base < 0.5) { 446 | n_out19p0.x = 2.0 * base * blend; 447 | } else { 448 | n_out19p0.x = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); 449 | } 450 | } 451 | { 452 | float base = vec3(n_out21p0.xyz).y; 453 | float blend = n_out18p0.y; 454 | if (base < 0.5) { 455 | n_out19p0.y = 2.0 * base * blend; 456 | } else { 457 | n_out19p0.y = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); 458 | } 459 | } 460 | { 461 | float base = vec3(n_out21p0.xyz).z; 462 | float blend = n_out18p0.z; 463 | if (base < 0.5) { 464 | n_out19p0.z = 2.0 * base * blend; 465 | } else { 466 | n_out19p0.z = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); 467 | } 468 | } 469 | 470 | 471 | // Mix:25 472 | vec4 n_out25p0 = mix(n_out21p0, vec4(n_out19p0, 0.0), vec4(n_out14p3)); 473 | 474 | 475 | vec3 n_out34p0; 476 | // Switch:34 477 | n_out34p0 = mix(vec3(n_out6p0.xyz), vec3(n_out25p0.xyz), float(n_out35p0)); 478 | 479 | 480 | // FloatParameter:54 481 | float n_out54p0 = EmissionIntensity; 482 | 483 | 484 | // FloatFunc:17 485 | float n_out17p0 = 1.0 - n_out12p3; 486 | 487 | 488 | // VectorOp:55 489 | vec3 n_out55p0 = vec3(n_out6p0.xyz) * vec3(n_out17p0); 490 | 491 | 492 | // VectorOp:56 493 | vec3 n_out56p0 = vec3(n_out54p0) * n_out55p0; 494 | 495 | 496 | // FloatFunc:7 497 | float n_out7p0 = 1.0 - n_out12p1; 498 | 499 | 500 | // FloatParameter:76 501 | float n_out76p0 = RimPower; 502 | 503 | 504 | // Fresnel:75 505 | float n_out75p0 = pow(1.0 - clamp(dot(NORMAL, VIEW), 0.0, 1.0), n_out76p0); 506 | 507 | 508 | // FloatParameter:78 509 | float n_out78p0 = RimIntensity; 510 | 511 | 512 | // FloatOp:77 513 | float n_out77p0 = n_out75p0 * n_out78p0; 514 | 515 | 516 | // Output:0 517 | ALBEDO = n_out34p0; 518 | METALLIC = n_out13p0; 519 | ROUGHNESS = n_out13p1; 520 | EMISSION = n_out56p0; 521 | AO = n_out7p0; 522 | RIM = n_out77p0; 523 | 524 | 525 | } 526 | " 527 | graph_offset = Vector2(-1248.39, -385.277) 528 | varyings/custom0 = "0,5" 529 | varyings/custom1 = "0,5" 530 | varyings/custom2 = "0,5" 531 | varyings/custom3 = "0,5" 532 | nodes/vertex/0/position = Vector2(-200, 0) 533 | nodes/vertex/2/node = SubResource("VisualShaderNodeInput_o1v6s") 534 | nodes/vertex/2/position = Vector2(-1000, 0) 535 | nodes/vertex/3/node = SubResource("VisualShaderNodeInput_ki7pp") 536 | nodes/vertex/3/position = Vector2(-1000, 200) 537 | nodes/vertex/4/node = SubResource("VisualShaderNodeInput_hnusr") 538 | nodes/vertex/4/position = Vector2(-1000, 360) 539 | nodes/vertex/5/node = SubResource("VisualShaderNodeInput_gkgfl") 540 | nodes/vertex/5/position = Vector2(-1000, 540) 541 | nodes/vertex/6/node = SubResource("VisualShaderNodeVaryingSetter_wrqyt") 542 | nodes/vertex/6/position = Vector2(-620, 0) 543 | nodes/vertex/7/node = SubResource("VisualShaderNodeVaryingSetter_dymfj") 544 | nodes/vertex/7/position = Vector2(-620, 200) 545 | nodes/vertex/8/node = SubResource("VisualShaderNodeVaryingSetter_74s0g") 546 | nodes/vertex/8/position = Vector2(-620, 360) 547 | nodes/vertex/9/node = SubResource("VisualShaderNodeVaryingSetter_g2joc") 548 | nodes/vertex/9/position = Vector2(-620, 540) 549 | nodes/vertex/connections = PackedInt32Array(2, 0, 6, 0, 3, 0, 7, 0, 4, 0, 8, 0, 5, 0, 9, 0) 550 | nodes/fragment/0/position = Vector2(4200, 200) 551 | nodes/fragment/4/node = SubResource("VisualShaderNodeVectorDecompose_qi4pg") 552 | nodes/fragment/4/position = Vector2(0, 200) 553 | nodes/fragment/6/node = SubResource("VisualShaderNodeInput_0cdn6") 554 | nodes/fragment/6/position = Vector2(-600, 800) 555 | nodes/fragment/7/node = SubResource("VisualShaderNodeFloatFunc_ei162") 556 | nodes/fragment/7/position = Vector2(0, 340) 557 | nodes/fragment/9/node = SubResource("VisualShaderNodeVaryingGetter_g0uqk") 558 | nodes/fragment/9/position = Vector2(-600, 200) 559 | nodes/fragment/10/node = SubResource("VisualShaderNodeVaryingGetter_pb52p") 560 | nodes/fragment/10/position = Vector2(-600, 1000) 561 | nodes/fragment/11/node = SubResource("VisualShaderNodeVaryingGetter_4wbid") 562 | nodes/fragment/11/position = Vector2(-600, 1400) 563 | nodes/fragment/12/node = SubResource("VisualShaderNodeVectorDecompose_ovd6o") 564 | nodes/fragment/12/position = Vector2(-400, 200) 565 | nodes/fragment/13/node = SubResource("VisualShaderNodeVectorDecompose_lxnle") 566 | nodes/fragment/13/position = Vector2(-400, 1000) 567 | nodes/fragment/14/node = SubResource("VisualShaderNodeVectorDecompose_sx631") 568 | nodes/fragment/14/position = Vector2(-400, 1400) 569 | nodes/fragment/17/node = SubResource("VisualShaderNodeFloatFunc_vatgg") 570 | nodes/fragment/17/position = Vector2(0, 440) 571 | nodes/fragment/18/node = SubResource("VisualShaderNodeVectorCompose_6nkbk") 572 | nodes/fragment/18/position = Vector2(0, 1400) 573 | nodes/fragment/19/node = SubResource("VisualShaderNodeColorOp_n1p5s") 574 | nodes/fragment/19/position = Vector2(3000, -200) 575 | nodes/fragment/20/node = SubResource("VisualShaderNodeMix_uss3q") 576 | nodes/fragment/20/position = Vector2(2320, -340) 577 | nodes/fragment/21/node = SubResource("VisualShaderNodeMix_106al") 578 | nodes/fragment/21/position = Vector2(2520, -340) 579 | nodes/fragment/25/node = SubResource("VisualShaderNodeMix_dntdd") 580 | nodes/fragment/25/position = Vector2(3200, -200) 581 | nodes/fragment/29/node = SubResource("VisualShaderNodeColorParameter_bihwe") 582 | nodes/fragment/29/position = Vector2(-600, -1800) 583 | nodes/fragment/30/node = SubResource("VisualShaderNodeColorParameter_jhlq5") 584 | nodes/fragment/30/position = Vector2(-600, -1600) 585 | nodes/fragment/31/node = SubResource("VisualShaderNodeColorParameter_jprjn") 586 | nodes/fragment/31/position = Vector2(-600, -1400) 587 | nodes/fragment/32/node = SubResource("VisualShaderNodeColorParameter_535yb") 588 | nodes/fragment/32/position = Vector2(-600, -1200) 589 | nodes/fragment/33/node = SubResource("VisualShaderNodeColorParameter_0cskv") 590 | nodes/fragment/33/position = Vector2(-600, -1000) 591 | nodes/fragment/34/node = SubResource("VisualShaderNodeSwitch_rfkhs") 592 | nodes/fragment/34/position = Vector2(3800, 0) 593 | nodes/fragment/35/node = SubResource("VisualShaderNodeBooleanParameter_w56gb") 594 | nodes/fragment/35/position = Vector2(-600, -400) 595 | nodes/fragment/50/node = SubResource("VisualShaderNodeMix_kfken") 596 | nodes/fragment/50/position = Vector2(800, -1800) 597 | nodes/fragment/51/node = SubResource("VisualShaderNodeMix_kd8sc") 598 | nodes/fragment/51/position = Vector2(1000, -1600) 599 | nodes/fragment/52/node = SubResource("VisualShaderNodeMix_gdwek") 600 | nodes/fragment/52/position = Vector2(1200, -1400) 601 | nodes/fragment/53/node = SubResource("VisualShaderNodeMix_1f0ta") 602 | nodes/fragment/53/position = Vector2(1400, -1200) 603 | nodes/fragment/54/node = SubResource("VisualShaderNodeFloatParameter_m76ng") 604 | nodes/fragment/54/position = Vector2(-600, -200) 605 | nodes/fragment/55/node = SubResource("VisualShaderNodeVectorOp_jw4f4") 606 | nodes/fragment/55/position = Vector2(3600, 600) 607 | nodes/fragment/56/node = SubResource("VisualShaderNodeVectorOp_ykiyf") 608 | nodes/fragment/56/position = Vector2(3800, 560) 609 | nodes/fragment/57/node = SubResource("VisualShaderNodeComment_k2yg2") 610 | nodes/fragment/57/position = Vector2(-640, -1860) 611 | nodes/fragment/58/node = SubResource("VisualShaderNodeComment_rfr8c") 612 | nodes/fragment/58/position = Vector2(360, -1760) 613 | nodes/fragment/59/node = SubResource("VisualShaderNodeComment_bnkef") 614 | nodes/fragment/59/position = Vector2(760, -1860) 615 | nodes/fragment/60/node = SubResource("VisualShaderNodeComment_d6d3g") 616 | nodes/fragment/60/position = Vector2(2280, -400) 617 | nodes/fragment/61/node = SubResource("VisualShaderNodeComment_uw6tg") 618 | nodes/fragment/61/position = Vector2(2960, -260) 619 | nodes/fragment/62/node = SubResource("VisualShaderNodeComment_j3sfh") 620 | nodes/fragment/62/position = Vector2(3560, 520) 621 | nodes/fragment/63/node = SubResource("VisualShaderNodeComment_omarf") 622 | nodes/fragment/63/position = Vector2(-640, 740) 623 | nodes/fragment/65/node = SubResource("VisualShaderNodeComment_4w5g7") 624 | nodes/fragment/65/position = Vector2(-640, 1340) 625 | nodes/fragment/66/node = SubResource("VisualShaderNodeComment_fcaif") 626 | nodes/fragment/66/position = Vector2(-640, 940) 627 | nodes/fragment/67/node = SubResource("VisualShaderNodeComment_txh0s") 628 | nodes/fragment/67/position = Vector2(-640, 140) 629 | nodes/fragment/71/node = SubResource("VisualShaderNodeMix_aukkg") 630 | nodes/fragment/71/position = Vector2(1600, -1000) 631 | nodes/fragment/72/node = SubResource("VisualShaderNodeColorParameter_ctm2l") 632 | nodes/fragment/72/position = Vector2(-600, -800) 633 | nodes/fragment/74/node = SubResource("VisualShaderNodeMix_eb33v") 634 | nodes/fragment/74/position = Vector2(1800, -800) 635 | nodes/fragment/75/node = SubResource("VisualShaderNodeFresnel_jjfvg") 636 | nodes/fragment/75/position = Vector2(-200, 1800) 637 | nodes/fragment/76/node = SubResource("VisualShaderNodeFloatParameter_3wvr8") 638 | nodes/fragment/76/position = Vector2(-600, 1800) 639 | nodes/fragment/77/node = SubResource("VisualShaderNodeFloatOp_alljb") 640 | nodes/fragment/77/position = Vector2(200, 1800) 641 | nodes/fragment/78/node = SubResource("VisualShaderNodeFloatParameter_4yumx") 642 | nodes/fragment/78/position = Vector2(-600, 2200) 643 | nodes/fragment/79/node = SubResource("VisualShaderNodeComment_or8ix") 644 | nodes/fragment/79/position = Vector2(-640, 1740) 645 | nodes/fragment/81/node = SubResource("VisualShaderNodeStep_1do4b") 646 | nodes/fragment/81/position = Vector2(400, -1700) 647 | nodes/fragment/82/node = SubResource("VisualShaderNodeStep_iaorh") 648 | nodes/fragment/82/position = Vector2(400, -1540) 649 | nodes/fragment/83/node = SubResource("VisualShaderNodeStep_rhw6e") 650 | nodes/fragment/83/position = Vector2(400, -1380) 651 | nodes/fragment/84/node = SubResource("VisualShaderNodeStep_ew80r") 652 | nodes/fragment/84/position = Vector2(400, -1220) 653 | nodes/fragment/85/node = SubResource("VisualShaderNodeStep_05v7v") 654 | nodes/fragment/85/position = Vector2(400, -1060) 655 | nodes/fragment/86/node = SubResource("VisualShaderNodeStep_wh070") 656 | nodes/fragment/86/position = Vector2(400, -900) 657 | nodes/fragment/88/node = SubResource("VisualShaderNodeFloatFunc_4i1cx") 658 | nodes/fragment/88/position = Vector2(0, 1100) 659 | nodes/fragment/connections = PackedInt32Array(11, 0, 14, 0, 10, 0, 13, 0, 9, 0, 12, 0, 12, 1, 7, 0, 12, 3, 17, 0, 13, 0, 0, 2, 13, 1, 0, 3, 18, 0, 19, 1, 20, 0, 21, 0, 14, 0, 18, 0, 14, 1, 18, 1, 14, 2, 18, 2, 14, 3, 25, 2, 35, 0, 34, 0, 32, 0, 20, 1, 33, 0, 21, 1, 6, 0, 34, 2, 6, 0, 55, 0, 17, 0, 55, 1, 55, 0, 56, 1, 54, 0, 56, 0, 56, 0, 0, 5, 30, 0, 50, 1, 50, 0, 51, 0, 31, 0, 51, 1, 32, 0, 52, 1, 51, 0, 52, 0, 52, 0, 53, 0, 33, 0, 53, 1, 6, 0, 71, 1, 53, 0, 71, 0, 71, 0, 74, 0, 72, 0, 74, 1, 74, 0, 20, 0, 76, 0, 75, 3, 75, 0, 77, 0, 77, 0, 0, 11, 78, 0, 77, 1, 81, 0, 50, 2, 82, 0, 51, 2, 83, 0, 52, 2, 84, 0, 53, 2, 85, 0, 71, 2, 86, 0, 74, 2, 13, 3, 88, 0, 19, 0, 25, 1, 25, 0, 34, 1, 4, 0, 81, 1, 4, 0, 82, 1, 4, 0, 83, 1, 4, 0, 84, 1, 4, 0, 85, 1, 4, 0, 86, 1, 13, 2, 20, 2, 88, 0, 21, 2, 21, 0, 19, 0, 21, 0, 25, 0, 29, 0, 50, 0, 34, 0, 0, 0, 12, 0, 4, 0, 7, 0, 0, 6) 660 | -------------------------------------------------------------------------------- /SXTools_Unity_HDRP_Material.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrandSX/sxtools2-blender/4bd3379061416e7d4dbe3cc1d59cbb4dc90270fb/SXTools_Unity_HDRP_Material.unitypackage -------------------------------------------------------------------------------- /SXTools_Unity_URP_Material.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrandSX/sxtools2-blender/4bd3379061416e7d4dbe3cc1d59cbb4dc90270fb/SXTools_Unity_URP_Material.unitypackage -------------------------------------------------------------------------------- /SXTools_Unreal_Material.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrandSX/sxtools2-blender/4bd3379061416e7d4dbe3cc1d59cbb4dc90270fb/SXTools_Unreal_Material.uasset -------------------------------------------------------------------------------- /categories.json: -------------------------------------------------------------------------------- 1 | { 2 | "Default": { 3 | "export_subfolder": "TurboDismount2//Content//3D_imports", 4 | "layers": [ 5 | ["Layer 0", "COLOR", "ALPHA", 1.0, "None"] 6 | ], 7 | "metallic_override": 0, 8 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 9 | "roughness_override": 0, 10 | "palette_roughness": [0.0, 0.0, 0.0, 0.0, 0.0], 11 | "overlay_opacity": 1, 12 | "staticvertexcolors": 1, 13 | "reserved": ["UVSet0", "UVSet1"], 14 | "uv_palette_masks": ["UVSet2", "U"], 15 | "uv_occlusion": ["UVSet2", "V"], 16 | "uv_transmission": ["UVSet3", "U"], 17 | "uv_subsurface": ["UVSet3", "U"], 18 | "uv_emission": ["UVSet3", "V"], 19 | "uv_metallic": ["UVSet4", "U"], 20 | "uv_roughness": ["UVSet4", "V"], 21 | "uv_gradient1": ["UVSet5", "U"], 22 | "uv_gradient2": ["UVSet5", "V"], 23 | "uv_overlay":["UVSet6", "UVSet7"] 24 | }, 25 | "Static": { 26 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 27 | "layers": [ 28 | ["Layer 0", "COLOR", "ALPHA", 1.0, 0], 29 | ["Layer 1", "COLOR", "ALPHA", 1.0, 1], 30 | ["Layer 2", "COLOR", "ALPHA", 1.0, 2], 31 | ["Layer 3", "COLOR", "ALPHA", 1.0, 3], 32 | ["Layer 4", "COLOR", "ALPHA", 1.0, 4], 33 | ["Static Colors", "COLOR", "ALPHA", 1.0, "None"], 34 | ["PBR Material Color", "COLOR", "ALPHA", 1.0, "None"], 35 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 36 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 37 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 38 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 39 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 40 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 41 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 42 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 43 | ], 44 | "metallic_override": 0, 45 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 46 | "roughness_override": 0, 47 | "palette_roughness": [0.0, 0.0, 0.0, 0.0, 0.0], 48 | "overlay_opacity": 1, 49 | "staticvertexcolors": 1, 50 | "reserved": ["UVSet0", "UVSet1"], 51 | "uv_palette_masks": ["UVSet2", "U"], 52 | "uv_occlusion": ["UVSet2", "V"], 53 | "uv_transmission": ["UVSet3", "U"], 54 | "uv_subsurface": ["UVSet3", "U"], 55 | "uv_emission": ["UVSet3", "V"], 56 | "uv_metallic": ["UVSet4", "U"], 57 | "uv_roughness": ["UVSet4", "V"], 58 | "uv_gradient1": ["UVSet5", "U"], 59 | "uv_gradient2": ["UVSet5", "V"], 60 | "uv_overlay":["UVSet6", "UVSet7"] 61 | }, 62 | "Paletted": { 63 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 64 | "layers": [ 65 | ["Layer 0", "COLOR", "ALPHA", 1.0, 0], 66 | ["Layer 1", "COLOR", "ALPHA", 1.0, 1], 67 | ["Layer 2", "COLOR", "ALPHA", 1.0, 2], 68 | ["Layer 3", "COLOR", "ALPHA", 1.0, 3], 69 | ["Layer 4", "COLOR", "ALPHA", 1.0, 4], 70 | ["Static Colors", "COLOR", "ALPHA", 1.0, "None"], 71 | ["PBR Material Color", "COLOR", "ALPHA", 1.0, "None"], 72 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 73 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 74 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 75 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 76 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 77 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 78 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 79 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 80 | ], 81 | "metallic_override": 0, 82 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 83 | "roughness_override": 1, 84 | "palette_roughness": [1.0, 1.0, 1.0, 1.0, 1.0], 85 | "overlay_opacity": 1, 86 | "staticvertexcolors": 0, 87 | "reserved": ["UVSet0", "UVSet1"], 88 | "uv_palette_masks": ["UVSet2", "U"], 89 | "uv_occlusion": ["UVSet2", "V"], 90 | "uv_transmission": ["UVSet3", "U"], 91 | "uv_subsurface": ["UVSet3", "U"], 92 | "uv_emission": ["UVSet3", "V"], 93 | "uv_metallic": ["UVSet4", "U"], 94 | "uv_roughness": ["UVSet4", "V"], 95 | "uv_gradient1": ["UVSet5", "U"], 96 | "uv_gradient2": ["UVSet5", "V"], 97 | "uv_overlay":["UVSet6", "UVSet7"] 98 | }, 99 | "Vehicles": { 100 | "export_subfolder": "TurboDismount2//Content//3D_imports", 101 | "layers": [ 102 | ["Layer 0 - Primary Paint", "COLOR", "ALPHA", 1.0, 0], 103 | ["Layer 1 - Secondary Paint", "COLOR", "ALPHA", 1.0, 1], 104 | ["Layer 2 - Tertiary Paint", "COLOR", "ALPHA", 1.0, 2], 105 | ["Layer 3 - Seats", "COLOR", "ALPHA", 1.0, 3], 106 | ["Layer 4 - Inside Panels", "COLOR", "ALPHA", 1.0, 4], 107 | ["Layer 5 - Static Colors", "COLOR", "ALPHA", 1.0, "None"], 108 | ["Layer 6 - PBR Metallic Color", "COLOR", "ALPHA", 1.0, "None"], 109 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 110 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 111 | ["Overlay", "COLOR", "OVR", 0.6, "None"], 112 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 113 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 114 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 115 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 116 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 117 | ], 118 | "metallic_override": 0, 119 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 120 | "roughness_override": 1, 121 | "palette_roughness": [0.05, 0.05, 0.1, 0.70, 0.80], 122 | "overlay_opacity": 0.6, 123 | "staticvertexcolors": 0, 124 | "reserved": ["UVSet0", "UVSet1"], 125 | "uv_palette_masks": ["UVSet2", "U"], 126 | "uv_occlusion": ["UVSet2", "V"], 127 | "uv_transmission": ["UVSet3", "U"], 128 | "uv_subsurface": ["UVSet3", "U"], 129 | "uv_emission": ["UVSet3", "V"], 130 | "uv_metallic": ["UVSet4", "U"], 131 | "uv_roughness": ["UVSet4", "V"], 132 | "uv_gradient1": ["UVSet5", "U"], 133 | "uv_gradient2": ["UVSet5", "V"], 134 | "uv_overlay":["UVSet6", "UVSet7"] 135 | }, 136 | "Buildings": { 137 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 138 | "layers": [ 139 | ["Layer 0 - Walls (Primary)", "COLOR", "ALPHA", 1.0, 0], 140 | ["Layer 1 - Walls (Secondary)", "COLOR", "ALPHA", 1.0, 1], 141 | ["Layer 2 - Walls (Tertiary)", "COLOR", "ALPHA", 1.0, 2], 142 | ["Layer 3 - Ground Floor", "COLOR", "ALPHA", 1.0, 3], 143 | ["Layer 4 - Secondary Detail", "COLOR", "ALPHA", 1.0, 4], 144 | ["Layer 5 - Static Colors", "COLOR", "ALPHA", 1.0, "None"], 145 | ["Layer 6 - PBR Glass", "COLOR", "ALPHA", 1.0, "None"], 146 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 147 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 148 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 149 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 150 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 151 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 152 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 153 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 154 | ], 155 | "metallic_override": 0, 156 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 157 | "roughness_override": 1, 158 | "palette_roughness": [0.6, 0.65, 0.75, 0.9, 0.7], 159 | "overlay_opacity": 1, 160 | "staticvertexcolors": 0, 161 | "reserved": ["UVSet0", "UVSet1"], 162 | "uv_palette_masks": ["UVSet2", "U"], 163 | "uv_occlusion": ["UVSet2", "V"], 164 | "uv_transmission": ["UVSet3", "U"], 165 | "uv_subsurface": ["UVSet3", "U"], 166 | "uv_emission": ["UVSet3", "V"], 167 | "uv_metallic": ["UVSet4", "U"], 168 | "uv_roughness": ["UVSet4", "V"], 169 | "uv_gradient1": ["UVSet5", "U"], 170 | "uv_gradient2": ["UVSet5", "V"], 171 | "uv_overlay":["UVSet6", "UVSet7"] 172 | }, 173 | "Trees": { 174 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 175 | "layers": [ 176 | ["Layer 0 - Foliage (Primary)", "COLOR", "ALPHA", 1.0, 0], 177 | ["Layer 1 - Foliage (Secondary)", "COLOR", "ALPHA", 1.0, 1], 178 | ["Layer 2 - Foliage (Tertiary)", "COLOR", "ALPHA", 1.0, 2], 179 | ["Layer 3 - Trunk 1", "COLOR", "ALPHA", 1.0, 3], 180 | ["Layer 4 - Trunk 2", "COLOR", "ALPHA", 1.0, 4], 181 | ["Layer 5 - Static Colors", "COLOR", "ALPHA", 1.0, "None"], 182 | ["Layer 6 - Fruit, Flowers", "COLOR", "ALPHA", 1.0, "None"], 183 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 184 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 185 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 186 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 187 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 188 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 189 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 190 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 191 | ], 192 | "metallic_override": 0, 193 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 194 | "roughness_override": 1, 195 | "palette_roughness": [0.7, 0.7, 0.7, 1.0, 1.0], 196 | "overlay_opacity": 1, 197 | "staticvertexcolors": 0, 198 | "reserved": ["UVSet0", "UVSet1"], 199 | "uv_palette_masks": ["UVSet2", "U"], 200 | "uv_occlusion": ["UVSet2", "V"], 201 | "uv_transmission": ["UVSet3", "U"], 202 | "uv_subsurface": ["UVSet3", "U"], 203 | "uv_emission": ["UVSet3", "V"], 204 | "uv_metallic": ["UVSet4", "U"], 205 | "uv_roughness": ["UVSet4", "V"], 206 | "uv_gradient1": ["UVSet5", "U"], 207 | "uv_gradient2": ["UVSet5", "V"], 208 | "uv_overlay":["UVSet6", "UVSet7"] 209 | }, 210 | "Characters": { 211 | "export_subfolder": "TurboDismount2//Content//3D_imports", 212 | "layers": [ 213 | ["Layer 0", "COLOR", "ALPHA", 1.0, 0], 214 | ["Layer 1", "COLOR", "ALPHA", 1.0, 1], 215 | ["Layer 2", "COLOR", "ALPHA", 1.0, 2], 216 | ["Layer 3", "COLOR", "ALPHA", 1.0, 3], 217 | ["Layer 4", "COLOR", "ALPHA", 1.0, 4], 218 | ["Static Colors", "COLOR", "ALPHA", 1.0, "None"], 219 | ["PBR Material Color", "COLOR", "ALPHA", 1.0, "None"], 220 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 221 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 222 | ["Overlay", "COLOR", "OVR", 0.2, "None"], 223 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 224 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 225 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 226 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 227 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 228 | ], 229 | "metallic_override": 0, 230 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 231 | "roughness_override": 0, 232 | "palette_roughness": [1.0, 1.0, 1.0, 1.0, 1.0], 233 | "overlay_opacity": 0.2, 234 | "staticvertexcolors": 0, 235 | "reserved": ["UVSet0", "UVSet1"], 236 | "uv_palette_masks": ["UVSet2", "U"], 237 | "uv_occlusion": ["UVSet2", "V"], 238 | "uv_transmission": ["UVSet3", "U"], 239 | "uv_subsurface": ["UVSet3", "U"], 240 | "uv_emission": ["UVSet3", "V"], 241 | "uv_metallic": ["UVSet4", "U"], 242 | "uv_roughness": ["UVSet4", "V"], 243 | "uv_gradient1": ["UVSet5", "U"], 244 | "uv_gradient2": ["UVSet5", "V"], 245 | "uv_overlay":["UVSet6", "UVSet7"] 246 | }, 247 | "Roadtiles": { 248 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 249 | "layers": [ 250 | ["Layer 0 - Asphalt", "COLOR", "ALPHA", 1.0, 0], 251 | ["Layer 1 - Curb", "COLOR", "ALPHA", 1.0, 1], 252 | ["Layer 2 - Paint", "COLOR", "ALPHA", 1.0, 2], 253 | ["Layer 3 - Sidewalk", "COLOR", "ALPHA", 1.0, 3], 254 | ["Layer 4 - Unused", "COLOR", "ALPHA", 1.0, 4], 255 | ["Layer 5 - Static Colors", "COLOR", "ALPHA", 1.0, "None"], 256 | ["Layer 6 - Unused", "COLOR", "ALPHA", 1.0, "None"], 257 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 258 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 259 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 260 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 261 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 262 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 263 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 264 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 265 | ], 266 | "metallic_override": 1, 267 | "palette_metallic": [0.0, 0.0, 0.5, 0.0, 0.0], 268 | "roughness_override": 1, 269 | "palette_roughness": [1.0, 1.0, 0.5, 1.0, 1.0], 270 | "overlay_opacity": 1, 271 | "staticvertexcolors": 0, 272 | "reserved": ["UVSet0", "UVSet1"], 273 | "uv_palette_masks": ["UVSet2", "U"], 274 | "uv_occlusion": ["UVSet2", "V"], 275 | "uv_transmission": ["UVSet3", "U"], 276 | "uv_subsurface": ["UVSet3", "U"], 277 | "uv_emission": ["UVSet3", "V"], 278 | "uv_metallic": ["UVSet4", "U"], 279 | "uv_roughness": ["UVSet4", "V"], 280 | "uv_gradient1": ["UVSet5", "U"], 281 | "uv_gradient2": ["UVSet5", "V"], 282 | "uv_overlay":["UVSet6", "UVSet7"] 283 | }, 284 | "Particles": { 285 | "export_subfolder": "TurboDismount2//Content//3D_imports", 286 | "layers": [ 287 | ["Layer 0", "COLOR", "ALPHA", 1.0, 0], 288 | ["Layer 1", "COLOR", "ALPHA", 1.0, 1], 289 | ["Layer 2", "COLOR", "ALPHA", 1.0, 2], 290 | ["Layer 3", "COLOR", "ALPHA", 1.0, 3], 291 | ["Layer 4", "COLOR", "ALPHA", 1.0, 4], 292 | ["Static Colors", "COLOR", "ALPHA", 1.0, "None"], 293 | ["PBR Metallic Color", "COLOR", "ALPHA", 1.0, "None"], 294 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 295 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 296 | ["Overlay", "COLOR", "OVR", 1.0, "None"], 297 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 298 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 299 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 300 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 301 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 302 | ], 303 | "metallic_override": 0, 304 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 305 | "roughness_override": 0, 306 | "palette_roughness": [0.0, 0.0, 0.0, 0.0, 0.0], 307 | "overlay_opacity": 1, 308 | "staticvertexcolors": 0, 309 | "reserved": ["UVSet0", "UVSet1"], 310 | "uv_palette_masks": ["UVSet2", "U"], 311 | "uv_occlusion": ["UVSet2", "V"], 312 | "uv_transmission": ["UVSet3", "U"], 313 | "uv_subsurface": ["UVSet3", "U"], 314 | "uv_emission": ["UVSet3", "V"], 315 | "uv_metallic": ["UVSet4", "U"], 316 | "uv_roughness": ["UVSet4", "V"], 317 | "uv_gradient1": ["UVSet5", "U"], 318 | "uv_gradient2": ["UVSet5", "V"], 319 | "uv_overlay":["UVSet6", "UVSet7"] 320 | }, 321 | "NPCVehicles": { 322 | "export_subfolder": "TurboDismount2LevelEditor//Content//3D_imports", 323 | "layers": [ 324 | ["Layer 0 - Primary Paint", "COLOR", "ALPHA", 1.0, 0], 325 | ["Layer 1 - Secondary Paint", "COLOR", "ALPHA", 1.0, 1], 326 | ["Layer 2 - Tertiary Paint", "COLOR", "ALPHA", 1.0, 2], 327 | ["Layer 3 - Seats", "COLOR", "ALPHA", 1.0, 3], 328 | ["Layer 4 - Inside Panels", "COLOR", "ALPHA", 1.0, 4], 329 | ["Layer 5 - Static Colors", "COLOR", "ALPHA", 1.0, "None"], 330 | ["Layer 6 - PBR Metallic Color", "COLOR", "ALPHA", 1.0, "None"], 331 | ["Gradient1", "COLOR", "ALPHA", 1.0, 3], 332 | ["Gradient2", "COLOR", "ALPHA", 1.0, 4], 333 | ["Overlay", "COLOR", "OVR", 0.6, "None"], 334 | ["Occlusion", "OCC", "ALPHA", 1.0, "None"], 335 | ["Metallic", "MET", "ALPHA", 1.0, "None"], 336 | ["Roughness", "RGH", "ALPHA", 1.0, "None"], 337 | ["Transmission", "TRN", "ALPHA", 1.0, "None"], 338 | ["Emission", "EMI", "ALPHA", 1.0, "None"] 339 | ], 340 | "metallic_override": 0, 341 | "palette_metallic": [0.0, 0.0, 0.0, 0.0, 0.0], 342 | "roughness_override": 1, 343 | "palette_roughness": [0.05, 0.05, 0.1, 0.70, 0.80], 344 | "overlay_opacity": 0.6, 345 | "staticvertexcolors": 0, 346 | "reserved": ["UVSet0", "UVSet1"], 347 | "uv_palette_masks": ["UVSet2", "U"], 348 | "uv_occlusion": ["UVSet2", "V"], 349 | "uv_transmission": ["UVSet3", "U"], 350 | "uv_subsurface": ["UVSet3", "U"], 351 | "uv_emission": ["UVSet3", "V"], 352 | "uv_metallic": ["UVSet4", "U"], 353 | "uv_roughness": ["UVSet4", "V"], 354 | "uv_gradient1": ["UVSet5", "U"], 355 | "uv_gradient2": ["UVSet5", "V"], 356 | "uv_overlay":["UVSet6", "UVSet7"] 357 | } 358 | } -------------------------------------------------------------------------------- /gradients.json: -------------------------------------------------------------------------------- 1 | { 2 | "BlackAndWhite": { 3 | "mode": "RGB", 4 | "interpolation": "LINEAR", 5 | "hue_interpolation": "NEAR", 6 | "elements": [ 7 | [ 8 | 0.0, 9 | [ 10 | 0.0, 11 | 0.0, 12 | 0.0, 13 | 1.0 14 | ], 15 | null 16 | ], 17 | [ 18 | 1.0, 19 | [ 20 | 1.0, 21 | 1.0, 22 | 1.0, 23 | 1.0 24 | ], 25 | null 26 | ] 27 | ] 28 | }, 29 | "CurvatureSmoothness": { 30 | "mode": "RGB", 31 | "interpolation": "B_SPLINE", 32 | "hue_interpolation": "NEAR", 33 | "elements": [ 34 | [ 35 | 0.0, 36 | [ 37 | 0.07323896139860153, 38 | 0.07323896139860153, 39 | 0.07323896139860153, 40 | 1.0 41 | ], 42 | null 43 | ], 44 | [ 45 | 0.2500002980232239, 46 | [ 47 | 1.0, 48 | 1.0, 49 | 1.0, 50 | 1.0 51 | ], 52 | null 53 | ], 54 | [ 55 | 0.75, 56 | [ 57 | 1.0, 58 | 1.0, 59 | 1.0, 60 | 1.0 61 | ], 62 | null 63 | ], 64 | [ 65 | 1.0, 66 | [ 67 | 0.07323896139860153, 68 | 0.07323896139860153, 69 | 0.07323896139860153, 70 | 1.0 71 | ], 72 | null 73 | ] 74 | ] 75 | }, 76 | "DirectionalDust": { 77 | "mode": "RGB", 78 | "interpolation": "B_SPLINE", 79 | "hue_interpolation": "NEAR", 80 | "elements": [ 81 | [ 82 | 0.5032535195350647, 83 | [ 84 | 0.0, 85 | 0.0, 86 | 0.0, 87 | 1.0 88 | ], 89 | null 90 | ], 91 | [ 92 | 1.0, 93 | [ 94 | 0.552012026309967, 95 | 0.552012026309967, 96 | 0.552012026309967, 97 | 1.0 98 | ], 99 | null 100 | ] 101 | ] 102 | }, 103 | "FoliageRamp": { 104 | "mode": "RGB", 105 | "interpolation": "B_SPLINE", 106 | "hue_interpolation": "NEAR", 107 | "elements": [ 108 | [ 109 | 0.5000001192092896, 110 | [ 111 | 0.0, 112 | 0.0, 113 | 0.0, 114 | 1.0 115 | ], 116 | null 117 | ], 118 | [ 119 | 1.0, 120 | [ 121 | 1.0, 122 | 1.0, 123 | 1.0, 124 | 1.0 125 | ], 126 | null 127 | ] 128 | ] 129 | }, 130 | "WearAndTear": { 131 | "mode": "RGB", 132 | "interpolation": "B_SPLINE", 133 | "hue_interpolation": "NEAR", 134 | "elements": [ 135 | [ 136 | 0.5, 137 | [ 138 | 0.21404114365577698, 139 | 0.21404114365577698, 140 | 0.21404114365577698, 141 | 1.0 142 | ], 143 | null 144 | ], 145 | [ 146 | 0.750000011920929, 147 | [ 148 | 0.21404114365577698, 149 | 0.21404114365577698, 150 | 0.21404114365577698, 151 | 1.0 152 | ], 153 | null 154 | ], 155 | [ 156 | 1.0, 157 | [ 158 | 1.0, 159 | 1.0, 160 | 1.0, 161 | 1.0 162 | ], 163 | null 164 | ] 165 | ] 166 | }, 167 | "CurvatureRoughness": { 168 | "mode": "RGB", 169 | "interpolation": "B_SPLINE", 170 | "hue_interpolation": "NEAR", 171 | "elements": [ 172 | [ 173 | 0.0, 174 | [ 175 | 0.9267609715461731, 176 | 0.9267609715461731, 177 | 0.9267609715461731, 178 | 1.0 179 | ], 180 | null 181 | ], 182 | [ 183 | 0.2500002980232239, 184 | [ 185 | 0.0, 186 | 0.0, 187 | 0.0, 188 | 1.0 189 | ], 190 | null 191 | ], 192 | [ 193 | 0.75, 194 | [ 195 | 0.0, 196 | 0.0, 197 | 0.0, 198 | 1.0 199 | ], 200 | null 201 | ], 202 | [ 203 | 1.0, 204 | [ 205 | 0.9267609715461731, 206 | 0.9267609715461731, 207 | 0.9267609715461731, 208 | 1.0 209 | ], 210 | null 211 | ] 212 | ] 213 | } 214 | } -------------------------------------------------------------------------------- /materials.json: -------------------------------------------------------------------------------- 1 | { 2 | "Materials": [ 3 | { 4 | "Metallic": { 5 | "Platinum": [ 6 | [ 7 | 0.8352941274642944, 8 | 0.8156862854957581, 9 | 0.7843137383460999 10 | ], 11 | [ 12 | 1.0, 13 | 1.0, 14 | 1.0 15 | ], 16 | [ 17 | 0.949999988079071, 18 | 0.949999988079071, 19 | 0.949999988079071 20 | ] 21 | ], 22 | "Copper": [ 23 | [ 24 | 0.9803921580314636, 25 | 0.7450980544090271, 26 | 0.6274510025978088 27 | ], 28 | [ 29 | 1.0, 30 | 1.0, 31 | 1.0 32 | ], 33 | [ 34 | 0.949999988079071, 35 | 0.949999988079071, 36 | 0.949999988079071 37 | ] 38 | ], 39 | "Aluminium": [ 40 | [ 41 | 0.9607843160629272, 42 | 0.9647058844566345, 43 | 0.9647058844566345 44 | ], 45 | [ 46 | 1.0, 47 | 1.0, 48 | 1.0 49 | ], 50 | [ 51 | 0.949999988079071, 52 | 0.949999988079071, 53 | 0.949999988079071 54 | ] 55 | ], 56 | "Gold": [ 57 | [ 58 | 0.9607843160629272, 59 | 0.843137264251709, 60 | 0.4745098054409027 61 | ], 62 | [ 63 | 1.0, 64 | 1.0, 65 | 1.0 66 | ], 67 | [ 68 | 0.949999988079071, 69 | 0.949999988079071, 70 | 0.949999988079071 71 | ] 72 | ], 73 | "Iron": [ 74 | [ 75 | 0.7686274647712708, 76 | 0.7803921699523926, 77 | 0.7803921699523926 78 | ], 79 | [ 80 | 1.0, 81 | 1.0, 82 | 1.0 83 | ], 84 | [ 85 | 0.949999988079071, 86 | 0.949999988079071, 87 | 0.949999988079071 88 | ] 89 | ], 90 | "Brass": [ 91 | [ 92 | 0.9803921580314636, 93 | 0.9019607901573181, 94 | 0.5882353186607361 95 | ], 96 | [ 97 | 1.0, 98 | 1.0, 99 | 1.0 100 | ], 101 | [ 102 | 0.949999988079071, 103 | 0.949999988079071, 104 | 0.949999988079071 105 | ] 106 | ], 107 | "Silver": [ 108 | [ 109 | 0.9882352948188782, 110 | 0.9803921580314636, 111 | 0.9607843160629272 112 | ], 113 | [ 114 | 1.0, 115 | 1.0, 116 | 1.0 117 | ], 118 | [ 119 | 0.949999988079071, 120 | 0.949999988079071, 121 | 0.949999988079071 122 | ] 123 | ] 124 | } 125 | }, 126 | { 127 | "NonMetallic": { 128 | "Coal": [ 129 | [ 130 | 0.19607843458652496, 131 | 0.19607843458652496, 132 | 0.19607843458652496 133 | ], 134 | [ 135 | 0.0, 136 | 0.0, 137 | 0.0 138 | ], 139 | [ 140 | 0.30000001192092896, 141 | 0.30000001192092896, 142 | 0.30000001192092896 143 | ] 144 | ], 145 | "Concrete": [ 146 | [ 147 | 0.753000020980835, 148 | 0.7490844130516052, 149 | 0.7334219813346863 150 | ], 151 | [ 152 | 0.0, 153 | 0.0, 154 | 0.0 155 | ], 156 | [ 157 | 0.10000000149011612, 158 | 0.10000000149011612, 159 | 0.10000000149011612 160 | ] 161 | ], 162 | "Rubber": [ 163 | [ 164 | 0.20800000429153442, 165 | 0.20800000429153442, 166 | 0.20800000429153442 167 | ], 168 | [ 169 | 0.0, 170 | 0.0, 171 | 0.0 172 | ], 173 | [ 174 | 0.10000000149011612, 175 | 0.10000000149011612, 176 | 0.10000000149011612 177 | ] 178 | ], 179 | "Mud": [ 180 | [ 181 | 0.3330000042915344, 182 | 0.2388719916343689, 183 | 0.19180800020694733 184 | ], 185 | [ 186 | 0.0, 187 | 0.0, 188 | 0.0 189 | ], 190 | [ 191 | 0.699999988079071, 192 | 0.699999988079071, 193 | 0.699999988079071 194 | ] 195 | ], 196 | "Wood": [ 197 | [ 198 | 0.6669999957084656, 199 | 0.6001598238945007, 200 | 0.5175920128822327 201 | ], 202 | [ 203 | 0.0, 204 | 0.0, 205 | 0.0 206 | ], 207 | [ 208 | 0.699999988079071, 209 | 0.699999988079071, 210 | 0.699999988079071 211 | ] 212 | ], 213 | "Brick": [ 214 | [ 215 | 0.5799999833106995, 216 | 0.49006280303001404, 217 | 0.4587799906730652 218 | ], 219 | [ 220 | 0.0, 221 | 0.0, 222 | 0.0 223 | ], 224 | [ 225 | 0.05000000074505806, 226 | 0.05000000074505806, 227 | 0.05000000074505806 228 | ] 229 | ], 230 | "Grass": [ 231 | [ 232 | 0.4825381636619568, 233 | 0.5099999904632568, 234 | 0.3059999942779541 235 | ], 236 | [ 237 | 0.0, 238 | 0.0, 239 | 0.0 240 | ], 241 | [ 242 | 0.5, 243 | 0.5, 244 | 0.5 245 | ] 246 | ] 247 | } 248 | } 249 | ] 250 | } -------------------------------------------------------------------------------- /palettes.json: -------------------------------------------------------------------------------- 1 | { 2 | "Palettes": [ 3 | { 4 | "Artsy": { 5 | "PinkandGreenNeon": [ 6 | [ 7 | 1, 8 | 0, 9 | 0.403921604156494 10 | ], 11 | [ 12 | 0.337254911661148, 13 | 1, 14 | 0 15 | ], 16 | [ 17 | 0.61176472902298, 18 | 1, 19 | 0 20 | ], 21 | [ 22 | 0.90588241815567, 23 | 1, 24 | 0.0156862754374743 25 | ], 26 | [ 27 | 1, 28 | 0.239215701818466, 29 | 0.415686309337616 30 | ] 31 | ], 32 | "YellowandBlue": [ 33 | [ 34 | 0.882352948188782, 35 | 0.763511717319489, 36 | 0.211764723062515 37 | ], 38 | [ 39 | 1, 40 | 0.917647123336792, 41 | 0.105882361531258 42 | ], 43 | [ 44 | 0.435294151306152, 45 | 0.894117712974548, 46 | 0.854902029037476 47 | ], 48 | [ 49 | 0.113725498318672, 50 | 0.690196096897125, 51 | 0.737254917621613 52 | ], 53 | [ 54 | 0, 55 | 0.48235297203064, 56 | 0.737254917621613 57 | ] 58 | ], 59 | "Pastels": [ 60 | [ 61 | 0.537254929542542, 62 | 0.545098066329956, 63 | 0.69803923368454 64 | ], 65 | [ 66 | 1, 67 | 0.549019634723663, 68 | 0.470588266849518 69 | ], 70 | [ 71 | 1, 72 | 0.839215755462646, 73 | 0.38039219379425 74 | ], 75 | [ 76 | 1, 77 | 0.94901967048645, 78 | 0.709803938865662 79 | ], 80 | [ 81 | 0.552941203117371, 82 | 0.839215755462646, 83 | 0.713725507259369 84 | ] 85 | ], 86 | "Vintage": [ 87 | [ 88 | 0.43921571969986, 89 | 0.188235312700272, 90 | 0.188235312700272 91 | ], 92 | [ 93 | 0.184313729405403, 94 | 0.203921586275101, 95 | 0.231372565031052 96 | ], 97 | [ 98 | 0.494117677211761, 99 | 0.509803950786591, 100 | 0.478431403636932 101 | ], 102 | [ 103 | 0.386792480945587, 104 | 0.136836960911751, 105 | 0.136836960911751 106 | ], 107 | [ 108 | 0.780392229557037, 109 | 0.474509835243225, 110 | 0.400000035762787 111 | ] 112 | ], 113 | "Tank": [ 114 | [ 115 | 0.337254911661148, 116 | 0.360784322023392, 117 | 0.137254908680916 118 | ], 119 | [ 120 | 0.670588254928589, 121 | 0.552941203117371, 122 | 0.301960796117783 123 | ], 124 | [ 125 | 0.858823597431183, 126 | 0.670588254928589, 127 | 0.403921604156494 128 | ], 129 | [ 130 | 0.258823543787003, 131 | 0.200000017881393, 132 | 0.14509804546833 133 | ], 134 | [ 135 | 0.172549024224281, 136 | 0.188235312700272, 137 | 0.0862745121121407 138 | ] 139 | ], 140 | "Blues": [ 141 | [ 142 | 0.0588235333561897, 143 | 0.176470592617989, 144 | 0.250980406999588 145 | ], 146 | [ 147 | 0.0980392247438431, 148 | 0.278431385755539, 149 | 0.34901961684227 150 | ], 151 | [ 152 | 0.847058892250061, 153 | 0.94901967048645, 154 | 0.941176533699036 155 | ], 156 | [ 157 | 0.160784319043159, 158 | 0.419607877731323, 159 | 0.450980424880981 160 | ], 161 | [ 162 | 0.243137270212173, 163 | 0.549019634723663, 164 | 0.517647087574005 165 | ] 166 | ], 167 | "Oranges": [ 168 | [ 169 | 0.972549080848694, 170 | 0.427451014518738, 171 | 0.125490203499794 172 | ], 173 | [ 174 | 0.941176533699036, 175 | 0.192156881093979, 176 | 0.0274509824812412 177 | ], 178 | [ 179 | 0.756862819194794, 180 | 0.00784313771873713, 181 | 0.00784313771873713 182 | ], 183 | [ 184 | 0.450980424880981, 185 | 0, 186 | 0 187 | ], 188 | [ 189 | 0.258823543787003, 190 | 0, 191 | 0 192 | ] 193 | ], 194 | "Green": [ 195 | [ 196 | 0.25, 197 | 1, 198 | 0 199 | ], 200 | [ 201 | 0.47853296995163, 202 | 0.852999985218048, 203 | 0.67082804441452 204 | ], 205 | [ 206 | 0.779451727867126, 207 | 1, 208 | 0.140999972820282 209 | ], 210 | [ 211 | 0.374849498271942, 212 | 0.612999975681305, 213 | 0.136698991060257 214 | ], 215 | [ 216 | 0.0368000008165836, 217 | 0.319999992847443, 218 | 0.0788977220654488 219 | ] 220 | ], 221 | "Peppermint": [ 222 | [ 223 | 0.964705944061279, 224 | 0.694117665290833, 225 | 0.764705955982208 226 | ], 227 | [ 228 | 0.870588302612305, 229 | 0.149019613862038, 230 | 0.298039227724075 231 | ], 232 | [ 233 | 0.737254917621613, 234 | 0.0509803965687752, 235 | 0.207843154668808 236 | ], 237 | [ 238 | 0.635294139385223, 239 | 0.0509803965687752, 240 | 0.117647066712379 241 | ], 242 | [ 243 | 0.941176533699036, 244 | 0.470588266849518, 245 | 0.549019634723663 246 | ] 247 | ] 248 | } 249 | } 250 | ] 251 | } --------------------------------------------------------------------------------