# Copyright (C) 2021 Victor Soupday # This file is part of CC/iC Blender Tools # # CC/iC Blender Tools is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # CC/iC Blender Tools is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with CC/iC Blender Tools. If not, see . # [system_id, json_id, is_srgb, suffix_list, size_group,] TEXTURE_TYPES = [ # pbr textures ["DIFFUSE", "Base Color", True, ["diffuse", "albedo"], "DEFAULT"], ["AO", "AO", False, ["ao", "ambientocclusion", "ambient occlusion"], "DEFAULT"], ["BLEND1", "Blend", False, ["blend_multiply"], "DEFAULT"], ["SPECULAR", "Specular", False, ["specular"], "DEFAULT"], ["METALLIC", "Metallic", False, ["metallic"], "DEFAULT"], ["ROUGHNESS", "Roughness", False, ["roughness"], "DEFAULT"], ["EMISSION", "Glow", True, ["glow", "emission"], "DEFAULT"], ["ALPHA", "Opacity", False, ["opacity", "alpha"], "DEFAULT"], ["NORMAL", "Normal", False, ["normal"], "DETAIL"], ["BUMP", "Bump", False, ["bump", "height", "resourcemap_height"], "DETAIL"], ["DISPLACE", "Displacement", False, ["displacement"], "DETAIL"], # custom shader textures ["SSS", "SSS Map", False, ["sssmap", "sss"], "MINIMAL"], ["TRANSMISSION", "Transmission Map", False, ["transmap", "transmissionmap"], "MINIMAL"], ["BLEND2", "BaseColor Blend2", False, ["bcbmap", "basecolorblend2"], "DETAIL"], ["SPECMASK", "Specular Mask", False, ["specmask", "hspecmap", "specularmask", "hairspecularmaskmap"], "MINIMAL"], ["NORMALBLEND", "NormalMap Blend", False, ["nbmap", "normalmapblend"], "DETAIL"], ["MICRONORMAL", "MicroNormal", False, ["micron", "micronormal"], "DEFAULT"], ["MICRONMASK", "MicroNormalMask", False, ["micronmask", "micronormalmask"], "MINIMAL"], ["MCMAOMASK", "Mouth Cavity Mask and AO", False, ["mnaomask", "mouthcavitymaskandao"], "MINIMAL"], ["GRADIENTAO", "Gradient AO", False, ["gradao", "gradientao"], "MINIMAL"], ["GUMSMASK", "Gums Mask", False, ["gumsmask"], "MINIMAL"], ["RGBAMASK", "RGBA Area Mask", False, ["rgbamask"], "MINIMAL"], ["NMUILMASK", "Nose Mouth UpperInnerLid Mask", False, ["nmuilmask"], "MINIMAL"], ["CFULCMASK", "Cheek Fore UpperLip Chin Mask", False, ["cfulcmask"], "MINIMAL"], ["ENNASK", "Ear Neck Mask", False, ["enmask"], "MINIMAL"], ["IRISNORMAL", "Iris Normal", False, ["irisn", "irisnormal"], "DEFAULT"], ["SCLERANORMAL", "Sclera Normal", False, ["scleran", "scleranormal"], "DEFAULT"], ["EYEBLEND", "EyeBlendMap2", False, ["bcbmap", "basecolorblend2"], "MINIMAL"], ["INNERIRISMASK", "Inner Iris Mask", False, ["irismask"], "MINIMAL"], ["SCLERA", "Sclera", True, ["sclera"], "DEFAULT"], ["HAIRROOT", "Hair Root Map", False, ["hair root map"], "DEFAULT"], ["HAIRID", "Hair ID Map", False, ["hair id map"], "DEFAULT"], ["HAIRFLOW", "Hair Flow Map", False, ["hair flow map"], "DEFAULT"], ["HAIRVERTEXCOLOR", "", False, ["vertexcolormap"], "MINIMAL"], ["CAVITY", "Cavity Map", False, ["cavitymap"], "DETAIL"], # physics textures ["WEIGHTMAP", "Weight Map", True, ["weightmap"], "MINIMAL"], # mixer mask textures ["COLORID", "ColorID", False, ["colorid"], "MINIMAL"], ["RGBMASK", "RGBMask", False, ["rgbmask"], "MINIMAL"], # wrinkle maps ["WRINKLEDIFFUSE1", "Diffuse_1", True, ["wrinkle_diffuse1"], "DEFAULT"], ["WRINKLEDIFFUSE2", "Diffuse_2", True, ["wrinkle_diffuse2"], "DEFAULT"], ["WRINKLEDIFFUSE3", "Diffuse_3", True, ["wrinkle_diffuse3"], "DEFAULT"], ["WRINKLEROUGHNESS1", "Roughness_1", False, ["wrinkle_roughness1"], "DEFAULT"], ["WRINKLEROUGHNESS2", "Roughness_2", False, ["wrinkle_roughness2"], "DEFAULT"], ["WRINKLEROUGHNESS3", "Roughness_3", False, ["wrinkle_roughness3"], "DEFAULT"], ["WRINKLENORMAL1", "Normal_1", False, ["wrinkle_normal1"], "DETAIL"], ["WRINKLENORMAL2", "Normal_2", False, ["wrinkle_normal2"], "DETAIL"], ["WRINKLENORMAL3", "Normal_3", False, ["wrinkle_normal3"], "DETAIL"], ["WRINKLEFLOW1", "Flow_1", False, ["wrinkle_flow1"], "MINIMAL"], ["WRINKLEFLOW2", "Flow_2", False, ["wrinkle_flow2"], "MINIMAL"], ["WRINKLEFLOW3", "Flow_3", False, ["wrinkle_flow3"], "MINIMAL"], ["WRINKLEMASK1A", "", False, [], "MINIMAL", "RL_WrinkleMask_Set1A"], ["WRINKLEMASK1B", "", False, [], "MINIMAL", "RL_WrinkleMask_Set1B"], ["WRINKLEMASK2", "", False, [], "MINIMAL", "RL_WrinkleMask_Set2"], ["WRINKLEMASK3", "", False, [], "MINIMAL", "RL_WrinkleMask_Set3"], ["WRINKLEMASK123", "", False, [], "MINIMAL", "RL_WrinkleMask_Set123"], ["WRINKLEDISPLACEMENT1", "Wrinkle Dis 1", False, ["resourcemap_wrinkle dis 1"], "DETAIL"], ["WRINKLEDISPLACEMENT2", "Wrinkle Dis 2", False, ["resourcemap_wrinkle dis 2"], "DETAIL"], ["WRINKLEDISPLACEMENT3", "Wrinkle Dis 3", False, ["resourcemap_wrinkle dis 3"], "DETAIL"], # dual specular skin micro cavity mask ["SKINSPECDETAIL", "", False, [], "DEFAULT", "RL_SkinSpecDetail"], #["SKINSPECDETAIL", "", False, [], "RL_SkinMicroCavityMap"], ] TEXTURE_RULES = { "SKINSPECDETAIL": "prefs.build_skin_shader_dual_spec", } PBR_TYPES = [ "DIFFUSE", "AO", "BLEND1", "SPECULAR", "METALLIC", "ROUGHNESS", "EMISSION", "ALPHA", "NORMAL", "BUMP", "DISPLACE" ] # when updating linked materials, attempt to update the properties in all the material types in the same list: LINKED_MATERIALS = [ ["SKIN_HEAD", "SKIN_BODY", "SKIN_ARM", "SKIN_LEG"], ["EYE_RIGHT", "CORNEA_RIGHT", "EYE_LEFT", "CORNEA_LEFT"], ["OCCLUSION_RIGHT", "OCCLUSION_LEFT"], ["OCCLUSION_PLUS_RIGHT", "OCCLUSION_PLUS_LEFT"], ["TEARLINE_RIGHT", "TEARLINE_LEFT"], ["TEARLINE_PLUS_RIGHT", "TEARLINE_PLUS_LEFT"], ["TEETH_UPPER", "TEETH_LOWER"], ["HAIR"], ["SCALP"], ] # These material types must be updated together as they share the same properties: PAIRED_MATERIALS = [ ["EYE_RIGHT", "CORNEA_RIGHT"], ["EYE_LEFT", "CORNEA_LEFT"], ] LINKED_MATERIAL_NAMES = [ ["Ga_Skin_Arm", "Ga_Skin_Body", "Ga_Skin_Head", "Ga_Skin_Leg"], ["Std_Eye_R", "Std_Eye_L"], ["Std_Cornea_R", "Std_Cornea_L"], ] # shader definitions SHADER_MATRIX = [ # Tearline Shader ####################################### { "name": "rl_tearline_shader", "rl_shader": "RLEyeTearline", "label": "Tearline", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Specular", "", "tearline_specular"], ["Glossiness", "", "tearline_glossiness"], ["Alpha", "", "tearline_alpha"], ["Roughness", "", "tearline_roughness"], ], # modifier properties: # [prop_name, material_type, modifier_type, modifier_id, expression] "modifiers": [ ["tearline_displace", "TEARLINE_RIGHT", "DISPLACE", "Tearline_Displace_All_R", "mod.strength = -parameters.tearline_displace"], ["tearline_inner", "TEARLINE_RIGHT", "DISPLACE", "Tearline_Displace_Inner_R", "mod.strength = -parameters.tearline_inner"], ["tearline_displace", "TEARLINE_LEFT", "DISPLACE", "Tearline_Displace_All_L", "mod.strength = -parameters.tearline_displace"], ["tearline_inner", "TEARLINE_LEFT", "DISPLACE", "Tearline_Displace_Inner_L", "mod.strength = -parameters.tearline_inner"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["tearline_alpha", 0.05, "DEF"], ["tearline_specular", 1, "DEF"], ["tearline_glossiness", 0.85, "DEF"], ["tearline_roughness", 0.15, "", "Custom/_Roughness"], ["tearline_inner", 0, "DEF"], ["tearline_displace", 0.1, "", "Custom/Depth Offset"], ], # export variables to update json file on export that require special functions to convert # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Tearline", "MATFLUID"], ["PROP", "*Glossiness", "tearline_glossiness", True, "#CYCLES"], ["PROP", "*Specular", "tearline_specular", True, "#EEVEE"], ["PROP", "Roughness", "tearline_roughness", True], ["PROP", "*Alpha", "tearline_alpha", True, "#EEVEE"], ["SPACER"], ["PROP", "Displace", "tearline_displace", True], ["PROP", "*Inner Displace", "tearline_inner", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 0.0, 0.0, 0.0 ], "Specular Color": [ 0.0, 0.0, 0.0 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLEyeTearline", "Image": {}, "Variable": {}, } }, }, { "name": "rl_tearline_plus_shader", "rl_shader": "RLEyeTearline_Plus", "label": "Tearline Plus", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Specular", "", "tearline_specular"], ["IOR", "", "tearline_ior"], ["Alpha", "", "tearline_alpha"], ["Roughness", "func_half", "tearline_roughness"], ["Depth", "", "tearline_displace"], ["Detail", "", "tearline_detail"], ["U Tiling", "", "tearline_tiling_u"], ["V Tiling", "", "tearline_tiling_v"], ["Micro Normal Strength", "", "tearline_normal_strength"], ["Micro Normal Scale", "", "tearline_normal_scale"], ["Edge Fadeout", "", "tearline_edge_fadeout"], ], # modifier properties: # [prop_name, material_type, modifier_type, modifier_id, expression] "modifiers": [ ["tearline_displace", "TEARLINE_PLUS_RIGHT", "DISPLACE", "Tearline_Displace_All_R", "mod.strength = -parameters.tearline_displace"], ["tearline_inner", "TEARLINE_PLUS_RIGHT", "DISPLACE", "Tearline_Displace_Inner_R", "mod.strength = -parameters.tearline_inner"], ["tearline_displace", "TEARLINE_PLUS_LEFT", "DISPLACE", "Tearline_Displace_All_L", "mod.strength = -parameters.tearline_displace"], ["tearline_inner", "TEARLINE_PLUS_LEFT", "DISPLACE", "Tearline_Displace_Inner_L", "mod.strength = -parameters.tearline_inner"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["tearline_alpha", 0.2, "func_mul_5", "Custom/_Opacity"], ["tearline_specular", 2.0, "DEF"], ["tearline_ior", 2.0, "DEF"], ["tearline_roughness", 0.15, "", "Custom/_Roughness"], ["tearline_inner", 0, "DEF"], ["tearline_displace", 0.05, "", "Custom/Depth Offset"], ["tearline_detail", 0, "", "Custom/Detail Amount"], ["tearline_tiling_u", 0, "", "Custom/Detail U Tiling"], ["tearline_tiling_v", 0, "", "Custom/Detail V Tiling"], ["tearline_normal_strength", 0, "", "Custom/Micro Normal Strength"], ["tearline_normal_scale", 0, "", "Custom/Micro Normal Scale"], ["tearline_edge_fadeout", 0, "", "Custom/Edge Fadeout"], ], # export variables to update json file on export that require special functions to convert # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/_Opacity", 0.04, "func_divide_5", "tearline_alpha"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Tearline", "MATFLUID"], ["PROP", "*IOR", "tearline_ior", True], ["PROP", "*Specular", "tearline_specular", True], ["PROP", "Roughness", "tearline_roughness", True], ["PROP", "*Alpha", "tearline_alpha", True], ["PROP", "Edge Fadeout", "tearline_edge_fadeout", True], ["HEADER", "Normals", "MATFLUID"], ["PROP", "Details", "tearline_detail", True], ["PAIR", "Tiling", "tearline_tiling_u", "tearline_tiling_v", True], ["PROP", "Strength", "tearline_normal_strength", True], ["PROP", "Scale", "tearline_normal_scale", True], ["SPACER"], ["PROP", "Displace", "tearline_displace", True], ["PROP", "*Inner Displace", "tearline_inner", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 0.0, 0.0, 0.0 ], "Specular Color": [ 0.0, 0.0, 0.0 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLEyeTearline_Plus", "Image": {}, "Variable": {}, } }, }, # Eye Occlusion Shader ######################################### { "name": "rl_eye_occlusion_shader", "rl_shader": "RLEyeOcclusion", "label": "Eye Occlusion", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Color", "func_occlusion_color", "eye_occlusion_color"], ["Strength", "func_occlusion_strength", "eye_occlusion_strength"], ["Strength2", "func_occlusion_strength", "eye_occlusion_strength2"], ["Power", "", "eye_occlusion_power"], ["Top Min", "", "eye_occlusion_top_min"], ["Top Max", "func_occlusion_range", "eye_occlusion_top_range", "eye_occlusion_top_min"], ["Top Curve", "", "eye_occlusion_top_curve"], ["Bottom Min", "", "eye_occlusion_bottom_min"], ["Bottom Max", "func_occlusion_range", "eye_occlusion_bottom_range", "eye_occlusion_bottom_min"], ["Bottom Curve", "", "eye_occlusion_bottom_curve"], ["Inner Min", "", "eye_occlusion_inner_min"], ["Inner Max", "func_occlusion_range", "eye_occlusion_inner_range", "eye_occlusion_inner_min"], ["Outer Min", "", "eye_occlusion_outer_min"], ["Outer Max", "func_occlusion_range", "eye_occlusion_outer_range", "eye_occlusion_outer_min"], ["Top2 Min", "", "eye_occlusion_top2_min"], ["Top2 Max", "func_occlusion_range", "eye_occlusion_top2_range", "eye_occlusion_top2_min"], ["Tear Duct Position", "", "eye_occlusion_tear_duct_position"], ["Tear Duct Width", "", "eye_occlusion_tear_duct_width"], ], # modifier properties: # [prop_name, material_type, modifier_type, modifier_id, expression] "modifiers": [ [ "eye_occlusion_displace", "OCCLUSION_RIGHT", "DISPLACE", "Occlusion_Displace_All_R", "mod.strength = parameters.eye_occlusion_displace"], [ "eye_occlusion_inner", "OCCLUSION_RIGHT", "DISPLACE", "Occlusion_Displace_Inner_R", "mod.strength = parameters.eye_occlusion_inner"], [ "eye_occlusion_outer", "OCCLUSION_RIGHT", "DISPLACE", "Occlusion_Displace_Outer_R", "mod.strength = parameters.eye_occlusion_outer"], [ "eye_occlusion_top", "OCCLUSION_RIGHT", "DISPLACE", "Occlusion_Displace_Top_R", "mod.strength = parameters.eye_occlusion_top"], [ "eye_occlusion_bottom", "OCCLUSION_RIGHT", "DISPLACE", "Occlusion_Displace_Bottom_R", "mod.strength = parameters.eye_occlusion_bottom"], [ "eye_occlusion_displace", "OCCLUSION_LEFT", "DISPLACE", "Occlusion_Displace_All_L", "mod.strength = parameters.eye_occlusion_displace"], [ "eye_occlusion_inner", "OCCLUSION_LEFT", "DISPLACE", "Occlusion_Displace_Inner_L", "mod.strength = parameters.eye_occlusion_inner"], [ "eye_occlusion_outer", "OCCLUSION_LEFT", "DISPLACE", "Occlusion_Displace_Outer_L", "mod.strength = parameters.eye_occlusion_outer"], [ "eye_occlusion_top", "OCCLUSION_LEFT", "DISPLACE", "Occlusion_Displace_Top_L", "mod.strength = parameters.eye_occlusion_top"], [ "eye_occlusion_bottom", "OCCLUSION_LEFT", "DISPLACE", "Occlusion_Displace_Bottom_L", "mod.strength = parameters.eye_occlusion_bottom"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["eye_occlusion_tear_duct_position", 0.8, "", "Custom/Tear Duct Position"], ["eye_occlusion_color", (0.014451, 0.001628, 0.000837, 1.0), "func_color_bytes_linear", "Custom/Shadow Color"], ["eye_occlusion_strength", 0.2, "", "Custom/Shadow Strength"], ["eye_occlusion_top_min", 0.27, "", "Custom/Shadow Top"], ["eye_occlusion_top_range", 1, "", "Custom/Shadow Top Range"], ["eye_occlusion_top_curve", 0.7, "", "Custom/Shadow Top Arc"], ["eye_occlusion_bottom_min", 0.05, "", "Custom/Shadow Bottom"], ["eye_occlusion_bottom_range", 0.335, "", "Custom/Shadow Bottom Range"], ["eye_occlusion_bottom_curve", 2.0, "", "Custom/Shadow Bottom Arc"], ["eye_occlusion_inner_min", 0.25, "", "Custom/Shadow Inner Corner"], ["eye_occlusion_inner_range", 0.625, "", "Custom/Shadow Inner Corner Range"], ["eye_occlusion_outer_min", 0.2, "", "Custom/Shadow Outer Corner"], ["eye_occlusion_outer_range", 0.6, "", "Custom/Shadow Outer Corner Range"], ["eye_occlusion_strength2", 0.4, "", "Custom/Shadow2 Strength"], ["eye_occlusion_top2_min", 0.15, "", "Custom/Shadow2 Top"], ["eye_occlusion_top2_range", 1, "", "Custom/Shadow2 Top Range"], ["eye_occlusion_displace", 0.02, "func_divide_100", "Custom/Depth Offset"], ["eye_occlusion_top", 0, "", "Custom/Top Offset"], ["eye_occlusion_bottom", 0, "", "Custom/Bottom Offset"], ["eye_occlusion_inner", 0, "", "Custom/Inner Corner Offset"], ["eye_occlusion_outer", 0.07, "", "Custom/Outer Corner Offset"], # non json properties (just defaults) ["eye_occlusion_tear_duct_width", 0.5, "DEF"], ["eye_occlusion_power", 4, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/Shadow Color", [255.0, 255.0, 255.0], "func_export_byte3_linear", "eye_occlusion_color"], ["Custom/Depth Offset", 0.02, "func_mul_100", "eye_occlusion_displace"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "eye_occlusion_color", False], ["HEADER", "Opacity", "MOD_OPACITY"], ["PROP", "*Hardness", "eye_occlusion_power", True, "#EEVEE"], ["PROP", "Strength", "eye_occlusion_strength", True, "#EEVEE"], ["PROP", "Top", "eye_occlusion_top_min", True, "#EEVEE"], ["PROP", "Top Range", "eye_occlusion_top_range", True, "#EEVEE"], ["PROP", "Top Curve", "eye_occlusion_top_curve", True, "#EEVEE"], ["PROP", "Bottom", "eye_occlusion_bottom_min", True, "#EEVEE"], ["PROP", "Bottom Range", "eye_occlusion_bottom_range", True, "#EEVEE"], ["PROP", "Bottom Curve", "eye_occlusion_bottom_curve", True, "#EEVEE"], ["PROP", "Inner", "eye_occlusion_inner_min", True, "#EEVEE"], ["PROP", "Inner Range", "eye_occlusion_inner_range", True, "#EEVEE"], ["PROP", "Outer", "eye_occlusion_outer_min", True, "#EEVEE"], ["PROP", "Outer Range", "eye_occlusion_outer_range", True, "#EEVEE"], ["SPACER"], ["PROP", "2nd Strength", "eye_occlusion_strength2", True, "#EEVEE"], ["PROP", "2nd Top", "eye_occlusion_top2_min", True, "#EEVEE"], ["PROP", "2nd Top Range", "eye_occlusion_top2_range", True, "#EEVEE"], ["SPACER"], ["PROP", "Tear Duct Position", "eye_occlusion_tear_duct_position", True, "#EEVEE"], ["PROP", "*Tear Duct Width", "eye_occlusion_tear_duct_width", True, "#EEVEE"], ["HEADER", "Displacement", "MOD_DISPLACE"], ["PROP", "Displace", "eye_occlusion_displace", True], ["PROP", "Top", "eye_occlusion_top", True], ["PROP", "Bototm", "eye_occlusion_bottom", True], ["PROP", "Inner", "eye_occlusion_inner", True], ["PROP", "Outer", "eye_occlusion_outer", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 0.0, 0.0, 0.0 ], "Specular Color": [ 0.0, 0.0, 0.0 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLEyeOcclusion", "Image": {}, "Variable": {}, } }, }, # Eye Occlusion Plus Shader ######################################### { "name": "rl_eye_occlusion_plus_shader", "rl_shader": "RLEyeOcclusion_Plus", "label": "Eye Occlusion Plus", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Shadow Color", "func_occlusion_color", "eye_occlusion_color"], ["Shadow Strength", "", "eye_occlusion_strength"], ["Shadow Top Min", "", "eye_occlusion_top_min"], ["Shadow Top Max", "", "eye_occlusion_top_max"], ["Shadow Top Min Contrast", "", "eye_occlusion_top_in"], ["Shadow Top Max Contrast", "", "eye_occlusion_top_out"], ["Shadow Bottom Min", "", "eye_occlusion_bottom_min"], ["Shadow Bottom Max", "", "eye_occlusion_bottom_max"], ["Shadow Bottom Min Contrast", "", "eye_occlusion_bottom_in"], ["Shadow Bottom Max Contrast", "", "eye_occlusion_bottom_out"], ["Shadow Inner Min", "", "eye_occlusion_inner_min"], ["Shadow Inner Max", "", "eye_occlusion_inner_max"], ["Shadow Inner Min Contrast", "", "eye_occlusion_inner_in"], ["Shadow Inner Max Contrast", "", "eye_occlusion_inner_out"], ["Shadow Outer Min", "", "eye_occlusion_outer_min"], ["Shadow Outer Max", "", "eye_occlusion_outer_max"], ["Shadow Outer Min Contrast", "", "eye_occlusion_outer_in"], ["Shadow Outer Max Contrast", "", "eye_occlusion_outer_out"], ["Show Blur Range", "", "eye_occlusion_blur_show"], ["Blur Color", "func_occlusion_color", "eye_occlusion_blur_color"], ["Blur Strength", "", "eye_occlusion_blur_strength"], ["Blur IOR", "", "eye_occlusion_blur_ior"], ["Blur Top Min", "", "eye_occlusion_blur_top_min"], ["Blur Top Max", "", "eye_occlusion_blur_top_max"], ["Blur Top Min Contrast", "func_one_minus", "eye_occlusion_blur_top_in"], ["Blur Top Max Contrast", "", "eye_occlusion_blur_top_out"], ["Blur Bottom Min", "", "eye_occlusion_blur_bottom_min"], ["Blur Bottom Max", "", "eye_occlusion_blur_bottom_max"], ["Blur Bottom Min Contrast", "func_one_minus", "eye_occlusion_blur_bottom_in"], ["Blur Bottom Max Contrast", "", "eye_occlusion_blur_bottom_out"], ["Blur Inner Min", "", "eye_occlusion_blur_inner_min"], ["Blur Inner Max", "", "eye_occlusion_blur_inner_max"], ["Blur Inner Min Contrast", "func_one_minus", "eye_occlusion_blur_inner_in"], ["Blur Inner Max Contrast", "", "eye_occlusion_blur_inner_out"], ["Blur Outer Min", "", "eye_occlusion_blur_outer_min"], ["Blur Outer Max", "", "eye_occlusion_blur_outer_max"], ["Blur Outer Min Contrast", "func_one_minus", "eye_occlusion_blur_outer_in"], ["Blur Outer Max Contrast", "", "eye_occlusion_blur_outer_out"], ["Edge Width", "", "eye_occlusion_edge_width"], ], "shape_keys": [ [ "EO Bulge L", "OCCLUSION_LEFT", "eye_occlusion_bulge" ], [ "EO Bulge R", "OCCLUSION_RIGHT", "eye_occlusion_bulge" ], [ "EO Depth L", "OCCLUSION_LEFT", "eye_occlusion_displace" ], [ "EO Depth R", "OCCLUSION_RIGHT", "eye_occlusion_displace" ], [ "EO Upper Depth L", "OCCLUSION_LEFT", "eye_occlusion_top" ], [ "EO Upper Depth R", "OCCLUSION_RIGHT", "eye_occlusion_top" ], [ "EO Lower Depth L", "OCCLUSION_LEFT", "eye_occlusion_bottom" ], [ "EO Lower Depth R", "OCCLUSION_RIGHT", "eye_occlusion_bottom" ], [ "EO Inner Depth L", "OCCLUSION_LEFT", "eye_occlusion_inner" ], [ "EO Inner Depth R", "OCCLUSION_RIGHT", "eye_occlusion_inner" ], [ "EO Outer Depth L", "OCCLUSION_LEFT", "eye_occlusion_outer" ], [ "EO Outer Depth R", "OCCLUSION_RIGHT", "eye_occlusion_outer" ], [ "EO Bulge L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_bulge" ], [ "EO Bulge R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_bulge" ], [ "EO Depth L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_displace" ], [ "EO Depth R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_displace" ], [ "EO Upper Depth L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_top" ], [ "EO Upper Depth R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_top" ], [ "EO Lower Depth L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_bottom" ], [ "EO Lower Depth R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_bottom" ], [ "EO Inner Depth L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_inner" ], [ "EO Inner Depth R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_inner" ], [ "EO Outer Depth L", "OCCLUSION_PLUS_LEFT", "eye_occlusion_outer" ], [ "EO Outer Depth R", "OCCLUSION_PLUS_RIGHT", "eye_occlusion_outer" ], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ # Shadow ["eye_occlusion_strength", 0.5, "", "Custom/Shadow Strength"], ["eye_occlusion_color", (0.5, 0.5, 0.5, 1.0), "func_color_bytes_linear", "Custom/Shadow Color"], ["eye_occlusion_top_min", 0.0, "func_index_f0", "Custom/Shadow Top Range"], ["eye_occlusion_top_max", 0.25, "func_index_f1", "Custom/Shadow Top Range"], ["eye_occlusion_top_in", 0.5, "", "Custom/Shadow Top Edge Fadeout Contrast"], ["eye_occlusion_top_out", 0.5, "", "Custom/Shadow Top Contrast"], ["eye_occlusion_bottom_min", 0.0, "func_index_f0", "Custom/Shadow Bottom Range"], ["eye_occlusion_bottom_max", 0.25, "func_index_f1", "Custom/Shadow Bottom Range"], ["eye_occlusion_bottom_in", 0.5, "", "Custom/Shadow Bottom Edge Fadeout Contrast"], ["eye_occlusion_bottom_out", 0.5, "", "Custom/Shadow Bottom Contrast"], ["eye_occlusion_inner_min", 0.0, "func_index_f0", "Custom/Shadow Inner Range"], ["eye_occlusion_inner_max", 0.25, "func_index_f1", "Custom/Shadow Inner Range"], ["eye_occlusion_inner_in", 0.5, "", "Custom/Shadow Inner Edge Fadeout Contrast"], ["eye_occlusion_inner_out", 0.5, "", "Custom/Shadow Inner Contrast"], ["eye_occlusion_outer_min", 0.0, "func_index_f0", "Custom/Shadow Outer Range"], ["eye_occlusion_outer_max", 0.25, "func_index_f1", "Custom/Shadow Outer Range"], ["eye_occlusion_outer_in", 0.5, "", "Custom/Shadow Outer Edge Fadeout Contrast"], ["eye_occlusion_outer_out", 0.5, "", "Custom/Shadow Outer Contrast"], # Blur ["eye_occlusion_blur_show", 0.0, "", "Custom/Display Blur Range"], ["eye_occlusion_blur_strength", 0.2, "", "Custom/Blur Strength"], ["eye_occlusion_blur_color", (1.0, 0.0, 0.0, 1.0), "func_color_bytes_linear", "Custom/Blur Color"], ["eye_occlusion_blur_top_min", 0.0, "func_index_f0", "Custom/Top Blur Range"], ["eye_occlusion_blur_top_max", 0.25, "func_index_f1", "Custom/Top Blur Range"], ["eye_occlusion_blur_top_in", 0.5, "", "Custom/Top Blur Edge Fadeout Contrast"], ["eye_occlusion_blur_top_out", 0.5, "", "Custom/Top Blur Contrast"], ["eye_occlusion_blur_bottom_min", 0.0, "func_index_f0", "Custom/Bottom Blur Range"], ["eye_occlusion_blur_bottom_max", 0.25, "func_index_f1", "Custom/Bottom Blur Range"], ["eye_occlusion_blur_bottom_in", 0.5, "", "Custom/Bottom Blur Edge Fadeout Contrast"], ["eye_occlusion_blur_bottom_out", 0.5, "", "Custom/Bottom Blur Contrast"], ["eye_occlusion_blur_inner_min", 0.0, "func_index_f0", "Custom/Inner Blur Duct Range"], ["eye_occlusion_blur_inner_max", 0.25, "func_index_f1", "Custom/Inner Blur Duct Range"], ["eye_occlusion_blur_inner_in", 0.5, "", "Custom/Inner Blur Edge Fadeout Contrast"], ["eye_occlusion_blur_inner_out", 0.5, "", "Custom/Inner Blur Contrast"], ["eye_occlusion_blur_outer_min", 0.0, "func_index_f0", "Custom/Outer Blur Range"], ["eye_occlusion_blur_outer_max", 0.25, "func_index_f1", "Custom/Outer Blur Range"], ["eye_occlusion_blur_outer_in", 0.5, "", "Custom/Outer Blur Edge Fadeout Contrast"], ["eye_occlusion_blur_outer_out", 0.5, "", "Custom/Outer Blur Contrast"], # Shape ["eye_occlusion_displace", 0, "", "Custom/Depth Offset"], ["eye_occlusion_top", 0, "", "Custom/Top Offset"], ["eye_occlusion_bottom", 0, "", "Custom/Bottom Offset"], ["eye_occlusion_inner", 0, "", "Custom/Inner Corner Offset"], ["eye_occlusion_outer", 0, "", "Custom/Outer Corner Offset"], # Custom ["eye_occlusion_blur_ior", 0.5, "DEF"], ["eye_occlusion_bulge", 0.0, "DEF"], ["eye_occlusion_edge_width", 0.25, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/Shadow Color", [255.0, 255.0, 255.0], "func_export_byte3_linear", "eye_occlusion_color"], ["Custom/Blur Color", [255.0, 255.0, 255.0], "func_export_byte3_linear", "eye_occlusion_blur_color"], ["Custom/Depth Offset", 0.02, "func_mul_100", "eye_occlusion_displace"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Shadow", "COLOR"], ["PROP", "Color", "eye_occlusion_color", False], ["PROP", "Strength", "eye_occlusion_strength", True], ["PAIR", "Top", "eye_occlusion_top_min", "eye_occlusion_top_max", True], ["PAIR", "Contrast", "eye_occlusion_top_in", "eye_occlusion_top_out", True], ["PAIR", "Bottom", "eye_occlusion_bottom_min", "eye_occlusion_bottom_max", True], ["PAIR", "Contrast", "eye_occlusion_bottom_in", "eye_occlusion_bottom_out", True], ["PAIR", "Inner", "eye_occlusion_inner_min", "eye_occlusion_inner_max", True], ["PAIR", "Contrast", "eye_occlusion_inner_in", "eye_occlusion_inner_out", True], ["PAIR", "Outer", "eye_occlusion_outer_min", "eye_occlusion_outer_max", True], ["PAIR", "Contrast", "eye_occlusion_outer_in", "eye_occlusion_outer_out", True], ["HEADER", "Blur", "MOD_OPACITY"], ["PROP", "Show", "eye_occlusion_blur_show", True], ["PROP", "Color", "eye_occlusion_blur_color", False], ["PROP", "Strength", "eye_occlusion_blur_strength", True], ["PROP", "IOR", "eye_occlusion_blur_ior", True], ["PAIR", "Top", "eye_occlusion_blur_top_min", "eye_occlusion_blur_top_max", True], ["PAIR", "Contrast", "eye_occlusion_blur_top_in", "eye_occlusion_blur_top_out", True], ["PAIR", "Bottom", "eye_occlusion_blur_bottom_min", "eye_occlusion_blur_bottom_max", True], ["PAIR", "Contrast", "eye_occlusion_blur_bottom_in", "eye_occlusion_blur_bottom_out", True], ["PAIR", "Inner", "eye_occlusion_blur_inner_min", "eye_occlusion_blur_inner_max", True], ["PAIR", "Contrast", "eye_occlusion_blur_inner_in", "eye_occlusion_blur_inner_out", True], ["PAIR", "Outer", "eye_occlusion_blur_outer_min", "eye_occlusion_blur_outer_max", True], ["PAIR", "Contrast", "eye_occlusion_blur_outer_in", "eye_occlusion_blur_outer_out", True], ["SPACER"], ["PROP", "Edge Width", "eye_occlusion_edge_width", True], ["HEADER", "Displacement", "MOD_DISPLACE"], ["PROP", "Displace", "eye_occlusion_displace", True], ["PROP", "Top", "eye_occlusion_top", True], ["PROP", "Bottom", "eye_occlusion_bottom", True], ["PROP", "Inner", "eye_occlusion_inner", True], ["PROP", "Outer", "eye_occlusion_outer", True], ["PROP", "Bulge", "eye_occlusion_bulge", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 0.0, 0.0, 0.0 ], "Specular Color": [ 0.0, 0.0, 0.0 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLEyeOcclusion_Plus", "Image": {}, "Variable": {}, } }, }, # Skin Shader ######################################## { "name": "rl_skin_shader", "rl_shader": "RLSkin", "label": "Skin (Body)", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Diffuse Color", "", "skin_diffuse_color"], ["Diffuse Hue", "", "skin_diffuse_hue"], ["Diffuse Saturation", "", "skin_diffuse_saturation"], ["Diffuse Brightness", "", "skin_diffuse_brightness"], ["Diffuse HSV", "", "skin_diffuse_hsv_strength"], ["AO Strength", "", "skin_ao_strength"], ["AO Power", "", "skin_ao_power"], ["Specular Scale", "", "skin_specular_scale"], ["Secondary Specular Ratio", "", "skin_secondary_specular_ratio"], ["Roughness Power", "func_roughness_power", "skin_roughness_power"], ["Original Roughness", "", "skin_original_roughness"], ["Cavity Strength", "func_sqrt", "skin_cavity_strength"], ["Secondary Roughness", "", "skin_secondary_roughness_scale"], ["Normal Strength", "func_skin_normal_strength", "skin_normal_strength"], ["Micro Normal Strength", "func_micro_normal_strength", "skin_micro_normal_strength"], ["Bump Scale", "", "skin_bump_scale"], ["Height Scale", "", "skin_height_scale"], ["Subsurface Falloff", "func_sss_falloff_saturated", "skin_subsurface_falloff", "skin_subsurface_saturation"], ["Subsurface Radius", "func_sss_radius_skin_cycles", "skin_subsurface_radius"], ["Subsurface Scale", "func_sss_skin", "skin_subsurface_scale"], ["Unmasked Scatter Scale", "", "skin_unmasked_scatter_scale"], ["R Scatter Scale", "", "skin_r_scatter_scale"], ["G Scatter Scale", "", "skin_g_scatter_scale"], ["B Scatter Scale", "", "skin_b_scatter_scale"], ["A Scatter Scale", "", "skin_a_scatter_scale"], ["Micro Roughness Mod", "", "skin_micro_roughness_mod"], ["Unmasked Roughness Mod", "", "skin_unmasked_roughness_mod"], ["R Roughness Mod", "", "skin_r_roughness_mod"], ["G Roughness Mod", "", "skin_g_roughness_mod"], ["B Roughness Mod", "", "skin_b_roughness_mod"], ["A Roughness Mod", "", "skin_a_roughness_mod"], ["Emissive Color", "", "skin_emissive_color"], ["Emission Strength", "func_emission_scale", "skin_emission_strength"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_skin_eevee", "skin_subsurface_radius", "skin_subsurface_falloff", "skin_subsurface_saturation"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["AO Map", "", "AO"], ["Subsurface Map", "", "SSS"], ["Transmission Map", "", "TRANSMISSION"], ["Metallic Map", "", "METALLIC"], ["Specular Map", "", "SPECULAR"], ["Roughness Map", "", "ROUGHNESS"], ["Cavity Map", "", "CAVITY"], ["Normal Map", "", "NORMAL"], ["Normal Blend Map", "", "NORMALBLEND"], ["Micro Normal Map", "", "MICRONORMAL", "OFFSET", "", "skin_micro_normal_tiling"], ["Micro Normal Mask", "", "MICRONMASK"], ["RGBA Map", "RGBA Alpha", "RGBAMASK"], ["Emission Map", "", "EMISSION"], ["Height Map", "", "DISPLACE"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["skin_diffuse_color", (1,1,1,1), "func_color_bytes", "/Diffuse Color"], ["skin_micro_normal_tiling", 25, "", "Custom/MicroNormal Tiling"], ["skin_micro_normal_strength", 0.8, "", "Custom/MicroNormal Strength"], ["skin_micro_roughness_mod", 0.20, "", "Custom/Micro Roughness Scale"], ["skin_r_roughness_mod", 0.0, "", "Custom/R Channel Roughness Scale"], ["skin_g_roughness_mod", 0.0, "", "Custom/G Channel Roughness Scale"], ["skin_b_roughness_mod", 0.0, "", "Custom/B Channel Roughness Scale"], ["skin_a_roughness_mod", 0.0, "", "Custom/A Channel Roughness Scale"], ["skin_unmasked_roughness_mod", 0.0, "", "Custom/Unmasked Roughness Scale"], ["skin_specular_scale", 0.4, "", "Custom/_Specular"], ["skin_r_scatter_scale", 1, "", "Custom/R Channel Scatter Scale"], ["skin_g_scatter_scale", 1, "", "Custom/G Channel Scatter Scale"], ["skin_b_scatter_scale", 1, "", "Custom/B Channel Scatter Scale"], ["skin_a_scatter_scale", 1, "", "Custom/A Channel Scatter Scale"], ["skin_unmasked_scatter_scale", 1, "", "Custom/Unmasked Scatter Scale"], ["skin_ao_strength", 1, "", "Pbr/AO"], ["skin_normal_strength", 1, "", "Pbr/Normal"], ["skin_emission_strength", 0, "", "Pbr/Glow"], ["skin_subsurface_falloff", (1.0, 0.112, 0.072, 1.0), "func_color_bytes", "SSS/Falloff"], ["skin_subsurface_radius", 1.5, "", "SSS/Radius"], ["skin_original_roughness", 1, "", "Custom/Original Roughness Strength"], ["skin_cavity_strength", 0, "", "Custom/Cavity Strength"], ["skin_height_scale", 0.0, "", "Pbr/Displacement"], ["skin_bump_scale", 0.0, "DEF"], # non json properties (just defaults) ["skin_ao_power", 2.0, "DEF"], ["skin_diffuse_hue", 0.5, "", "/Diffuse Hue"], ["skin_diffuse_saturation", 1, "func_saturation_mod", "/Diffuse Saturation"], ["skin_diffuse_brightness", 1, "func_brightness_mod", "/Diffuse Brightness"], ["skin_subsurface_saturation", 1.0, "DEF"], ["skin_diffuse_hsv_strength", 1, "DEF"], ["skin_roughness_power", 1.0, "DEF"], ["skin_subsurface_scale", 1, "DEF"], ["skin_emissive_color", (1,1,1,1), "DEF"], ["skin_secondary_specular_ratio", 0.2, "DEF"], ["skin_secondary_roughness_scale", 0.5, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["/Diffuse Color", [255.0, 255.0, 255.0], "func_export_byte3", "skin_diffuse_color"], ["/Diffuse Brightness", 1.0, "func_export_brightness_mod", "skin_diffuse_brightness"], ["/Diffuse Saturation", 1.0, "func_export_saturation_mod", "skin_diffuse_saturation"], ["/Diffuse HSV", 1.0, "", "skin_diffuse_hsv_strength"], ["SSS/Falloff", [255.0, 94.3499984741211, 76.5], "func_export_byte3", "skin_subsurface_falloff"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "skin_diffuse_color", True], ["TRIPLET", "HSV", "skin_diffuse_hue", "skin_diffuse_saturation", "skin_diffuse_brightness", True, "Diffuse Map"], ["PROP", "*HSV Strength", "skin_diffuse_hsv_strength", True, "Diffuse Map"], ["SPACER"], ["PROP", "AO Strength", "skin_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "skin_ao_power", True, "AO Map"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Specular Scale", "skin_specular_scale", True], ["PROP", "*Roughness Power", "skin_roughness_power", True], ["PROP", "Original Roughness", "skin_original_roughness", True], ["PROP", "Cavity Strength", "skin_cavity_strength", True, "Cavity Map"], ["PROP", "*Dual Specular Ratio", "skin_secondary_specular_ratio", True], ["PROP", "*Sec. Roughness", "skin_secondary_roughness_scale", True], ["SPACER"], ["PROP", "Micro Roughness Mod", "skin_micro_roughness_mod", True], ["PROP", "R Roughness Mod", "skin_r_roughness_mod", True, "RGBA Map"], ["PROP", "G Roughness Mod", "skin_g_roughness_mod", True, "RGBA Map"], ["PROP", "B Roughness Mod", "skin_b_roughness_mod", True, "RGBA Map"], ["PROP", "A Roughness Mod", "skin_a_roughness_mod", True, "RGBA Map"], ["PROP", "Unmasked Roughness Mod", "skin_unmasked_roughness_mod", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "*Weight", "skin_subsurface_scale", True], ["PROP", "Falloff", "skin_subsurface_falloff", False], ["PROP", "*Saturation", "skin_subsurface_saturation", True], ["PROP", "Radius", "skin_subsurface_radius", True], ["SPACER"], ["PROP", "R Scatter Scale", "skin_r_scatter_scale", True, "RGBA Map"], ["PROP", "G Scatter Scale", "skin_g_scatter_scale", True, "RGBA Map"], ["PROP", "B Scatter Scale", "skin_b_scatter_scale", True, "RGBA Map"], ["PROP", "A Scatter Scale", "skin_a_scatter_scale", True, "RGBA Map"], ["PROP", "Unmasked Scatter Scale", "skin_unmasked_scatter_scale", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "skin_normal_strength", True, "Normal Map"], ["PROP", "Micro Normal Strength", "skin_micro_normal_strength", True, "Micro Normal Map"], ["PROP", "Micro Normal Tiling", "skin_micro_normal_tiling", True, "Micro Normal Map"], ["PROP", "Bump Scale", "skin_bump_scale", True, "Height Map"], ["PROP", "Displacement Scale", "skin_height_scale", True, "Height Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "*Emissive Color", "skin_emissive_color", False], ["PROP", "Emission Strength", "skin_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 125.0, 125.0, 125.0 ], "Specular Color": [ 68.7, 68.7, 68.7 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLSkin", "Image": {}, "Variable": {}, }, "Subsurface Scatter": { "Falloff": [ 255.0, 94.35, 76.5 ], "Radius": 1.5, "Distribution": 0.4, "IOR": 3.0, "DecayScale": 0.15, "Lerp": 0.85 } }, }, # Head Shader ########################################## { "name": "rl_head_shader", "rl_shader": "RLHead", "label": "Skin (Head)", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Diffuse Color", "", "skin_diffuse_color"], ["Diffuse Hue", "", "skin_diffuse_hue"], ["Diffuse Saturation", "", "skin_diffuse_saturation"], ["Diffuse Brightness", "", "skin_diffuse_brightness"], ["Diffuse HSV", "", "skin_diffuse_hsv_strength"], ["Cavity AO Strength", "", "skin_cavity_ao_strength"], ["Blend Overlay Strength", "", "skin_blend_overlay_strength"], ["AO Strength", "", "skin_ao_strength"], ["AO Power", "", "skin_ao_power"], ["Mouth AO", "", "skin_mouth_ao"], ["Nostril AO", "", "skin_nostril_ao"], ["Lip AO", "", "skin_lips_ao"], ["Specular Scale", "", "skin_specular_scale"], ["Secondary Specular Ratio", "", "skin_secondary_specular_ratio"], ["Roughness Power", "func_roughness_power", "skin_roughness_power"], ["Original Roughness", "", "skin_original_roughness"], ["Cavity Strength", "func_sqrt", "skin_cavity_strength"], ["Secondary Roughness", "", "skin_secondary_roughness_scale"], ["Normal Strength", "func_skin_normal_strength", "skin_normal_strength"], ["Micro Normal Strength", "func_micro_normal_strength", "skin_micro_normal_strength"], ["Normal Blend Strength", "", "skin_normal_blend_strength"], ["Unmasked Scatter Scale", "", "skin_unmasked_scatter_scale"], ["Nose Scatter Scale", "", "skin_nose_scatter_scale"], ["Mouth Scatter Scale", "", "skin_mouth_scatter_scale"], ["Upper Lid Scatter Scale", "", "skin_upper_lid_scatter_scale"], ["Inner Lid Scatter Scale", "", "skin_inner_lid_scatter_scale"], ["Cheek Scatter Scale", "", "skin_cheek_scatter_scale"], ["Forehead Scatter Scale", "", "skin_forehead_scatter_scale"], ["Upper Lip Scatter Scale", "", "skin_upper_lip_scatter_scale"], ["Chin Scatter Scale", "", "skin_chin_scatter_scale"], ["Ear Scatter Scale", "", "skin_ear_scatter_scale"], ["Neck Scatter Scale", "", "skin_neck_scatter_scale"], ["Subsurface Falloff", "func_sss_falloff_saturated", "skin_subsurface_falloff", "skin_subsurface_saturation"], ["Subsurface Radius", "func_sss_radius_skin_cycles", "skin_subsurface_radius"], ["Subsurface Scale", "func_sss_skin", "skin_subsurface_scale"], ["Micro Roughness Mod", "", "skin_micro_roughness_mod"], ["Unmasked Roughness Mod", "", "skin_unmasked_roughness_mod"], ["Nose Roughness Mod", "", "skin_nose_roughness_mod"], ["Mouth Roughness Mod", "", "skin_mouth_roughness_mod"], ["Upper Lid Roughness Mod", "", "skin_upper_lid_roughness_mod"], ["Inner Lid Roughness Mod", "", "skin_inner_lid_roughness_mod"], ["Cheek Roughness Mod", "", "skin_cheek_roughness_mod"], ["Forehead Roughness Mod", "", "skin_forehead_roughness_mod"], ["Upper Lip Roughness Mod", "", "skin_upper_lip_roughness_mod"], ["Chin Roughness Mod", "", "skin_chin_roughness_mod"], ["Ear Roughness Mod", "", "skin_ear_roughness_mod"], ["Neck Roughness Mod", "", "skin_neck_roughness_mod"], ["Emissive Color", "", "skin_emissive_color"], ["Emission Strength", "func_emission_scale", "skin_emission_strength"], ["Height Scale", "", "skin_height_scale"], ["Bump Scale", "", "skin_bump_scale"], ["Height Delta Scale", "", "skin_height_delta_scale"], ["Caruncle Blend", "", "skin_caruncle_blend"], ["Caruncle Color", "", "skin_caruncle_color"], ["Caruncle Roughness", "", "skin_caruncle_roughness"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_skin_eevee", "skin_subsurface_radius", "skin_subsurface_falloff", "skin_subsurface_saturation"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["Blend Overlay", "", "BLEND2"], ["AO Map", "", "AO"], ["MCMAO Map", "MCMAO Alpha", "MCMAOMASK"], ["Subsurface Map", "", "SSS"], ["Transmission Map", "", "TRANSMISSION"], ["Metallic Map", "", "METALLIC"], ["Specular Map", "", "SPECULAR"], ["Specular Mask", "", "SPECMASK"], ["Roughness Map", "", "ROUGHNESS"], ["Cavity Map", "", "CAVITY"], ["Normal Map", "", "NORMAL"], ["Normal Blend Map", "", "NORMALBLEND"], ["Micro Normal Map", "", "MICRONORMAL", "OFFSET", "", "skin_micro_normal_tiling"], ["Micro Normal Mask", "", "MICRONMASK"], ["NMUIL Map", "NMUIL Alpha", "NMUILMASK"], ["CFULC Map", "CFULC Alpha", "CFULCMASK"], ["EN Map", "", "ENNASK"], ["Emission Map", "", "EMISSION"], ["Height Map", "", "DISPLACE"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["skin_diffuse_color", (1,1,1,1), "func_color_bytes", "/Diffuse Color"], ["skin_blend_overlay_strength", 0, "", "Custom/BaseColor Blend2 Strength"], ["skin_normal_blend_strength", 0, "", "Custom/NormalMap Blend Strength"], ["skin_micro_normal_tiling", 20, "", "Custom/MicroNormal Tiling"], ["skin_micro_normal_strength", 0.5, "", "Custom/MicroNormal Strength"], ["skin_micro_roughness_mod", 0.20, "", "Custom/Micro Roughness Scale"], ["skin_nose_roughness_mod", 0.119, "", "Custom/Nose Roughness Scale"], ["skin_mouth_roughness_mod", 0.034, "", "Custom/Mouth Roughness Scale"], ["skin_upper_lid_roughness_mod", -0.3, "", "Custom/UpperLid Roughness Scale"], ["skin_inner_lid_roughness_mod", -0.574, "", "Custom/InnerLid Roughness Scale"], ["skin_ear_roughness_mod", 0.0, "", "Custom/Ear Roughness Scale"], ["skin_neck_roughness_mod", 0.0, "", "Custom/Neck Roughness Scale"], ["skin_cheek_roughness_mod", 0.0, "", "Custom/Cheek Roughness Scale"], ["skin_forehead_roughness_mod", 0.0, "", "Custom/Forehead Roughness Scale"], ["skin_upper_lip_roughness_mod", 0.0, "", "Custom/UpperLip Roughness Scale"], ["skin_chin_roughness_mod", 0.0, "", "Custom/Chin Roughness Scale"], ["skin_unmasked_roughness_mod", 0.0, "", "Custom/Unmasked Roughness Scale"], ["skin_specular_scale", 0.4, "", "Custom/_Specular"], ["skin_mouth_ao", 2.5, "", "Custom/Inner Mouth Ao"], ["skin_nostril_ao", 2.5, "", "Custom/Nostril Ao"], ["skin_lips_ao", 2.5, "", "Custom/Lips Gap Ao"], ["skin_nose_scatter_scale", 1, "", "Custom/Nose Scatter Scale"], ["skin_mouth_scatter_scale", 1, "", "Custom/Mouth Scatter Scale"], ["skin_upper_lid_scatter_scale", 1, "", "Custom/UpperLid Scatter Scale"], ["skin_inner_lid_scatter_scale", 1, "", "Custom/InnerLid Scatter Scale"], ["skin_ear_scatter_scale", 1, "", "Custom/Ear Scatter Scale"], ["skin_neck_scatter_scale", 1, "", "Custom/Neck Scatter Scale"], ["skin_cheek_scatter_scale", 1, "", "Custom/Cheek Scatter Scale"], ["skin_forehead_scatter_scale", 1, "", "Custom/Forehead Scatter Scale"], ["skin_upper_lip_scatter_scale", 1, "", "Custom/UpperLip Scatter Scale"], ["skin_chin_scatter_scale", 1, "", "Custom/Chin Scatter Scale"], ["skin_unmasked_scatter_scale", 1, "", "Custom/Unmasked Scatter Scale"], ["skin_ao_strength", 1, "", "Pbr/AO"], ["skin_normal_strength", 1, "", "Pbr/Normal"], ["skin_emission_strength", 0, "", "Pbr/Glow"], ["skin_subsurface_falloff", (1.0, 0.112, 0.072, 1.0), "func_color_bytes", "SSS/Falloff"], ["skin_subsurface_radius", 1.5, "", "SSS/Radius"], ["skin_original_roughness", 1, "", "Custom/Original Roughness Strength"], ["skin_cavity_strength", 0, "", "Custom/Cavity Strength"], ["skin_height_scale", 0.0, "", "Pbr/Displacement"], ["skin_bump_scale", 0.0, "DEF"], # non json properties (just defaults) ["skin_ao_power", 2.0, "DEF"], ["skin_diffuse_hue", 0.5, "", "/Diffuse Hue"], ["skin_diffuse_saturation", 1, "func_saturation_mod", "/Diffuse Saturation"], ["skin_diffuse_brightness", 1, "func_brightness_mod", "/Diffuse Brightness"], ["skin_diffuse_hsv_strength", 1, "DEF"], ["skin_subsurface_saturation", 1.0, "DEF"], ["skin_roughness_power", 1.0, "DEF"], ["skin_subsurface_scale", 1, "DEF"], ["skin_emissive_color", (1,1,1,1), "DEF"], ["skin_secondary_specular_ratio", 0.2, "DEF"], ["skin_secondary_roughness_scale", 0.5, "DEF"], ["skin_height_delta_scale", 1.0, "DEF"], ["skin_caruncle_blend", 0.0, "DEF"], ["skin_caruncle_color", (0.5, 0.375, 0.375, 1.0), "DEF"], ["skin_caruncle_roughness", 0.1, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["/Diffuse Color", [255.0, 255.0, 255.0], "func_export_byte3", "skin_diffuse_color"], ["/Diffuse Brightness", 1.0, "func_export_brightness_mod", "skin_diffuse_brightness"], ["/Diffuse Saturation", 1.0, "func_export_saturation_mod", "skin_diffuse_saturation"], ["/Diffuse HSV", 1.0, "", "skin_diffuse_hsv_strength"], ["SSS/Falloff", [255.0, 94.3499984741211, 76.5], "func_export_byte3", "skin_subsurface_falloff"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["WRINKLE_CONTROLS", "Wrinkle Maps", "MOD_INSTANCE"], ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "skin_diffuse_color", True], ["TRIPLET", "HSV", "skin_diffuse_hue", "skin_diffuse_saturation", "skin_diffuse_brightness", True, "Diffuse Map"], ["PROP", "*HSV Strength", "skin_diffuse_hsv_strength", True, "Diffuse Map"], ["SPACER"], ["PROP", "AO Strength", "skin_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "skin_ao_power", True, "AO Map"], ["PROP", "Mouth AO", "skin_mouth_ao", True, "MCMAO Map"], ["PROP", "Nostrils AO", "skin_nostril_ao", True, "MCMAO Map"], ["PROP", "Lips AO", "skin_lips_ao", True, "MCMAO Map"], ["SPACER"], ["PROP", "Color Blend", "skin_blend_overlay_strength", True, "Blend Overlay"], ["SPACER"], ["PROP", "Caruncle Blend", "skin_caruncle_blend", True], ["PROP", "Caruncle Color", "skin_caruncle_color", False], ["PROP", "Caruncle Roughness", "skin_caruncle_roughness", True], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Specular Scale", "skin_specular_scale", True], ["PROP", "*Roughness Power", "skin_roughness_power", True], ["PROP", "Original Roughness", "skin_original_roughness", True], ["PROP", "Cavity Strength", "skin_cavity_strength", True, "Cavity Map"], ["PROP", "*Dual Specular Ratio", "skin_secondary_specular_ratio", True], ["PROP", "*Sec. Roughness", "skin_secondary_roughness_scale", True], ["SPACER"], ["PROP", "Micro Roughness Mod", "skin_micro_roughness_mod", True], ["PROP", "Nose Rougness Mod", "skin_nose_roughness_mod", True, "NMUIL Map"], ["PROP", "Mouth Rougness Mod", "skin_mouth_roughness_mod", True, "NMUIL Map"], ["PROP", "Upper Lid Rougness Mod", "skin_upper_lid_roughness_mod", True, "NMUIL Map"], ["PROP", "Inner Lid Rougness Mod", "skin_inner_lid_roughness_mod", True, "NMUIL Map"], ["PROP", "Ear Rougness Mod", "skin_ear_roughness_mod", True, "EN Map"], ["PROP", "Neck Rougness Mod", "skin_neck_roughness_mod", True, "EN Map"], ["PROP", "Cheek Rougness Mod", "skin_cheek_roughness_mod", True, "CFULC Map"], ["PROP", "Forehead Rougness Mod", "skin_forehead_roughness_mod", True, "CFULC Map"], ["PROP", "Upper Lip Rougness Mod", "skin_upper_lip_roughness_mod", True, "CFULC Map"], ["PROP", "Chin Rougness Mod", "skin_chin_roughness_mod", True, "CFULC Map"], ["PROP", "Unmasked Roughness Mod", "skin_unmasked_roughness_mod", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "*Weight", "skin_subsurface_scale", True], ["PROP", "Falloff", "skin_subsurface_falloff", False], ["PROP", "*Saturation", "skin_subsurface_saturation", True], ["PROP", "Radius", "skin_subsurface_radius", True], ["SPACER"], ["PROP", "Nose Scatter Scale", "skin_nose_scatter_scale", True, "NMUIL Map"], ["PROP", "Mouth Scatter Scale", "skin_mouth_scatter_scale", True, "NMUIL Map"], ["PROP", "Upper Lid Scatter Scale", "skin_upper_lid_scatter_scale", True, "NMUIL Map"], ["PROP", "Inner Lid Scatter Scale", "skin_inner_lid_scatter_scale", True, "NMUIL Map"], ["PROP", "Ear Scatter Scale", "skin_ear_scatter_scale", True, "EN Map"], ["PROP", "Neck Scatter Scale", "skin_neck_scatter_scale", True, "EN Map"], ["PROP", "Cheek Scatter Scale", "skin_cheek_scatter_scale", True, "CFULC Map"], ["PROP", "Forehead Scatter Scale", "skin_forehead_scatter_scale", True, "CFULC Map"], ["PROP", "Upper Lip Scatter Scale", "skin_upper_lip_scatter_scale", True, "CFULC Map"], ["PROP", "Chin Scatter Scale", "skin_chin_scatter_scale", True, "CFULC Map"], ["PROP", "Unmasked Scatter Scale", "skin_unmasked_scatter_scale", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "skin_normal_strength", True, "Normal Map"], ["PROP", "Normal Blend", "skin_normal_blend_strength", True, "Normal Blend Map"], ["PROP", "Micro Normal Strength", "skin_micro_normal_strength", True, "Micro Normal Map"], ["PROP", "Micro Normal Tiling", "skin_micro_normal_tiling", True, "Micro Normal Map"], ["PROP", "Bump Scale", "skin_bump_scale", True, "Height Map"], ["PROP", "Displacement Scale", "skin_height_scale", True, "Height Map"], ["PROP", "Wrinkle Displacement", "skin_height_delta_scale", True, "Height Delta"], #["OP", "Build Displacement", "cc3.bake", "PLAY", "BUILD_DISPLACEMENT", "Normal Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "*Emissive Color", "skin_emissive_color", False], ["PROP", "Emission Strength", "skin_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 125.0, 125.0, 125.0 ], "Specular Color": [ 68.7, 68.7, 68.7 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLHead", "Image": {}, "Variable": {}, }, "Subsurface Scatter": { "Falloff": [ 255.0, 94.35, 76.5 ], "Radius": 1.5, "Distribution": 0.4, "IOR": 3.0, "DecayScale": 0.15, "Lerp": 0.85 } }, }, # Tongue Shader ######################################### { "name": "rl_tongue_shader", "rl_shader": "RLTongue", "label": "Tongue", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Hue", "", "tongue_hue"], ["Saturation", "", "tongue_saturation"], ["Brightness", "", "tongue_brightness"], ["HSV Strength", "", "tongue_hsv_strength"], ["Front AO", "", "tongue_front_ao"], ["Rear AO", "", "tongue_rear_ao"], ["AO Strength", "", "tongue_ao_strength"], ["AO Power", "", "tongue_ao_power"], ["Subsurface Scale", "func_sss_tongue", "tongue_subsurface_scatter"], ["Front Specular", "", "tongue_front_specular"], ["Rear Specular", "", "tongue_rear_specular"], ["Front Roughness", "", "tongue_front_roughness"], ["Rear Roughness", "", "tongue_rear_roughness"], ["Normal Strength", "func_normal_strength", "tongue_normal_strength"], ["Micro Normal Strength", "func_micro_normal_strength", "tongue_micro_normal_strength"], ["Emissive Color", "", "tongue_emissive_color"], ["Emission Strength", "func_emission_scale", "tongue_emission_strength"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_tongue_eevee", "tongue_subsurface_radius", "tongue_subsurface_falloff"] ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["Gradient AO Map", "", "GRADIENTAO"], ["AO Map", "", "AO"], ["Metallic Map", "", "METALLIC"], ["Roughness Map", "", "ROUGHNESS"], ["Normal Map", "", "NORMAL"], ["Micro Normal Map", "", "MICRONORMAL", "OFFSET", "", "tongue_micro_normal_tiling"], ["Emission Map", "", "EMISSION"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["tongue_micro_normal_tiling", 4, "", "Custom/MicroNormal Tiling"], ["tongue_micro_normal_strength", 0.5, "", "Custom/MicroNormal Strength"], ["tongue_brightness", 1, "", "Custom/_Brightness"], ["tongue_saturation", 0.95, "func_one_minus", "Custom/_Desaturation"], ["tongue_front_roughness", 1, "", "Custom/Front Roughness"], ["tongue_front_specular", 0.259, "", "Custom/Front Specular"], ["tongue_rear_roughness", 1, "", "Custom/Back Roughness"], ["tongue_rear_specular", 0, "", "Custom/Back Specular"], ["tongue_front_ao", 1, "", "Custom/Front AO"], ["tongue_rear_ao", 0, "", "Custom/Back AO"], ["tongue_subsurface_scatter", 1, "", "Custom/_Scatter"], ["tongue_ao_strength", 1, "", "Pbr/AO"], ["tongue_normal_strength", 1, "", "Pbr/Normal"], ["tongue_emission_strength", 0, "", "Pbr/Glow"], ["tongue_subsurface_falloff", (1, 1, 1, 1), "func_color_bytes", "SSS/Falloff"], ["tongue_subsurface_radius", 1, "", "SSS/Radius"], # non json properties (just defaults) ["tongue_ao_power", 1, "DEF"], ["tongue_hue", 0.5, "", "/Diffuse Hue"], ["tongue_hsv_strength", 1, "DEF"], ["tongue_emissive_color", (1,1,1,1), "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/_Desaturation", 0.05, "func_one_minus", "tongue_saturation"], ["SSS/Falloff", [255.0, 255.0, 255.0], "func_export_byte3", "tongue_subsurface_falloff"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "AO Strength", "tongue_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "tongue_ao_power", True, "AO Map"], ["PROP", "Front AO", "tongue_front_ao", True, "Gradient AO Map"], ["PROP", "Back AO", "tongue_rear_ao", True, "Gradient AO Map"], ["SPACER"], ["TRIPLET", "HSV", "tongue_hue", "tongue_saturation", "tongue_brightness", True, "Diffuse Map"], ["PROP", "*HSV Strength", "tongue_hsv_strength", True, "Diffuse Map"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Front Roughness", "tongue_front_roughness", True], ["PROP", "Front Specular", "tongue_front_specular", True], ["PROP", "Back Roughness", "tongue_rear_roughness", True], ["PROP", "Back Specular", "tongue_rear_specular", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "Weight", "tongue_subsurface_scatter", True], ["PROP", "Falloff", "tongue_subsurface_falloff", False], ["PROP", "Radius", "tongue_subsurface_radius", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "tongue_normal_strength", True, "Normal Map"], ["PROP", "Micro Normal Strength", "tongue_micro_normal_strength", True, "Micro Normal Map"], ["PROP", "Micro Normal Tiling", "tongue_micro_normal_tiling", True, "Micro Normal Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "*Emissive Color", "tongue_emissive_color", False], ["PROP", "Emission Strength", "tongue_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 125.0, 125.0, 125.0 ], "Specular Color": [ 229.5, 229.5, 229.5 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLTongue", "Image": {}, "Variable": {} }, "Subsurface Scatter": { "Falloff": [ 255.0, 255.0, 255.0 ], "Radius": 1.0, "Distribution": 0.93, "IOR": 1.55, "DecayScale": 0.15, "Lerp": 0.9 } }, }, # Teeth Shader ######################################## { "name": "rl_teeth_shader", "rl_shader": "RLTeethGums", "label": "Teeth & Gums", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Gums Hue", "", "teeth_gums_hue"], ["Gums Saturation", "", "teeth_gums_saturation"], ["Gums Brightness", "", "teeth_gums_brightness"], ["Gums HSV Strength", "", "teeth_gums_hsv_strength"], ["Teeth Hue", "", "teeth_teeth_hue"], ["Teeth Saturation", "", "teeth_teeth_saturation"], ["Teeth Brightness", "", "teeth_teeth_brightness"], ["Teeth HSV Strength", "", "teeth_teeth_hsv_strength"], ["Front AO", "", "teeth_front_ao"], ["Rear AO", "", "teeth_rear_ao"], ["AO Strength", "", "teeth_ao_strength"], ["AO Power", "", "teeth_ao_power"], ["Teeth Subsurface Scale", "func_sss_teeth", "teeth_teeth_subsurface_scatter"], ["Gums Subsurface Scale", "func_sss_teeth", "teeth_gums_subsurface_scatter"], ["Front Specular", "", "teeth_front_specular"], ["Rear Specular", "", "teeth_rear_specular"], ["Front Roughness", "", "teeth_front_roughness"], ["Rear Roughness", "", "teeth_rear_roughness"], ["Normal Strength", "func_normal_strength", "teeth_normal_strength"], ["Micro Normal Strength", "func_micro_normal_strength", "teeth_micro_normal_strength"], ["Emissive Color", "", "teeth_emissive_color"], ["Emission Strength", "func_emission_scale", "teeth_emission_strength"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_teeth_eevee", "teeth_subsurface_radius", "teeth_subsurface_falloff"] ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["Gradient AO Map", "", "GRADIENTAO"], ["Gums Mask", "", "GUMSMASK"], ["AO Map", "", "AO"], ["Metallic Map", "", "METALLIC"], ["Roughness Map", "", "ROUGHNESS"], ["Normal Map", "", "NORMAL"], ["Micro Normal Map", "", "MICRONORMAL", "OFFSET", "", "teeth_micro_normal_tiling"], ["Emission Map", "", "EMISSION"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["teeth_micro_normal_tiling", 10, "", "Custom/Teeth MicroNormal Tiling"], ["teeth_micro_normal_strength", 0.3, "", "Custom/Teeth MicroNormal Strength"], ["teeth_teeth_brightness", 0.7, "", "Custom/Teeth Brightness"], ["teeth_teeth_saturation", 0.9, "func_one_minus", "Custom/Teeth Desaturation"], ["teeth_gums_brightness", 0.9, "", "Custom/Gums Brightness"], ["teeth_gums_saturation", 1, "func_one_minus", "Custom/Gums Desaturation"], ["teeth_front_roughness", 0.4, "", "Custom/Front Roughness"], ["teeth_front_specular", 0.1, "", "Custom/Front Specular"], ["teeth_front_ao", 1, "", "Custom/Front AO"], ["teeth_rear_ao", 0, "", "Custom/Back AO"], ["teeth_rear_roughness", 1, "", "Custom/Back Roughness"], ["teeth_rear_specular", 0, "", "Custom/Back Specular"], ["teeth_gums_subsurface_scatter", 1, "", "Custom/Gums Scatter"], ["teeth_teeth_subsurface_scatter", 0.5, "", "Custom/Teeth Scatter"], ["teeth_ao_strength", 1, "", "Pbr/AO"], ["teeth_normal_strength", 1, "", "Pbr/Normal"], ["teeth_emission_strength", 0, "", "Pbr/Glow"], ["teeth_subsurface_falloff", (0.381, 0.198, 0.13, 1.0), "func_color_bytes", "SSS/Falloff"], ["teeth_subsurface_radius", 1, "", "SSS/Radius"], # non json properties (just defaults) ["teeth_ao_power", 1, "DEF"], ["teeth_gums_hue", 0.5, "", "/Diffuse Hue"], ["teeth_gums_hsv_strength", 1, "DEF"], ["teeth_teeth_hsv_strength", 1, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/Teeth Desaturation", 0.1, "func_one_minus", "teeth_teeth_saturation"], ["Custom/Gums Desaturation", 0.0, "func_one_minus", "teeth_gums_saturation"], ["SSS/Falloff", [116.0, 123.0, 101.0], "func_export_byte3", "teeth_subsurface_falloff"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "AO Strength", "teeth_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "teeth_ao_power", True, "AO Map"], ["PROP", "Front AO", "teeth_front_ao", True, "Gradient AO Map"], ["PROP", "Back AO", "teeth_rear_ao", True, "Gradient AO Map"], ["SPACER"], ["TRIPLET", "Teeth HSV", "teeth_teeth_hue", "teeth_teeth_saturation", "teeth_teeth_brightness", True, "Diffuse Map"], ["PROP", "*Teeth HSV Strength", "teeth_teeth_hsv_strength", True, "Diffuse Map"], ["SPACER"], ["TRIPLET", "Gums HSV", "teeth_gums_hue", "teeth_gums_saturation", "teeth_gums_brightness", True, "Diffuse Map"], ["PROP", "*Gums HSV Strength", "teeth_gums_hsv_strength", True, "Diffuse Map"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Front Roughness", "teeth_front_roughness", True], ["PROP", "Front Specular", "teeth_front_specular", True], ["PROP", "Back Roughness", "teeth_rear_roughness", True], ["PROP", "Back Specular", "teeth_rear_specular", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "Teeth Subsurface Weight", "teeth_teeth_subsurface_scatter", True], ["PROP", "Gums Subsurface Weight", "teeth_gums_subsurface_scatter", True], ["PROP", "Subsurface Falloff", "teeth_subsurface_falloff", False], ["PROP", "Subsurface Radius", "teeth_subsurface_radius", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "teeth_normal_strength", True, "Normal Map"], ["PROP", "Micro Normal Strength", "teeth_micro_normal_strength", True, "Micro Normal Map"], ["PROP", "Micro Normal Tiling", "teeth_micro_normal_tiling", True, "Micro Normal Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "*Emissive Color", "teeth_emissive_color", False], ["PROP", "Emission Strength", "teeth_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": False, "Diffuse Color": [ 225.0, 225.0, 225.0 ], "Ambient Color": [ 125.0, 125.0, 125.0 ], "Specular Color": [ 229.5, 229.5, 229.5 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLTeethGum", "Image": {}, "Variable": {}, }, "Subsurface Scatter": { "Falloff": [ 166.0, 123.0, 101.0 ], "Radius": 1.0, "Distribution": 0.93, "IOR": 1.55, "DecayScale": 1.0, "Lerp": 0.9 } }, }, # Eye Shader ################################## { "name": ["rl_cornea_shader", "rl_eye_shader"], "rl_shader": "RLEye", "label": "Eye", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Subsurface Scale", "func_sss_eyes", "eye_subsurface_scale"], ["Subsurface Falloff", "", "eye_subsurface_falloff"], ["Subsurface Radius", "func_sss_radius_eyes_cycles", "eye_subsurface_radius"], ["Cornea Specular", "", "eye_cornea_specular"], ["Iris Specular", "", "eye_iris_specular"], ["Cornea Roughness", "", "eye_cornea_roughness"], ["Iris Roughness", "", "eye_iris_roughness"], ["Sclera Roughness", "", "eye_sclera_roughness"], ["AO Strength", "", "eye_ao_strength"], ["Sclera Scale", "", "eye_sclera_scale"], ["Sclera Color", "", "eye_sclera_color"], ["Sclera Hue", "", "eye_sclera_hue"], ["Sclera Saturation", "", "eye_sclera_saturation"], ["Sclera Brightness", "func_sclera_brightness", "eye_sclera_brightness"], ["Sclera HSV Strength", "", "eye_sclera_hsv"], ["Iris Color", "", "eye_iris_color"], ["Iris Hue", "", "eye_iris_hue"], ["Iris Saturation", "", "eye_iris_saturation"], ["Iris Brightness", "func_iris_brightness", "eye_iris_brightness"], ["Iris HSV Strength", "", "eye_iris_hsv"], ["Iris Radius", "", "eye_iris_radius"], ["Iris Cloudy Color", "", "eye_iris_cloudy_color"], ["Iris Depth", "func_set_eye_depth", "eye_iris_depth"], ["Transmission Opacity", "", "eye_iris_transmission_opacity"], ["Limbus Width", "", "eye_limbus_width"], ["Limbus Dark Scale", "", "eye_limbus_dark_scale"], ["Limbus Color", "", "eye_limbus_color"], ["Limbus Contrast", "", "eye_limbus_contrast"], ["IOR", "", "eye_ior"], ["Shadow Radius", "", "eye_shadow_radius"], ["Shadow Hardness", "", "eye_shadow_hardness"], ["Corner Shadow Color", "", "eye_corner_shadow_color"], ["Color Blend Strength", "func_half", "eye_color_blend_strength"], ["Sclera Emissive Color", "", "eye_sclera_emissive_color"], ["Sclera Emission Strength", "func_emission_scale", "eye_sclera_emission_strength"], ["Iris Emissive Color", "","eye_iris_emissive_color"], ["Iris Emission Strength", "func_emission_scale", "eye_iris_emission_strength"], ["Sclera Normal Strength", "func_normal_strength", "eye_sclera_normal_strength"], ["Blood Vessel Height", "func_divide_1000", "eye_blood_vessel_height"], ["Iris Bump Height", "func_divide_1000", "eye_iris_bump_height"], ], "shape_keys": [ [ "Eye_Pupil_Narrow_L", "CORNEA_LEFT", "eye_pupil_narrow" ], [ "Eye_Pupil_Narrow_R", "CORNEA_RIGHT", "eye_pupil_narrow" ], [ "Eye_Pupil_Wide_L", "CORNEA_LEFT", "eye_pupil_wide" ], [ "Eye_Pupil_Wide_R", "CORNEA_RIGHT", "eye_pupil_wide" ], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_eyes_eevee", "eye_subsurface_radius", "eye_subsurface_falloff"] ], # modifier properties: # [prop_name, material_type, modifier_type, modifier_id, expression] "modifiers": [ [ "eye_iris_depth", "EYE_RIGHT", "DISPLACE", "Eye_Displace_R", "mod.strength = 1.0 * parameters.eye_iris_depth"], [ "eye_pupil_scale", "EYE_RIGHT", "UV_WARP", "Eye_UV_Warp_R", "mod.scale = (1.0 / parameters.eye_pupil_scale, 1.0 / parameters.eye_pupil_scale)" ], [ "eye_iris_depth", "EYE_LEFT", "DISPLACE", "Eye_Displace_L", "mod.strength = 1.0 * parameters.eye_iris_depth"], [ "eye_pupil_scale", "EYE_LEFT", "UV_WARP", "Eye_UV_Warp_L", "mod.scale = (1.0 / parameters.eye_pupil_scale, 1.0 / parameters.eye_pupil_scale)" ], ], # material setting properties: # [prop_name, material_type, expression] "settings": [ ["eye_refraction_depth", "CORNEA_LEFT", "mat.refraction_depth = parameters.eye_refraction_depth / 1000.0"], ["eye_refraction_depth", "CORNEA_RIGHT", "mat.refraction_depth = parameters.eye_refraction_depth / 1000.0"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Sclera Diffuse Map", "", "SCLERA", "CENTERED", "func_tiling", "eye_sclera_scale"], # EYE_PARALLAX tells it to use a parallax mapping node, unless in SSR mode in which it behaves as a CENTERED mapping node ["Cornea Diffuse Map", "", "DIFFUSE", "EYE_PARALLAX", "func_eye_tiling", "eye_iris_radius", "eye_sclera_scale"], ["Color Blend Map", "", "EYEBLEND"], ["AO Map", "", "AO"], ["Metallic Map", "", "METALLIC"], ["Sclera Normal Map", "", "SCLERANORMAL", "OFFSET", "", "eye_sclera_normal_tiling"], ["Sclera Emission Map", "", "EMISSION"], ["Iris Emission Map", "", "EMISSION"], ], "mapping": [ ["DIFFUSE", "Sclera Scale", "", "eye_sclera_scale"], ["DIFFUSE", "Iris Radius", "", "eye_iris_radius"], ["DIFFUSE", "Pupil Scale", "func_set_parallax_pupil_scale", "eye_pupil_scale"], ["DIFFUSE", "Depth", "func_set_parallax_iris_depth", "eye_iris_depth"], ["DIFFUSE", "IOR", "", "eye_ior"], ["SCLERA", "Invert", "func_eye_invert", "eye_is_left_eye"], ["SCLERANORMAL", "Invert", "func_eye_invert", "eye_is_left_eye"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["eye_color_blend_strength", 0.1, "", "Custom/BlendMap2 Strength"], ["eye_shadow_radius", 0.279, "", "Custom/Shadow Radius"], ["eye_shadow_hardness", 0.5, "", "Custom/Shadow Hardness"], ["eye_cornea_specular", 0.8, "", "Custom/Specular Scale"], ["eye_corner_shadow_color", (1.0, 0.497, 0.445, 1.0), "func_color_bytes", "Custom/Eye Corner Darkness Color"], ["eye_iris_depth", 0.5, "func_get_eye_depth", "Custom/Iris Depth Scale"], ["eye_cornea_roughness", 0, "", "Custom/_Iris Roughness"], ["eye_iris_brightness", 1, "", "Custom/Iris Color Brightness"], ["eye_pupil_scale", 1, "", "Custom/Pupil Scale"], ["eye_ior", 1.4, "", "Custom/_IoR"], ["eye_iris_radius", 0.24, "", "Custom/Iris UV Radius"], ["eye_iris_color", (1.0, 1.0, 1.0, 1.0), "func_color_bytes", "Custom/Iris Color"], ["eye_iris_inner_color", (1.0, 1.0, 1.0, 1.0), "func_color_bytes", "Custom/Iris Inner Color"], ["eye_iris_inner_scale", 0, "", "Custom/Iris Inner Scale"], ["eye_iris_cloudy_color", (0, 0, 0, 1.0), "func_color_bytes", "Custom/Iris Cloudy Color"], ["eye_limbus_width", 0.055, "", "Custom/Limbus UV Width Color"], ["eye_limbus_dark_scale", 9.0, "", "Custom/Limbus Dark Scale"], ["eye_sclera_brightness", 0.650, "", "Custom/ScleraBrightness"], ["eye_sclera_roughness", 0.2, "", "Custom/Sclera Roughness"], ["eye_sclera_normal_strength", 0.1, "func_one_minus", "Custom/Sclera Flatten Normal"], ["eye_sclera_normal_tiling", 2, "func_tiling", "Custom/Sclera Normal UV Scale"], ["eye_sclera_scale", 0.93, "", "Custom/Sclera UV Radius"], ["eye_ao_strength", 0.2, "", "Pbr/AO"], ["eye_normal_strength", 1, "", "Pbr/Normal"], ["eye_sclera_emission_strength", 0, "", "Pbr/Glow"], ["eye_iris_emission_strength", 0, "", "Pbr/Glow"], ["eye_subsurface_falloff", (1,1,1,1), "func_color_bytes", "SSS/Falloff"], ["eye_subsurface_radius", 5, "", "SSS/Radius"], ["eye_is_left_eye", False, "func_to_bool", "Custom/Is Left Eye"], # non json properties (just defaults) ["eye_subsurface_scale", 1.0, "DEF"], ["eye_refraction_depth", 2.5, "DEF"], ["eye_blood_vessel_height", 0.25, "DEF"], ["eye_iris_bump_height", 0.25, "DEF"], ["eye_iris_roughness", 1, "DEF"], ["eye_iris_transmission_opacity", 1.0, "DEF"], ["eye_sclera_hue", 0.5, "DEF"], ["eye_sclera_saturation", 1, "DEF"], ["eye_sclera_hsv", 1, "DEF"], ["eye_iris_hue", 0.5, "", "/Diffuse Hue"], ["eye_iris_saturation", 1, "func_saturation_mod", "/Diffuse Saturation"], ["eye_iris_hsv", 1, "DEF"], ["eye_limbus_contrast", 1.0, "DEF"], #["eye_limbus_dark_width", 1.0 - 0.34375, "DEF"], ["eye_limbus_color", (0.0, 0.0, 0.0, 1), "DEF"], ["eye_sclera_color", (1.0, 1.0, 1.0, 1), "DEF"], # shape ["eye_pupil_narrow", 0.0, "DEF"], ["eye_pupil_wide", 0.0, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["Custom/Eye Corner Darkness Color", [255.0, 188.0, 179.0], "func_export_byte3", "eye_corner_shadow_color"], ["Custom/Iris Color", [255.0, 255.0, 255.0], "func_export_byte3", "eye_iris_color"], ["Custom/Iris Color Brightness", 1.0, "func_export_brightness", "eye_iris_brightness"], ["/Diffuse Saturation", 1.0, "func_export_saturation_mod", "eye_iris_saturation"], ["Custom/Iris Inner Color", [255.0, 255.0, 255.0], "func_export_byte3", "eye_iris_inner_color"], ["Custom/Iris Cloudy Color", [0, 0, 0], "func_export_byte3", "eye_iris_cloudy_color"], ["Custom/Iris Depth Scale", 0.5, "func_export_eye_depth", "eye_iris_depth"], ["Custom/Sclera Flatten Normal", 0.9, "func_one_minus", "eye_sclera_normal_strength"], ["Custom/Sclera Normal UV Scale", 0.5, "func_tiling", "eye_sclera_normal_tiling"], ["Custom/Is Left Eye", False, "func_from_bool", "eye_is_left_eye"], ["SSS/Falloff", [255.0, 255.0, 255.0], "func_export_byte3", "eye_subsurface_falloff"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "AO Strength", "eye_ao_strength", True, "AO Map"], ["PROP", "Color Blend", "eye_color_blend_strength", True, "Color Blend Map"], ["SPACER"], ["PROP", "*Sclera Color", "eye_sclera_color", False], ["PROP", "Sclera Brightness", "eye_sclera_brightness", True], ["PAIR", "*Sclera HS", "eye_sclera_hue", "eye_sclera_saturation", True], ["PROP", "*Sclera HSV Strength", "eye_sclera_hsv", True], ["PROP", "Is Left Eye", "eye_is_left_eye", False], ["SPACER"], ["PROP", "Iris Color", "eye_iris_color", False], ["PROP", "Iris Brightness", "eye_iris_brightness", True], ["PAIR", "*Iris HS", "eye_iris_hue", "eye_iris_saturation", True], ["PROP", "*Iris HSV Strength", "eye_iris_hsv", True], ["SPACER"], ["PROP", "Iris Cloudy Color", "eye_iris_cloudy_color", False], ["HEADER", "Eye Shape", "SPHERE"], ["PROP", "Iris Radius", "eye_iris_radius", True], ["PROP", "Sclera Scale", "eye_sclera_scale", True], ["PROP", "Limbus Width", "eye_limbus_width", True], ["PROP", "Dark Scale", "eye_limbus_dark_scale", True], ["PROP", "*Limbus Color", "eye_limbus_color", False], ["PROP", "*Limbus Contrast", "eye_limbus_contrast", True], ["HEADER", "Corner Shadow", "SHADING_RENDERED"], ["PROP", "Shadow Radius", "eye_shadow_radius", True], ["PROP", "Shadow Hardness", "eye_shadow_hardness", True], ["PROP", "Shadow Color", "eye_corner_shadow_color", False], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Cornea Specular", "eye_cornea_specular", True], ["PROP", "Iris Specular", "eye_iris_specular", True], ["PROP", "Sclera Roughness", "eye_sclera_roughness", True], ["PROP", "*Iris Roughness", "eye_iris_roughness", True], ["PROP", "Cornea Roughness", "eye_cornea_roughness", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "*Weight", "eye_subsurface_scale", True], ["PROP", "Falloff", "eye_subsurface_falloff", False], ["PROP", "Radius", "eye_subsurface_radius", True], ["HEADER", "Depth & Refraction", "MOD_THICKNESS"], ["PROP", "Iris Depth", "eye_iris_depth", True], ["PROP", "*Transmission Opacity", "eye_iris_transmission_opacity", True, ">Transmission Alpha"], ["PROP", "Pupil Scale", "eye_pupil_scale", True], ["PROP", "IOR", "eye_ior", True], ["PROP", "*Refraction Depth", "eye_refraction_depth", True], ["HEADER", "Shapekeys", "SHADING_WIRE"], ["PROP", "Pupil Narrow", "eye_pupil_narrow", True], ["PROP", "Pupil Wide", "eye_pupil_wide", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Sclera Normal Strength", "eye_sclera_normal_strength", True], "Sclera Normal Map", ["PROP", "Sclera Normal Tiling", "eye_sclera_normal_tiling", True, "Sclera Normal Map"], ["PROP", "*Blood Vessel Height", "eye_blood_vessel_height", True, "Sclera Diffuse Map"], ["PROP", "*Iris Bump Height", "eye_iris_bump_height", True, "Cornea Diffuse Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "Sclera Emissive Color", "eye_sclera_emissive_color", False], ["PROP", "Sclera Emission Strength", "eye_sclera_emission_strength", True], ["PROP", "Iris Emissive Color", "eye_iris_emissive_color", False], ["PROP", "Iris Emission Strength", "eye_iris_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": False, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 50.0, 50.0, 50.0 ], "Specular Color": [ 0.0, 0.0, 0.0 ], "Opacity": 0.8, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLEye", "Image": {}, "Variable": {} }, "Subsurface Scatter": { "Falloff": [ 255.0, 255.0, 255.0 ], "Radius": 5.0, "Distribution": 0.93, "IOR": 1.55, "DecayScale": 1.0, "Lerp": 0.85 } }, }, # PBR Shader ############################################################ { "name": "rl_pbr_shader", "rl_shader": "Pbr", "label": "PBR Material", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Diffuse Color", "", "default_diffuse_color"], ["AO Strength", "", "default_ao_strength"], ["AO Power", "", "default_ao_power"], ["Blend Multiply Strength", "", "default_blend_multiply_strength"], ["Metallic Map", "", "default_metallic"], ["Specular Map", "", "default_specular"], ["Roughness Map", "", "default_roughness"], ["Specular Strength", "", "default_specular_strength"], ["Specular Scale", "", "default_specular_scale"], ["Roughness Power", "", "default_roughness_power"], ["Roughness Min", "", "default_roughness_min"], ["Roughness Max", "", "default_roughness_max"], ["Alpha Strength", "", "default_alpha_strength"], ["Opacity", "", "default_opacity"], ["Normal Strength", "func_normal_strength", "default_normal_strength"], ["Bump Strength", "func_divide_100", "default_bump_strength"], ["Emissive Color", "", "default_emissive_color"], ["Emission Strength", "func_emission_scale", "default_emission_strength"], ["Displacement Strength", "func_divide_200", "default_displacement_strength"], ["Displacement Base", "", "default_displacement_base"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Clearcoat", "", "default_reflection_strength"], ["Clearcoat Roughness", "", "default_reflection_blur"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["AO Map", "", "AO"], ["Blend Multiply", "", "BLEND1"], ["Metallic Map", "", "METALLIC"], ["Specular Map", "", "SPECULAR"], ["Roughness Map", "", "ROUGHNESS"], ["Alpha Map", "", "ALPHA"], ["Normal Map", "", "NORMAL"], ["Bump Map", "", "BUMP"], ["Emission Map", "", "EMISSION"], ["Displacement Map", "", "DISPLACE"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["default_ao_strength", 1, "", "Pbr/AO"], ["default_diffuse_color", (1,1,1,1), "func_color_bytes", "/Diffuse Color"], ["default_blend_multiply_strength", 0, "", "Pbr/Blend"], ["default_alpha_strength", 1, "", "Pbr/Opacity"], ["default_opacity", 1, "", "Base/Opacity"], ["default_normal_strength", 1, "", "Pbr/Normal"], ["default_emission_strength", 0, "", "Pbr/Glow"], ["default_displacement_strength", 0, "", "Pbr/Displacement"], ["default_displacement_base", 0.5, "", "Pbr/Displacement/Gray-scale Base Value"], ["default_bump_strength", 1, "func_divide_2", "Pbr/Bump"], ["default_specular_strength", 1, "", "Pbr/Specular"], ["default_metallic", 0, "", "Pbr/Metallic"], ["default_reflection_strength", 0, "", "Reflection/Reflection Strength"], ["default_reflection_blur", 0, "", "Reflection/Reflection Blur"], # non json properties (just defaults) ["default_ao_power", 1, "DEF"], ["default_specular_scale", 1.0, "DEF"], ["default_roughness_power", 1, "DEF"], ["default_roughness_min", 0, "DEF"], ["default_roughness_max", 1, "DEF"], ["default_emissive_color", (1,1,1,1), "DEF"], ["default_specular", [0.5, 1.0], "DEF"], ["default_roughness", [0.0, 0.25], "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["/Diffuse Color", [255.0, 255.0, 255.0], "func_export_byte3", "default_diffuse_color"], ["Pbr/Bump", 1.0, "func_mul_2", "default_bump_strength"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "default_diffuse_color", True], ["PROP", "AO Strength", "default_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "default_ao_power", True, "AO Map"], ["PROP", "Blend Multiply", "default_blend_multiply_strength", True, "Blend Multiply"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Metallic", "default_metallic", True, "!Metallic Map"], ["PROP", "*Specular", "default_specular", True, "!Specular Map"], ["PROP", "Specular Map", "default_specular_strength", True, "Specular Map"], ["PROP", "*Specular Scale", "default_specular_scale", True], ["PROP", "Roughness", "default_roughness", True, "!Roughness Map"], ["PROP", "*Roughness Power", "default_roughness_power", True], ["PAIR", "Roughness Range", "default_roughness_min", "default_roughness_max", True], ["PROP", "Coat Strength", "default_reflection_strength", True], ["PROP", "Coat Roughness", "default_reflection_blur", True], ["HEADER", "Opacity", "MOD_OPACITY"], ["PROP", "Alpha Strength", "default_alpha_strength", True], ["PROP", "Opacity", "default_opacity", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "default_normal_strength", True, "Normal Map"], ["PROP", "Bump Strength", "default_bump_strength", True, "Bump Map"], ["PROP", "Displacement", "default_displacement_strength", True, "Displacement Map"], ["PROP", "Displacement Base", "default_displacement_base", True, "Displacement Map"], ["OP", "Convert Bump", "cc3.bake", "PLAY", "BAKE_BUMP_NORMAL", "Bump Map", "!Normal Map"], ["OP", "Combine Normals", "cc3.bake", "PLAY", "BAKE_BUMP_NORMAL", "Bump Map", "Normal Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "Emissive Color", "default_emissive_color", False], ["PROP", "Emission Strength", "default_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 150.0, 150.0, 150.0 ], "Ambient Color": [ 150.0, 150.0, 150.0 ], "Specular Color": [ 229.5, 229.5, 229.5 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {} }, }, # SSS Shader ######################################### { "name": "rl_sss_shader", "rl_shader": "RLSSS", "label": "SSS Material", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Diffuse Color", "", "default_diffuse_color"], ["AO Strength", "", "default_ao_strength"], ["AO Power", "", "default_ao_power"], ["Blend Multiply Strength", "", "default_blend_multiply_strength"], ["Metallic Map", "", "default_metallic"], ["Specular Map", "", "default_specular"], ["Roughness Map", "", "default_roughness"], ["Specular Strength", "", "default_specular_strength"], ["Specular Scale", "", "default_specular_scale"], ["Roughness Power", "", "default_roughness_power"], ["Roughness Min", "", "default_roughness_min"], ["Roughness Max", "", "default_roughness_max"], ["Alpha Strength", "", "default_alpha_strength"], ["Opacity", "", "default_opacity"], ["Normal Strength", "func_normal_strength", "default_normal_strength"], ["Bump Strength", "func_divide_100", "default_bump_strength"], ["Emissive Color", "", "default_emissive_color"], ["Emission Strength", "func_emission_scale", "default_emission_strength"], ["Displacement Strength", "func_divide_200", "default_displacement_strength"], ["Displacement Base", "", "default_displacement_base"], ["Micro Normal Strength", "func_micro_normal_strength", "default_micro_normal_strength"], ["Subsurface Scale", "func_sss_default", "default_subsurface_scale"], ["Unmasked Scatter Scale", "", "default_unmasked_scatter_scale"], ["R Scatter Scale", "", "default_r_scatter_scale"], ["G Scatter Scale", "", "default_g_scatter_scale"], ["B Scatter Scale", "", "default_b_scatter_scale"], ["A Scatter Scale", "", "default_a_scatter_scale"], ["Micro Roughness Mod", "", "default_micro_roughness_mod"], ["Unmasked Roughness Mod", "", "default_unmasked_roughness_mod"], ["R Roughness Mod", "", "default_r_roughness_mod"], ["G Roughness Mod", "", "default_g_roughness_mod"], ["B Roughness Mod", "", "default_b_roughness_mod"], ["A Roughness Mod", "", "default_a_roughness_mod"], ["Hue", "", "default_hue"], ["Brightness", "", "default_brightness"], ["Saturation", "", "default_saturation"], ["HSV Strength", "", "default_hsv_strength"], ["Metallic Map", "", "default_metallic"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_default_eevee", "default_subsurface_radius", "default_subsurface_falloff"], ["Clearcoat", "", "default_reflection_strength"], ["Clearcoat Roughness", "", "default_reflection_blur"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["AO Map", "", "AO"], ["Blend Multiply", "", "BLEND1"], ["Metallic Map", "", "METALLIC"], ["Specular Map", "", "SPECULAR"], ["Roughness Map", "", "ROUGHNESS"], ["Alpha Map", "", "ALPHA"], ["Normal Map", "", "NORMAL"], ["Bump Map", "", "BUMP"], ["Emission Map", "", "EMISSION"], ["Displacement Map", "", "DISPLACE"], ["Subsurface Map", "", "SSS"], ["Transmission Map", "", "TRANSMISSION"], ["Micro Normal Map", "", "MICRONORMAL", "OFFSET", "", "default_micro_normal_tiling"], ["Micro Normal Mask", "", "MICRONMASK"], ["RGBA Map", "RGBA Alpha", "RGBAMASK"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["default_diffuse_color", (1,1,1,1), "func_color_bytes", "/Diffuse Color"], ["default_specular_scale", 1.0, "", "Custom/_Specular"], #["default_brightness", 1, "", "Custom/_BaseColorMap Brightness"], #["default_saturation", 1, "", "Custom/_BaseColorMap Saturation"], ["default_ao_strength", 1, "", "Pbr/AO"], ["default_blend_multiply_strength", 0, "", "Pbr/Blend"], ["default_alpha_strength", 1, "", "Pbr/Opacity"], ["default_opacity", 1, "", "Base/Opacity"], ["default_normal_strength", 1, "", "Pbr/Normal"], ["default_emission_strength", 0, "", "Pbr/Glow"], ["default_displacement_strength", 1, "", "Pbr/Displacement"], ["default_micro_normal_tiling", 25, "", "Custom/MicroNormal Tiling"], ["default_micro_normal_strength", 0.8, "", "Custom/MicroNormal Strength"], ["default_micro_roughness_mod", 0.05, "", "Custom/Micro Roughness Scale"], ["default_r_roughness_mod", 0.0, "", "Custom/R Channel Roughness Scale"], ["default_g_roughness_mod", 0.0, "", "Custom/G Channel Roughness Scale"], ["default_b_roughness_mod", 0.0, "", "Custom/B Channel Roughness Scale"], ["default_a_roughness_mod", 0.0, "", "Custom/A Channel Roughness Scale"], ["default_unmasked_roughness_mod", 0.0, "", "Custom/Unmasked Roughness Scale"], ["default_r_scatter_scale", 1, "", "Custom/R Channel Scatter Scale"], ["default_g_scatter_scale", 1, "", "Custom/G Channel Scatter Scale"], ["default_b_scatter_scale", 1, "", "Custom/B Channel Scatter Scale"], ["default_a_scatter_scale", 1, "", "Custom/A Channel Scatter Scale"], ["default_unmasked_scatter_scale", 1, "", "Custom/Unmasked Scatter Scale"], ["default_subsurface_falloff", (1.0, 1.0, 1.0, 1.0), "func_color_bytes", "SSS/Falloff"], ["default_suburface_radius", 1.5, "", "SSS/Radius"], ["default_specular_strength", 1, "", "Pbr/Specular"], ["default_metallic", 0, "", "Pbr/Metallic"], ["default_displacement_strength", 0, "", "Pbr/Displacement"], ["default_displacement_base", 0.5, "", "Pbr/Displacement/Gray-scale Base Value"], ["default_bump_strength", 1, "func_divide_2", "Pbr/Bump"], ["default_reflection_strength", 0, "", "Reflection/Reflection Strength"], ["default_reflection_blur", 0, "", "Reflection/Reflection Blur"], # non json properties (just defaults) ["default_ao_power", 1, "DEF"], ["default_specular", [0.5, 1.0], "DEF"], ["default_roughness", [0.0, 0.25], "DEF"], ["default_hue", 0.5, "", "/Diffuse Hue"], ["default_saturation", 1.0, "func_saturation_mod", "/Diffuse Saturation"], ["default_brightness", 1.0, "func_brightness_mod", "/Diffuse Brightness"], ["default_hsv_strength", 1, "DEF"], ["default_specular_mask", 1.0, "DEF"], ["default_roughness_power", 1.0, "DEF"], ["default_roughness_min", 0, "DEF"], ["default_roughness_max", 1, "DEF"], ["default_subsurface_scale", 1, "DEF"], ["default_emissive_color", (1,1,1,1), "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["/Diffuse Color", [255.0, 255.0, 255.0], "func_export_byte3", "default_saturation"], ["/Diffuse Brightness", 1.0, "func_export_brightness_mod", "default_brightness"], ["/Diffuse Saturation", 1.0, "func_export_saturation_mod", "default_saturation"], ["SSS/Falloff", [255.0, 255.0, 255.0], "func_export_byte3", "default_subsurface_falloff"], ["Pbr/Bump", 1.0, "func_mul_2", "default_bump_strength"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "default_diffuse_color", True], ["TRIPLET", "HSV", "default_hue", "default_saturation", "default_brightness", True], ["PROP", "*HSV Strength", "default_hsv_strength", True], ["PROP", "AO Strength", "default_ao_strength", True, "AO Map"], ["PROP", "AO Darken", "default_ao_power", True, "AO Map"], ["PROP", "Blend Multiply", "default_blend_multiply_strength", True, "Blend Multiply"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Metallic", "default_metallic", True, "!Metallic Map"], ["PROP", "*Specular", "default_specular", True, "!Specular Map"], ["PROP", "Specular Map", "default_specular_strength", True, "Specular Map"], ["PROP", "Specular Scale", "default_specular_scale", True], ["PROP", "Roughness", "default_roughness", True, "!Roughness Map"], ["PROP", "*Roughness Power", "default_roughness_power", True], ["PAIR", "Roughness Range", "default_roughness_min", "default_roughness_max", True], ["PROP", "Coat Strength", "default_reflection_strength", True], ["PROP", "Coat Roughness", "default_reflection_blur", True], ["SPACER"], ["PROP", "Micro Roughness Mod", "default_micro_roughness_mod", True], ["PROP", "R Roughness Mod", "default_r_roughness_mod", True, "RGBA Map"], ["PROP", "G Roughness Mod", "default_g_roughness_mod", True, "RGBA Map"], ["PROP", "B Roughness Mod", "default_b_roughness_mod", True, "RGBA Map"], ["PROP", "A Roughness Mod", "default_a_roughness_mod", True, "RGBA Map"], ["PROP", "Unmasked Roughness Mod", "default_unmasked_roughness_mod", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "Weight", "default_subsurface_scale", True], ["PROP", "Falloff", "default_subsurface_falloff", False], ["PROP", "Radius", "default_subsurface_radius", True], ["SPACER"], ["PROP", "R Scatter Scale", "default_r_scatter_scale", True, "RGBA Map"], ["PROP", "G Scatter Scale", "default_g_scatter_scale", True, "RGBA Map"], ["PROP", "B Scatter Scale", "default_b_scatter_scale", True, "RGBA Map"], ["PROP", "A Scatter Scale", "default_a_scatter_scale", True, "RGBA Map"], ["PROP", "Unmasked Scatter Scale", "default_unmasked_scatter_scale", True], ["HEADER", "Opacity", "MOD_OPACITY"], ["PROP", "Alpha Strength", "default_alpha_strength", True], ["PROP", "Opacity", "default_opacity", True], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "default_normal_strength", True, "Normal Map"], ["PROP", "Bump Strength", "default_bump_strength", True, "Bump Map"], ["PROP", "Displacement", "default_displacement_strength", True, "Displacement Map"], ["PROP", "Displacement Base", "default_displacement_base", True, "Displacement Map"], ["OP", "Convert Bump", "cc3.bake", "PLAY", "BAKE_BUMP_NORMAL", "Bump Map", "!Normal Map"], ["OP", "Combine Normals", "cc3.bake", "PLAY", "BAKE_BUMP_NORMAL", "Bump Map", "Normal Map"], ["SPACER"], ["PROP", "Micro Normal Strength", "default_micro_normal_strength", True, "Micro Normal Map"], ["PROP", "Micro Normal Tiling", "default_micro_normal_tiling", True, "Micro Normal Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "Emissive Color", "default_emissive_color", False], ["PROP", "Emission Strength", "default_emission_strength", True], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 255.0, 255.0, 255.0 ], "Specular Color": [ 229.0, 229.0, 229.0 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLSSS", "Image": {}, "Variable": {}, }, "Subsurface Scatter": { "Falloff": [ 255.0, 255.0, 255.0 ], "Radius": 13.0, "Distribution": 0.85, "IOR": 1.55, "DecayScale": 0.05, "Lerp": 0.5 } }, }, # Hair Shader ##################################### { "name": "rl_hair_shader", "rl_shader": "RLHair", "cycles": "rl_hair_cycles_shader", "label": "Hair", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ["Diffuse Color", "", "hair_diffuse_color"], ["Diffuse Hue", "", "hair_diffuse_hue"], ["Diffuse Saturation", "", "hair_diffuse_saturation"], ["Diffuse Brightness", "", "hair_diffuse_brightness"], ["Diffuse HSV", "", "hair_diffuse_hsv_strength"], ["Enable Color", "", "hair_enable_color"], ["Global Strength", "", "hair_global_strength"], ["Root Color Strength", "", "hair_root_color_strength"], ["End Color Strength", "", "hair_end_color_strength"], ["Invert Root Map", "", "hair_invert_root_map"], ["Base Color Strength", "", "hair_base_color_strength"], ["Root Color", "", "hair_root_color"], ["End Color", "", "hair_end_color"], ["Highlight A Color", "", "hair_highlight_a_color"], ["Highlight A Start", "", "hair_highlight_a_start"], ["Highlight A Mid", "", "hair_highlight_a_mid"], ["Highlight A End", "", "hair_highlight_a_end"], ["Highlight A Strength", "", "hair_highlight_a_strength"], ["Highlight A Overlap Invert", "", "hair_highlight_a_overlap_invert"], ["Highlight A Overlap End", "", "hair_highlight_a_overlap_end"], ["Highlight B Color", "", "hair_highlight_b_color"], ["Highlight B Start", "", "hair_highlight_b_start"], ["Highlight B Mid", "", "hair_highlight_b_mid"], ["Highlight B End", "", "hair_highlight_b_end"], ["Highlight B Strength", "", "hair_highlight_b_strength"], ["Highlight B Overlap Invert", "", "hair_highlight_b_overlap_invert"], ["Highlight B Overlap End", "", "hair_highlight_b_overlap_end"], ["Vertex Color Strength", "", "hair_vertex_color_strength"], ["Vertex Color", "", "hair_vertex_color"], ["Anisotropic", "", "hair_anisotropic"], ["Anisotropic Shift Min", "", "hair_anisotropic_shift_min"], ["Anisotropic Shift Max", "", "hair_anisotropic_shift_max"], ["Flow Invert Green", "", "hair_tangent_flip_green"], ["Anisotropic Roughness", "", "hair_anisotropic_roughness"], ["Anisotropic Strength", "", "hair_anisotropic_strength"], ["Specular Blend", "", "hair_specular_blend"], ["Anisotropic Color", "", "hair_anisotropic_color"], ["Subsurface Falloff", "func_sss_falloff_saturated", "hair_subsurface_falloff", "hair_subsurface_saturation"], ["Subsurface Scale", "func_sss_hair", "hair_subsurface_scale"], ["Subsurface Radius", "func_sss_radius_hair_cycles", "hair_subsurface_radius"], ["Diffuse Strength", "", "hair_diffuse_strength"], ["AO Strength", "", "hair_ao_strength"], ["AO Power", "", "hair_ao_power"], ["AO Occlude All", "", "hair_ao_occlude_all"], ["Blend Multiply Strength", "", "hair_blend_multiply_strength"], ["Specular Scale", "", "hair_specular_scale"], ["Roughness Strength", "", "hair_roughness_strength"], ["Alpha Strength", "", "hair_alpha_strength"], ["Alpha Power", "", "hair_alpha_power"], ["Opacity", "", "hair_opacity"], ["Normal Strength", "func_normal_strength", "hair_normal_strength"], ["Bump Strength", "func_divide_100", "hair_bump_strength"], ["Emissive Color", "", "hair_emissive_color"], ["Emission Strength", "func_emission_scale", "hair_emission_strength"], ["Displacement Strength", "func_divide_100", "hair_displacement_strength"], ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ["Subsurface Radius", "func_sss_radius_hair_eevee", "hair_subsurface_radius", "hair_subsurface_falloff", "hair_subsurface_saturation"], ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["AO Map", "", "AO"], ["Blend Multiply", "", "BLEND1"], ["Metallic Map", "", "METALLIC"], ["Specular Map", "", "SPECULAR"], ["Specular Mask", "", "SPECMASK"], ["Roughness Map", "", "ROUGHNESS"], ["Alpha Map", "", "ALPHA"], ["Normal Map", "", "NORMAL"], ["Bump Map", "", "BUMP"], ["Emission Map", "", "EMISSION"], ["Displacement Map", "", "DISPLACE"], # use displacement for bump map in hair ["Root Map", "", "HAIRROOT"], ["ID Map", "", "HAIRID"], ["Flow Map", "", "HAIRFLOW"], ["Vertex Color", "", "HAIRVERTEXCOLOR", "SAMPLE", "hair_vertex_color"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ["hair_diffuse_color", (1,1,1,1), "func_color_bytes", "/Diffuse Color"], ["hair_tangent_vector", (1, 0, 0), "func_color_vector", "Custom/TangentVectorColor"], ["hair_tangent_flip_green", 1, "", "Custom/TangentMapFlipGreen"], ["hair_anisotropic_shift_min", 0, "", "Custom/BlackColor Reflection Offset Z"], ["hair_anisotropic_shift_max", 0, "", "Custom/WhiteColor Reflection Offset Z"], ["hair_diffuse_strength", 1, "", "Custom/Diffuse Strength"], ["hair_roughness_strength", 0.724, "func_sqrt", "Custom/Hair Roughness Map Strength"], ["hair_specular_scale", 0.3, "", "Custom/Hair Specular Map Strength"], ["hair_anisotropic_strength", 0.8, "func_half", "Custom/Specular Strength"], ["hair_anisotropic_strength2", 1.0, "", "Custom/Secondary Specular Strength"], ["hair_vertex_color", (0,0,0,1), "func_color_bytes", "Custom/VertexGrayToColor"], ["hair_vertex_color_strength", 0, "", "Custom/VertexColorStrength"], ["hair_enable_color", 0, "", "Custom/ActiveChangeHairColor"], ["hair_base_color_strength", 1, "", "Custom/BaseColorMapStrength"], ["hair_root_color", (0.144129, 0.072272, 0.046665, 1.0), "func_color_bytes", "Custom/RootColor"], ["hair_end_color", (0.332452, 0.184475, 0.122139, 1.0), "func_color_bytes", "Custom/TipColor"], ["hair_global_strength", 0, "", "Custom/UseRootTipColor"], ["hair_root_color_strength", 1, "", "Custom/RootColorStrength"], ["hair_end_color_strength", 1, "", "Custom/TipColorStrength"], ["hair_invert_root_map", 0, "", "Custom/InvertRootTip"], ["hair_highlight_a_color", (0.502886, 0.323143, 0.205079, 1.0), "func_color_bytes", "Custom/_1st Dye Color"], ["hair_highlight_a_strength", 0.543, "", "Custom/_1st Dye Strength"], ["hair_highlight_a_start", 0.1, "func_index_b0", "Custom/_1st Dye Distribution from Grayscale"], ["hair_highlight_a_mid", 0.2, "func_index_b1", "Custom/_1st Dye Distribution from Grayscale"], ["hair_highlight_a_end", 0.3, "func_index_b2", "Custom/_1st Dye Distribution from Grayscale"], ["hair_highlight_a_overlap_end", 0.99, "", "Custom/Mask 1st Dye by RootMap"], ["hair_highlight_a_overlap_invert", 0.99, "", "Custom/Invert 1st Dye RootMap Mask"], ["hair_highlight_b_color", (1, 1, 1, 1.0), "func_color_bytes", "Custom/_2nd Dye Color"], ["hair_highlight_b_strength", 0, "", "Custom/_2nd Dye Strength"], ["hair_highlight_b_start", 0.5, "func_index_b0", "Custom/_2nd Dye Distribution from Grayscale"], ["hair_highlight_b_mid", 0.6, "func_index_b1", "Custom/_2nd Dye Distribution from Grayscale"], ["hair_highlight_b_end", 0.7, "func_index_b2", "Custom/_2nd Dye Distribution from Grayscale"], ["hair_highlight_b_overlap_end", 0, "", "Custom/Mask 2nd Dye by RootMap"], ["hair_highlight_b_overlap_invert", 0, "", "Custom/Invert 2nd Dye RootMap Mask"], ["hair_ao_strength", 1, "", "Pbr/AO"], ["hair_ao_occlude_all", 0, "", "Custom/AO Map Occlude All Lighting"], ["hair_blend_multiply_strength", 0, "", "Pbr/Blend"], ["hair_alpha_strength", 1, "", "Pbr/Opacity"], ["hair_opacity", 1, "", "Base/Opacity"], ["hair_normal_strength", 1.0, "", "Pbr/Normal"], ["hair_bump_strength", 1.0, "", "Pbr/Normal"], ["hair_emission_strength", 0, "", "Pbr/Glow"], ["hair_displacement_strength", 1, "", "Pbr/Displacement"], # non json properties (just defaults) ["hair_ao_power", 1, "DEF"], ["hair_diffuse_hue", 0.5, "", "/Diffuse Hue"], ["hair_diffuse_saturation", 1, "func_saturation_mod", "/Diffuse Saturation"], ["hair_diffuse_brightness", 1, "func_brightness_mod", "/Diffuse Brightness"], ["hair_subsurface_saturation", 1.0, "DEF"], ["hair_diffuse_hsv_strength", 1, "DEF"], ["hair_subsurface_radius", 1.5, "DEF"], ["hair_alpha_power", 1.0, "DEF"], ["hair_anisotropic_roughness", 0.0375, "DEF"], ["hair_specular_blend", 0.9, "DEF"], ["hair_anisotropic_color", (1.000000, 0.798989, 0.689939, 1.000000), "DEF"], ["hair_subsurface_falloff", (1.000000, 0.815931, 0.739236, 1.000000), "DEF"], ["hair_subsurface_falloff_mix", 0.5, "DEF"], ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ["/Diffuse Color", [255.0, 255.0, 255.0], "func_export_byte3", "hair_diffuse_color"], ["/Diffuse Saturation", 1.0, "func_export_saturation_mod", "hair_diffuse_saturation"], ["/Diffuse Brightness", 1.0, "func_export_brightness_mod", "hair_diffuse_brightness"], ["/Diffuse HSV", 1.0, "", "hair_diffuse_hsv_strength"], ["Custom/TangentVectorColor", [255, 0, 0], "func_export_byte3", "hair_tangent_vector"], ["Custom/Hair Roughness Map Strength", 0.524, "func_pow_2", "hair_roughness_strength"], ["Custom/VertexGrayToColor", [0, 0, 0], "func_export_byte3", "hair_vertex_color"], ["Custom/RootColor", [37, 18, 11], "func_export_byte3", "hair_root_color"], ["Custom/TipColor", [86, 48, 31], "func_export_byte3", "hair_end_color"], ["Custom/_1st Dye Color", [182, 125, 79], "func_export_byte3", "hair_highlight_a_color"], ["Custom/_2nd Dye Color", [255, 255, 255], "func_export_byte3", "hair_highlight_b_color"], ["Custom/_1st Dye Distribution from Grayscale", [25.5, 51, 76.5], "func_export_combine_xyz", "hair_highlight_a_start", "hair_highlight_a_mid", "hair_highlight_a_end"], ["Custom/_2nd Dye Distribution from Grayscale", [25.5, 51, 76.5], "func_export_combine_xyz", "hair_highlight_b_start", "hair_highlight_b_mid", "hair_highlight_b_end"], ], "ui": [ # ["HEADER", label, icon] # ["PROP", labe, prop_name, (slider=)True|False] ["HEADER", "Base Color", "COLOR"], ["PROP", "Color", "hair_diffuse_color", True], ["TRIPLET", "HSV", "hair_diffuse_hue", "hair_diffuse_saturation", "hair_diffuse_brightness", True], ["PROP", "*HSV Strength", "hair_diffuse_hsv_strength", True], ["SPACER"], ["PROP", "AO Strength", "hair_ao_strength", True, "AO Map"], ["PROP", "AO Occlude All", "hair_ao_occlude_all", True, "AO Map"], ["PROP", "AO Darken", "hair_ao_power", True, "AO Map"], ["PROP", "Blend Multiply", "hair_blend_multiply_strength", True, "Blend Multiply"], ["SPACER"], ["PROP", "Enable Color", "hair_enable_color", True, "Root Map"], ["SPACER"], ["PROP", "Diffuse Strength", "hair_diffuse_strength", True, "Diffuse Map"], ["PROP", "Vertex Color Strength", "hair_vertex_color_strength", True], ["PROP", "Vertex Color", "hair_vertex_color", False], ["PROP", "Base Color Strength", "hair_base_color_strength", True, "Root Map"], ["HEADER", "Hair Strands", "OUTLINER_OB_HAIR"], ["PROP", "Global Strength", "hair_global_strength", True, "Root Map"], ["PROP", "Root Strength", "hair_root_color_strength", True, "Root Map"], ["PROP", "End Strength", "hair_end_color_strength", True, "Root Map"], ["PROP", "Invert Root Map", "hair_invert_root_map", True, "Root Map"], ["PROP", "Root Color", "hair_root_color", False, "Root Map"], ["PROP", "End Color", "hair_end_color", False, "Root Map"], ["HEADER", "Highlights", "HAIR"], ["PROP", "Highlight A", "hair_highlight_a_color", True, "ID Map"], ["TRIPLET", "Range", "hair_highlight_a_start", "hair_highlight_a_mid", "hair_highlight_a_end", True, "ID Map"], ["PROP", "Strength", "hair_highlight_a_strength", True, "ID Map"], ["PROP", "Overlap Invert", "hair_highlight_a_overlap_invert", True, "ID Map"], ["PROP", "Overlap End", "hair_highlight_a_overlap_end", True, "ID Map"], ["SPACER"], ["PROP", "Highlight B", "hair_highlight_b_color", True, "ID Map"], ["TRIPLET", "Range", "hair_highlight_b_start", "hair_highlight_b_mid", "hair_highlight_b_end", True, "ID Map"], ["PROP", "Strength", "hair_highlight_b_strength", True, "ID Map"], ["PROP", "Overlap Invert", "hair_highlight_b_overlap_invert", True, "ID Map"], ["PROP", "Overlap End", "hair_highlight_b_overlap_end", True, "ID Map"], ["HEADER", "Surface", "SURFACE_DATA"], ["PROP", "Specular Scale", "hair_specular_scale", True], ["PROP", "Roughness Strength", "hair_roughness_strength", True], ["SPACER"], ["PROP", "Anisotropic", "hair_anisotropic", True, "#CYCLES"], ["PROP", "*Anisotropic Roughness", "hair_anisotropic_roughness", True, "#EEVEE"], ["PROP", "Anisotropic Strength", "hair_anisotropic_strength", True, "#EEVEE"], ["PROP", "*Specular Blend", "hair_specular_blend", True, "#EEVEE"], ["PROP", "*Anisotropic Color", "hair_anisotropic_color", False, "#EEVEE"], ["PAIR", "Anisotropic Shift", "hair_anisotropic_shift_min", "hair_anisotropic_shift_max", True], ["PROP", "Tangent Flip Green", "hair_tangent_flip_green", True], ["HEADER", "Sub-surface", "SURFACE_NSURFACE"], ["PROP", "*Weight", "hair_subsurface_scale", True], ["PROP", "*Falloff", "hair_subsurface_falloff", False], ["PROP", "*Saturation", "hair_subsurface_saturation", True], ["PROP", "*Radius", "hair_subsurface_radius", True], ["HEADER", "Opacity", "MOD_OPACITY"], ["PROP", "Strength", "hair_alpha_strength", True, "Alpha Map"], ["PROP", "Compression", "hair_alpha_power", True, "Alpha Map"], ["PROP", "Opacity", "hair_opacity", True, "Alpha Map"], ["HEADER", "Normals", "NORMALS_FACE"], ["PROP", "Normal Strength", "hair_normal_strength", True, "Normal Map"], ["PROP", "*Bump Strength", "hair_bump_strength", True, "Bump Map"], ["PROP", "Displacement", "hair_displacement_strength", True, "Displacement Map"], ["OP", "Generate Normal Map", "cc3.bake", "PLAY", "BAKE_FLOW_NORMAL", "Flow Map"], #, "!Normal Map"], #["PROP", "Tangent Vector", "hair_tangent_vector", False, "Flow Map"], ["HEADER", "Emission", "LIGHT"], ["PROP", "Emissive Color", "hair_emissive_color", False], ["PROP", "Emission Strength", "hair_emission_strength", True], ], "basic": [ ["Roughness Strength", "Roughness Max"], ], "json_template": { "Material Type": "Pbr", "MultiUV Index": 0, "Node Type": "Hair", "Two Side": True, "Diffuse Color": [ 255.0, 255.0, 255.0 ], "Ambient Color": [ 149.99, 149.99, 149.99 ], "Specular Color": [ 229.5, 229.5, 229.5 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {}, "Custom Shader": { "Shader Name": "RLHair", "Image": {}, "Variable": {}, }, }, }, # Wrinkle Shader ##################################### { "name": "rl_wrinkle_shader", "rl_shader": "Wrinkle", "label": "Wrinkle Maps", # property inputs: # [input_socket, function, property_arg1, property_arg2...] "inputs": [ ], # inputs to the bsdf that must be controlled directly (i.e. subsurface radius in Eevee) "bsdf": [ ], # texture inputs: # [input_socket_color, input_socket_alpha, texture_type, tiling_prop, tiling_mode] "textures": [ ["Diffuse Map", "", "DIFFUSE"], ["Roughness Map", "", "ROUGHNESS"], ["Normal Map", "", "NORMAL"], ["Height Map", "", "DISPLACE"], ["Diffuse Blend Map 1", "", "WRINKLEDIFFUSE1"], ["Diffuse Blend Map 2", "", "WRINKLEDIFFUSE2"], ["Diffuse Blend Map 3", "", "WRINKLEDIFFUSE3"], ["Roughness Blend Map 1", "", "WRINKLEROUGHNESS1"], ["Roughness Blend Map 2", "", "WRINKLEROUGHNESS2"], ["Roughness Blend Map 3", "", "WRINKLEROUGHNESS3"], ["Normal Blend Map 1", "", "WRINKLENORMAL1"], ["Normal Blend Map 2", "", "WRINKLENORMAL2"], ["Normal Blend Map 3", "", "WRINKLENORMAL3"], ["Flow Map 1", "", "WRINKLEFLOW1"], ["Flow Map 2", "", "WRINKLEFLOW2"], ["Flow Map 3", "", "WRINKLEFLOW3"], ["Height Map 1", "", "WRINKLEDISPLACEMENT1"], ["Height Map 2", "", "WRINKLEDISPLACEMENT2"], ["Height Map 3", "", "WRINKLEDISPLACEMENT3"], ["Mask 1A RGB", "Mask 1A A", "WRINKLEMASK1A"], ["Mask 1B RGB", "Mask 1B A", "WRINKLEMASK1B"], ["Mask 2 RGB", "Mask 2 A", "WRINKLEMASK2"], ["Mask 3 RGB", "Mask 3 A", "WRINKLEMASK3"], ["Mask 123 RGB", "Mask 123 A", "WRINKLEMASK123"], ], # shader variables: # [prop_name, default_value, function, json_id_arg1, json_id_arg2...] "vars": [ ], # export variables to update json file on export that need special conversion # [json_id, default_value, function, prop_arg1, prop_arg2, prop_arg3...] "export": [ ], "ui": [ ], "basic": [ ], "json_template": { }, }, ] # material_type, rl_shader, blender_shader SHADER_LOOKUP = [ ["DEFAULT", "Pbr", "rl_pbr_shader"], ["SSS", "SSS", "rl_sss_shader"], ["SKIN_HEAD", "RLHead", "rl_head_shader"], ["SKIN_BODY", "RLSkin", "rl_skin_shader"], ["SKIN_ARM", "RLSkin", "rl_skin_shader"], ["SKIN_LEG", "RLSkin", "rl_skin_shader"], ["TEETH_UPPER", "RLTeethGum", "rl_teeth_shader"], ["TEETH_LOWER", "RLTeethGum", "rl_teeth_shader"], ["TONGUE", "RLTongue", "rl_tongue_shader"], ["HAIR", "RLHair", "rl_hair_shader"], ["SCALP", "Pbr", "rl_pbr_shader"], ["EYELASH", "Pbr", "rl_pbr_shader"], ["NAILS", "RLSkin", "rl_skin_shader"], ["CORNEA_RIGHT", "RLEye", "rl_cornea_shader"], ["CORNEA_LEFT", "RLEye", "rl_cornea_shader"], ["EYE_RIGHT", "RLEye", "rl_eye_shader"], ["EYE_LEFT", "RLEye", "rl_eye_shader"], ["OCCLUSION_RIGHT", "RLEyeOcclusion", "rl_eye_occlusion_shader"], ["OCCLUSION_LEFT", "RLEyeOcclusion", "rl_eye_occlusion_shader"], ["OCCLUSION_PLUS_RIGHT", "RLEyeOcclusion_Plus", "rl_eye_occlusion_plus_shader"], ["OCCLUSION_PLUS_LEFT", "RLEyeOcclusion_Plus", "rl_eye_occlusion_plus_shader"], ["TEARLINE_RIGHT", "RLTearline", "rl_tearline_shader"], ["TEARLINE_LEFT", "RLTearline", "rl_tearline_shader"], ["TEARLINE_PLUS_RIGHT", "RLTearline_Plus", "rl_tearline_plus_shader"], ["TEARLINE_PLUS_LEFT", "RLTearline_Plus", "rl_tearline_plus_shader"], ["DEFAULT", "Tra", "rl_pbr_shader"], ] def get_texture_type(json_id): for tex_info in TEXTURE_TYPES: if tex_info[1] == json_id: return tex_info[0] return "NONE" def get_texture_json_id(tex_type): for tex_info in TEXTURE_TYPES: if tex_info[0] == tex_type: return tex_info[1] return None def get_shader_texture_socket(shader_def, tex_type): if "textures" in shader_def.keys(): for tex_def in shader_def["textures"]: if tex_def[2] == tex_type: return tex_def[0] return None def get_shader_name(mat_cache): if mat_cache: material_type = mat_cache.get_material_type() for shader in SHADER_LOOKUP: if shader[0] == material_type: return shader[2] return "rl_pbr_shader" def get_rl_shader_name(mat_cache): if mat_cache: material_type = mat_cache.get_material_type() for shader in SHADER_LOOKUP: if shader[0] == material_type: return shader[1] return "Pbr" def get_prop_matrix(prop_name): matrix = [] for shader in SHADER_MATRIX: for input in shader["inputs"]: if input[1] == prop_name: matrix.append([shader, input]) return matrix def get_shader_def(shader_name): for shader_def in SHADER_MATRIX: if type(shader_def["name"]) is list: for name in shader_def["name"]: if name in shader_name: return shader_def else: if shader_def["name"] in shader_name: return shader_def return None def get_rl_shader_def(rl_shader_name): if rl_shader_name == "Tra": rl_shader_name = "Pbr" for shader_def in SHADER_MATRIX: if shader_def["rl_shader"] == rl_shader_name: return shader_def return None def get_mat_shader_def(mat_cache): shader_name = get_shader_name(mat_cache) return get_shader_def(shader_name) def get_mat_shader_template(mat_cache): shader_name = get_shader_name(mat_cache) shader_def = get_shader_def(shader_name) if "json_template" in shader_def.keys(): return shader_def["json_template"] return None BASIC_PROPS = [ ["IN", "Strength", "eye_occlusion_mask", "eye_occlusion", 0.5], ["IN", "Hardness", "eye_occlusion_mask", "eye_occlusion_power", 0.5], ["IN", "Value", "eye_basic_hsv", "eye_brightness", 0.9], ["OUT", "Value", "", "eye_specular", 0.8], ["OUT", "Value", "", "eye_roughness", 0.05], ["OUT", "Value", "", "eye_normal", 0.1], ["OUT", "Value", "", "skin_ao", 1], ["OUT", "Value", "", "hair_ao", 1], ["OUT", "Value", "", "default_ao", 1], ["OUT", "Value", "", "default_specular", 0.5], ["OUT", "Value", "", "skin_specular", 0.4], ["OUT", "Value", "", "hair_specular", 0.5], ["OUT", "Value", "", "scalp_specular", 0.0], ["OUT", "Value", "", "teeth_specular", 0.25], ["OUT", "Value", "", "tongue_specular", 0.259], ["IN", "To Min", "", "skin_roughness", 0.15], ["IN", 1, "", "teeth_roughness", 0.4], ["IN", 1, "", "tongue_roughness", 1.0], ["OUT", "Value", "", "hair_bump", 1, "parameters.hair_bump / 1000"], ["OUT", "Value", "", "default_bump", 5, "parameters.default_bump / 1000"], ["IN", "Alpha", "eye_tearline_shader", "tearline_alpha", 0.05], ["IN", "Roughness", "eye_tearline_shader", "tearline_roughness", 0.15], ] JSON_MESH_DATA = { "Materials": {} } JSON_PBR_TEX_INFO = { "Texture Path": "", "Strength": 100.0, "Offset": [ 0.0, 0.0 ], "Tiling": [ 1.0, 1.0 ] } JSON_CUSTOM_TEX_INFO = { "Texture Path": "" } JSON_PBR_MATERIAL = { "Material Type": "Pbr", "MultiUV Index": 0, "Two Side": True, "Diffuse Color": [ 150.0, 150.0, 150.0 ], "Ambient Color": [ 150.0, 150.0, 150.0 ], "Specular Color": [ 229.5, 229.5, 229.5 ], "Opacity": 1.0, "Self Illumination": 0.0, "Textures": {} } JSON_PHYSICS_MESH = { "Materials": {} } JSON_PHYSICS_MATERIAL = { "Activate Physics": True, "Use Global Gravity": True, "Weight Map Path": "", "Mass": 1.0, "Friction": 0.2, "Damping": 0.2, "Drag": 0.1, "Solver Frequency": 120.0, "Tether Limit": 1.1, "Elasticity": 1.0, "Stretch": 0.0, "Bending": 0.0, "Inertia": [ 8.0, 8.0, 8.0 ], "Soft Vs Rigid Collision": True, "Soft Vs Rigid Collision_Margin": 2.0, "Self Collision": False, "Self Collision Margin": 0.0, "Stiffness Frequency": 10.0 }