private ShaderNode GetShaderPart(ShaderBody part) { var texcoord207 = new TextureCoordinateNode("texcoord"); var diffuse_texture208 = new ImageTextureNode("diffuse_texture"); diffuse_texture208.Projection = TextureNode.TextureProjection.Flat; diffuse_texture208.ColorSpace = TextureNode.TextureColorSpace.None; diffuse_texture208.Extension = part.DiffuseTexture.Repeat ? TextureNode.TextureExtension.Repeat : TextureNode.TextureExtension.Clip; diffuse_texture208.Interpolation = InterpolationType.Smart; diffuse_texture208.UseAlpha = true; diffuse_texture208.IsLinear = false; var diffuse_texture_alpha_amount192 = new MathMultiply("diffuse_texture_alpha_amount"); diffuse_texture_alpha_amount192.ins.Value2.Value = part.DiffuseTexture.Amount; diffuse_texture_alpha_amount192.Operation = MathNode.Operations.Multiply; diffuse_texture_alpha_amount192.UseClamp = false; var invert_transparency189 = new MathSubtract("invert_transparency"); invert_transparency189.ins.Value1.Value = 1f; invert_transparency189.ins.Value2.Value = part.Transparency; invert_transparency189.Operation = MathNode.Operations.Subtract; invert_transparency189.UseClamp = false; var diff_tex_alpha_multiplied_with_inv_transparency193 = new MathMultiply("diff_tex_alpha_multiplied_with_inv_transparency"); diff_tex_alpha_multiplied_with_inv_transparency193.Operation = MathNode.Operations.Multiply; diff_tex_alpha_multiplied_with_inv_transparency193.UseClamp = false; var bump_texture209 = new ImageTextureNode("bump_texture"); bump_texture209.Projection = TextureNode.TextureProjection.Flat; bump_texture209.ColorSpace = TextureNode.TextureColorSpace.None; bump_texture209.Extension = TextureNode.TextureExtension.Repeat; bump_texture209.Interpolation = InterpolationType.Smart; bump_texture209.UseAlpha = true; bump_texture209.IsLinear = false; var bump_texture_to_bw210 = new RgbToBwNode("bump_texture_to_bw"); var bump_amount194 = new MathMultiply("bump_amount"); bump_amount194.ins.Value1.Value = 4.66f; bump_amount194.ins.Value2.Value = part.BumpTexture.Amount; bump_amount194.Operation = MathNode.Operations.Multiply; bump_amount194.UseClamp = false; var diffuse_base_color_through_alpha244 = new MixNode("diffuse_base_color_through_alpha"); diffuse_base_color_through_alpha244.ins.Color1.Value = part.BaseColor; diffuse_base_color_through_alpha244.BlendType = ccl.ShaderNodes.MixNode.BlendTypes.Mix; diffuse_base_color_through_alpha244.UseClamp = false; var bump211 = new BumpNode("bump"); bump211.ins.Normal.Value = new ccl.float4(0f, 0f, 0f, 1f); bump211.ins.Distance.Value = 0.1f; var light_path232 = new LightPathNode("light_path"); var final_diffuse212 = new DiffuseBsdfNode("final_diffuse"); final_diffuse212.ins.Roughness.Value = 0f; var shadeless_bsdf213 = new EmissionNode("shadeless_bsdf"); shadeless_bsdf213.ins.Strength.Value = 1f; var shadeless_on_cameraray246 = new MathMultiply("shadeless_on_cameraray"); shadeless_on_cameraray246.ins.Value2.Value = part.ShadelessAsFloat; shadeless_on_cameraray246.Operation = MathNode.Operations.Multiply; shadeless_on_cameraray246.UseClamp = false; var attenuated_reflection_color214 = new MixNode("attenuated_reflection_color"); attenuated_reflection_color214.ins.Color1.Value = new ccl.float4(0f, 0f, 0f, 1f); attenuated_reflection_color214.ins.Color2.Value = part.ReflectionColorGamma; attenuated_reflection_color214.ins.Fac.Value = part.Reflectivity; attenuated_reflection_color214.BlendType = ccl.ShaderNodes.MixNode.BlendTypes.Mix; attenuated_reflection_color214.UseClamp = false; var fresnel_based_on_constant215 = new FresnelNode("fresnel_based_on_constant"); fresnel_based_on_constant215.ins.IOR.Value = part.FresnelIOR; var simple_reflection216 = new CombineRgbNode("simple_reflection"); simple_reflection216.ins.R.Value = part.Reflectivity; simple_reflection216.ins.G.Value = 0f; simple_reflection216.ins.B.Value = 0f; var fresnel_reflection217 = new CombineRgbNode("fresnel_reflection"); fresnel_reflection217.ins.G.Value = 0f; fresnel_reflection217.ins.B.Value = 0f; var fresnel_reflection_if_reflection_used195 = new MathMultiply("fresnel_reflection_if_reflection_used"); fresnel_reflection_if_reflection_used195.ins.Value1.Value = part.Reflectivity; fresnel_reflection_if_reflection_used195.ins.Value2.Value = part.FresnelReflectionsAsFloat; fresnel_reflection_if_reflection_used195.Operation = MathNode.Operations.Multiply; fresnel_reflection_if_reflection_used195.UseClamp = false; var select_reflection_or_fresnel_reflection218 = new MixNode("select_reflection_or_fresnel_reflection"); select_reflection_or_fresnel_reflection218.BlendType = ccl.ShaderNodes.MixNode.BlendTypes.Mix; select_reflection_or_fresnel_reflection218.UseClamp = false; var shadeless219 = new MixClosureNode("shadeless"); var glossy220 = new GlossyBsdfNode("glossy"); glossy220.ins.Roughness.Value = part.ReflectionRoughnessPow2; var reflection_factor221 = new SeparateRgbNode("reflection_factor"); var attennuated_refraction_color222 = new MixNode("attennuated_refraction_color"); attennuated_refraction_color222.ins.Color1.Value = new ccl.float4(0f, 0f, 0f, 1f); attennuated_refraction_color222.ins.Color2.Value = part.TransparencyColorGamma; attennuated_refraction_color222.ins.Fac.Value = part.Transparency; attennuated_refraction_color222.BlendType = ccl.ShaderNodes.MixNode.BlendTypes.Mix; attennuated_refraction_color222.UseClamp = false; var refraction223 = new RefractionBsdfNode("refraction"); refraction223.ins.Roughness.Value = part.RefractionRoughnessPow2; refraction223.ins.IOR.Value = part.IOR; refraction223.Distribution = RefractionBsdfNode.RefractionDistribution.GGX; var diffuse_plus_glossy224 = new MixClosureNode("diffuse_plus_glossy"); var blend_in_transparency225 = new MixClosureNode("blend_in_transparency"); blend_in_transparency225.ins.Fac.Value = part.Transparency; var separate_envmap_texco226 = new SeparateXyzNode("separate_envmap_texco"); var flip_sign_envmap_texco_y196 = new MathMultiply("flip_sign_envmap_texco_y"); flip_sign_envmap_texco_y196.ins.Value2.Value = -1f; flip_sign_envmap_texco_y196.Operation = MathNode.Operations.Multiply; flip_sign_envmap_texco_y196.UseClamp = false; var recombine_envmap_texco227 = new CombineXyzNode("recombine_envmap_texco"); var environment_texture228 = new ImageTextureNode("environment_texture"); environment_texture228.Projection = TextureNode.TextureProjection.Flat; environment_texture228.ColorSpace = TextureNode.TextureColorSpace.None; environment_texture228.Extension = TextureNode.TextureExtension.Repeat; environment_texture228.Interpolation = InterpolationType.Smart; environment_texture228.UseAlpha = true; environment_texture228.IsLinear = false; var attenuated_environment_color229 = new MixNode("attenuated_environment_color"); attenuated_environment_color229.ins.Color1.Value = new ccl.float4(0f, 0f, 0f, 1f); attenuated_environment_color229.ins.Fac.Value = part.EnvironmentTexture.Amount; attenuated_environment_color229.BlendType = ccl.ShaderNodes.MixNode.BlendTypes.Mix; attenuated_environment_color229.UseClamp = false; var diffuse_glossy_and_refraction230 = new MixClosureNode("diffuse_glossy_and_refraction"); diffuse_glossy_and_refraction230.ins.Fac.Value = part.Transparency; var environment_map_diffuse231 = new DiffuseBsdfNode("environment_map_diffuse"); environment_map_diffuse231.ins.Roughness.Value = 0f; environment_map_diffuse231.ins.Normal.Value = new ccl.float4(0f, 0f, 0f, 1f); var invert_roughness197 = new MathSubtract("invert_roughness"); invert_roughness197.ins.Value1.Value = 1f; invert_roughness197.ins.Value2.Value = part.RefractionRoughnessPow2; invert_roughness197.Operation = MathNode.Operations.Subtract; invert_roughness197.UseClamp = false; var multiply_transparency198 = new MathMultiply("multiply_transparency"); multiply_transparency198.ins.Value2.Value = part.Transparency; multiply_transparency198.Operation = MathNode.Operations.Multiply; multiply_transparency198.UseClamp = false; var multiply_with_shadowray199 = new MathMultiply("multiply_with_shadowray"); multiply_with_shadowray199.Operation = MathNode.Operations.Multiply; multiply_with_shadowray199.UseClamp = false; var custom_environment_blend233 = new MixClosureNode("custom_environment_blend"); custom_environment_blend233.ins.Fac.Value = part.EnvironmentTexture.Amount; var coloured_shadow_trans_color234 = new TransparentBsdfNode("coloured_shadow_trans_color"); var weight_for_shadowray_coloured_shadow200 = new MathMultiply("weight_for_shadowray_coloured_shadow"); weight_for_shadowray_coloured_shadow200.ins.Value2.Value = 1f; weight_for_shadowray_coloured_shadow200.Operation = MathNode.Operations.Multiply; weight_for_shadowray_coloured_shadow200.UseClamp = false; var diffuse_from_emission_color247 = new DiffuseBsdfNode("diffuse_from_emission_color"); diffuse_from_emission_color247.ins.Color.Value = part.EmissionColorGamma; diffuse_from_emission_color247.ins.Roughness.Value = 0f; diffuse_from_emission_color247.ins.Normal.Value = new ccl.float4(0f, 0f, 0f, 1f); var shadeless_emission249 = new EmissionNode("shadeless_emission"); shadeless_emission249.ins.Color.Value = part.EmissionColorGamma; shadeless_emission249.ins.Strength.Value = 1f; var coloured_shadow_mix_custom237 = new MixClosureNode("coloured_shadow_mix_custom"); var diffuse_or_shadeless_emission250 = new MixClosureNode("diffuse_or_shadeless_emission"); var invert_alpha191 = new MathSubtract("invert_alpha"); invert_alpha191.ins.Value1.Value = 1f; invert_alpha191.Operation = MathNode.Operations.Subtract; invert_alpha191.UseClamp = false; var transparency_texture235 = new ImageTextureNode("transparency_texture"); transparency_texture235.Projection = TextureNode.TextureProjection.Flat; transparency_texture235.ColorSpace = TextureNode.TextureColorSpace.None; transparency_texture235.Extension = TextureNode.TextureExtension.Repeat; transparency_texture235.Interpolation = InterpolationType.Smart; transparency_texture235.UseAlpha = true; transparency_texture235.IsLinear = false; var transpluminance236 = new RgbToLuminanceNode("transpluminance"); var invert_luminence201 = new MathSubtract("invert_luminence"); invert_luminence201.ins.Value1.Value = 1f; invert_luminence201.Operation = MathNode.Operations.Subtract; invert_luminence201.UseClamp = false; var transparency_texture_amount202 = new MathMultiply("transparency_texture_amount"); transparency_texture_amount202.ins.Value2.Value = part.TransparencyTexture.Amount; transparency_texture_amount202.Operation = MathNode.Operations.Multiply; transparency_texture_amount202.UseClamp = false; var toggle_diffuse_texture_alpha_usage203 = new MathMultiply("toggle_diffuse_texture_alpha_usage"); toggle_diffuse_texture_alpha_usage203.ins.Value2.Value = part.DiffuseTexture.UseAlphaAsFloat; toggle_diffuse_texture_alpha_usage203.Operation = MathNode.Operations.Multiply; toggle_diffuse_texture_alpha_usage203.UseClamp = false; var toggle_transparency_texture204 = new MathMultiply("toggle_transparency_texture"); toggle_transparency_texture204.ins.Value1.Value = part.HasTransparencyTextureAsFloat; toggle_transparency_texture204.Operation = MathNode.Operations.Multiply; toggle_transparency_texture204.UseClamp = false; var add_emission_to_final248 = new AddClosureNode("add_emission_to_final"); var transparent238 = new TransparentBsdfNode("transparent"); transparent238.ins.Color.Value = new ccl.float4(1f, 1f, 1f, 1f); var add_diffuse_texture_alpha205 = new MathAdd("add_diffuse_texture_alpha"); add_diffuse_texture_alpha205.Operation = MathNode.Operations.Add; add_diffuse_texture_alpha205.UseClamp = false; var custom_alpha_cutter239 = new MixClosureNode("custom_alpha_cutter"); var principledbsdf240 = new PrincipledBsdfNode("principledbsdf"); principledbsdf240.ins.BaseColor.Value = part.BaseColor; principledbsdf240.ins.Subsurface.Value = 0f; principledbsdf240.ins.SubsurfaceRadius.Value = new ccl.float4(0f, 0f, 0f, 1f); principledbsdf240.ins.SubsurfaceColor.Value = new ccl.float4(0.5019608f, 0.5019608f, 0.5019608f, 1f); principledbsdf240.ins.Metallic.Value = 0f; principledbsdf240.ins.Specular.Value = 0f; principledbsdf240.ins.SpecularTint.Value = 0f; principledbsdf240.ins.Roughness.Value = part.ReflectionRoughnessPow2; principledbsdf240.ins.Anisotropic.Value = 0f; principledbsdf240.ins.AnisotropicRotation.Value = 0f; principledbsdf240.ins.Sheen.Value = 0f; principledbsdf240.ins.SheenTint.Value = 0f; principledbsdf240.ins.Clearcoat.Value = 0f; principledbsdf240.ins.ClearcoatGloss.Value = 0f; principledbsdf240.ins.IOR.Value = part.IOR; principledbsdf240.ins.Transmission.Value = part.Transparency; principledbsdf240.ins.TransmissionRoughness.Value = part.RefractionRoughnessPow2; principledbsdf240.ins.Tangent.Value = new ccl.float4(0f, 0f, 0f, 1f); var coloured_shadow_mix_glass_principled241 = new MixClosureNode("coloured_shadow_mix_glass_principled"); m_shader.AddNode(texcoord207); m_shader.AddNode(diffuse_texture208); m_shader.AddNode(diffuse_texture_alpha_amount192); m_shader.AddNode(invert_transparency189); m_shader.AddNode(diff_tex_alpha_multiplied_with_inv_transparency193); m_shader.AddNode(bump_texture209); m_shader.AddNode(bump_texture_to_bw210); m_shader.AddNode(bump_amount194); m_shader.AddNode(diffuse_base_color_through_alpha244); m_shader.AddNode(bump211); m_shader.AddNode(light_path232); m_shader.AddNode(final_diffuse212); m_shader.AddNode(shadeless_bsdf213); m_shader.AddNode(shadeless_on_cameraray246); m_shader.AddNode(attenuated_reflection_color214); m_shader.AddNode(fresnel_based_on_constant215); m_shader.AddNode(simple_reflection216); m_shader.AddNode(fresnel_reflection217); m_shader.AddNode(fresnel_reflection_if_reflection_used195); m_shader.AddNode(select_reflection_or_fresnel_reflection218); m_shader.AddNode(shadeless219); m_shader.AddNode(glossy220); m_shader.AddNode(reflection_factor221); m_shader.AddNode(attennuated_refraction_color222); m_shader.AddNode(refraction223); m_shader.AddNode(diffuse_plus_glossy224); m_shader.AddNode(blend_in_transparency225); m_shader.AddNode(separate_envmap_texco226); m_shader.AddNode(flip_sign_envmap_texco_y196); m_shader.AddNode(recombine_envmap_texco227); m_shader.AddNode(environment_texture228); m_shader.AddNode(attenuated_environment_color229); m_shader.AddNode(diffuse_glossy_and_refraction230); m_shader.AddNode(environment_map_diffuse231); m_shader.AddNode(invert_roughness197); m_shader.AddNode(multiply_transparency198); m_shader.AddNode(multiply_with_shadowray199); m_shader.AddNode(custom_environment_blend233); m_shader.AddNode(coloured_shadow_trans_color234); m_shader.AddNode(weight_for_shadowray_coloured_shadow200); m_shader.AddNode(diffuse_from_emission_color247); m_shader.AddNode(shadeless_emission249); m_shader.AddNode(coloured_shadow_mix_custom237); m_shader.AddNode(diffuse_or_shadeless_emission250); m_shader.AddNode(invert_alpha191); m_shader.AddNode(transparency_texture235); m_shader.AddNode(transpluminance236); m_shader.AddNode(invert_luminence201); m_shader.AddNode(transparency_texture_amount202); m_shader.AddNode(toggle_diffuse_texture_alpha_usage203); m_shader.AddNode(toggle_transparency_texture204); m_shader.AddNode(add_emission_to_final248); m_shader.AddNode(transparent238); m_shader.AddNode(add_diffuse_texture_alpha205); m_shader.AddNode(custom_alpha_cutter239); m_shader.AddNode(principledbsdf240); m_shader.AddNode(coloured_shadow_mix_glass_principled241); texcoord207.outs.UV.Connect(diffuse_texture208.ins.Vector); diffuse_texture208.outs.Alpha.Connect(diffuse_texture_alpha_amount192.ins.Value1); diffuse_texture_alpha_amount192.outs.Value.Connect(diff_tex_alpha_multiplied_with_inv_transparency193.ins.Value1); invert_transparency189.outs.Value.Connect(diff_tex_alpha_multiplied_with_inv_transparency193.ins.Value2); texcoord207.outs.UV.Connect(bump_texture209.ins.Vector); bump_texture209.outs.Color.Connect(bump_texture_to_bw210.ins.Color); diffuse_texture208.outs.Color.Connect(diffuse_base_color_through_alpha244.ins.Color2); diff_tex_alpha_multiplied_with_inv_transparency193.outs.Value.Connect(diffuse_base_color_through_alpha244.ins.Fac); bump_texture_to_bw210.outs.Val.Connect(bump211.ins.Height); bump_amount194.outs.Value.Connect(bump211.ins.Strength); diffuse_base_color_through_alpha244.outs.Color.Connect(final_diffuse212.ins.Color); bump211.outs.Normal.Connect(final_diffuse212.ins.Normal); diffuse_base_color_through_alpha244.outs.Color.Connect(shadeless_bsdf213.ins.Color); light_path232.outs.IsCameraRay.Connect(shadeless_on_cameraray246.ins.Value1); bump211.outs.Normal.Connect(fresnel_based_on_constant215.ins.Normal); fresnel_based_on_constant215.outs.Fac.Connect(fresnel_reflection217.ins.R); simple_reflection216.outs.Image.Connect(select_reflection_or_fresnel_reflection218.ins.Color1); fresnel_reflection217.outs.Image.Connect(select_reflection_or_fresnel_reflection218.ins.Color2); fresnel_reflection_if_reflection_used195.outs.Value.Connect(select_reflection_or_fresnel_reflection218.ins.Fac); final_diffuse212.outs.BSDF.Connect(shadeless219.ins.Closure1); shadeless_bsdf213.outs.Emission.Connect(shadeless219.ins.Closure2); shadeless_on_cameraray246.outs.Value.Connect(shadeless219.ins.Fac); attenuated_reflection_color214.outs.Color.Connect(glossy220.ins.Color); bump211.outs.Normal.Connect(glossy220.ins.Normal); select_reflection_or_fresnel_reflection218.outs.Color.Connect(reflection_factor221.ins.Image); attennuated_refraction_color222.outs.Color.Connect(refraction223.ins.Color); bump211.outs.Normal.Connect(refraction223.ins.Normal); shadeless219.outs.Closure.Connect(diffuse_plus_glossy224.ins.Closure1); glossy220.outs.BSDF.Connect(diffuse_plus_glossy224.ins.Closure2); reflection_factor221.outs.R.Connect(diffuse_plus_glossy224.ins.Fac); shadeless219.outs.Closure.Connect(blend_in_transparency225.ins.Closure1); refraction223.outs.BSDF.Connect(blend_in_transparency225.ins.Closure2); texcoord207.outs.EnvEmap.Connect(separate_envmap_texco226.ins.Vector); separate_envmap_texco226.outs.Y.Connect(flip_sign_envmap_texco_y196.ins.Value1); separate_envmap_texco226.outs.X.Connect(recombine_envmap_texco227.ins.X); flip_sign_envmap_texco_y196.outs.Value.Connect(recombine_envmap_texco227.ins.Y); separate_envmap_texco226.outs.Z.Connect(recombine_envmap_texco227.ins.Z); recombine_envmap_texco227.outs.Vector.Connect(environment_texture228.ins.Vector); environment_texture228.outs.Color.Connect(attenuated_environment_color229.ins.Color2); diffuse_plus_glossy224.outs.Closure.Connect(diffuse_glossy_and_refraction230.ins.Closure1); blend_in_transparency225.outs.Closure.Connect(diffuse_glossy_and_refraction230.ins.Closure2); attenuated_environment_color229.outs.Color.Connect(environment_map_diffuse231.ins.Color); invert_roughness197.outs.Value.Connect(multiply_transparency198.ins.Value1); multiply_transparency198.outs.Value.Connect(multiply_with_shadowray199.ins.Value1); light_path232.outs.IsShadowRay.Connect(multiply_with_shadowray199.ins.Value2); diffuse_glossy_and_refraction230.outs.Closure.Connect(custom_environment_blend233.ins.Closure1); environment_map_diffuse231.outs.BSDF.Connect(custom_environment_blend233.ins.Closure2); diffuse_base_color_through_alpha244.outs.Color.Connect(coloured_shadow_trans_color234.ins.Color); multiply_with_shadowray199.outs.Value.Connect(weight_for_shadowray_coloured_shadow200.ins.Value1); custom_environment_blend233.outs.Closure.Connect(coloured_shadow_mix_custom237.ins.Closure1); coloured_shadow_trans_color234.outs.BSDF.Connect(coloured_shadow_mix_custom237.ins.Closure2); weight_for_shadowray_coloured_shadow200.outs.Value.Connect(coloured_shadow_mix_custom237.ins.Fac); diffuse_from_emission_color247.outs.BSDF.Connect(diffuse_or_shadeless_emission250.ins.Closure1); shadeless_emission249.outs.Emission.Connect(diffuse_or_shadeless_emission250.ins.Closure2); shadeless_on_cameraray246.outs.Value.Connect(diffuse_or_shadeless_emission250.ins.Fac); diffuse_texture208.outs.Alpha.Connect(invert_alpha191.ins.Value2); texcoord207.outs.UV.Connect(transparency_texture235.ins.Vector); transparency_texture235.outs.Color.Connect(transpluminance236.ins.Color); transpluminance236.outs.Val.Connect(invert_luminence201.ins.Value2); invert_luminence201.outs.Value.Connect(transparency_texture_amount202.ins.Value1); invert_alpha191.outs.Value.Connect(toggle_diffuse_texture_alpha_usage203.ins.Value1); transparency_texture_amount202.outs.Value.Connect(toggle_transparency_texture204.ins.Value2); coloured_shadow_mix_custom237.outs.Closure.Connect(add_emission_to_final248.ins.Closure1); diffuse_or_shadeless_emission250.outs.Closure.Connect(add_emission_to_final248.ins.Closure2); toggle_diffuse_texture_alpha_usage203.outs.Value.Connect(add_diffuse_texture_alpha205.ins.Value1); toggle_transparency_texture204.outs.Value.Connect(add_diffuse_texture_alpha205.ins.Value2); add_emission_to_final248.outs.Closure.Connect(custom_alpha_cutter239.ins.Closure1); transparent238.outs.BSDF.Connect(custom_alpha_cutter239.ins.Closure2); add_diffuse_texture_alpha205.outs.Value.Connect(custom_alpha_cutter239.ins.Fac); bump211.outs.Normal.Connect(principledbsdf240.ins.Normal); bump211.outs.Normal.Connect(principledbsdf240.ins.ClearcoatNormal); principledbsdf240.outs.BSDF.Connect(coloured_shadow_mix_glass_principled241.ins.Closure1); coloured_shadow_trans_color234.outs.BSDF.Connect(coloured_shadow_mix_glass_principled241.ins.Closure2); weight_for_shadowray_coloured_shadow200.outs.Value.Connect(coloured_shadow_mix_glass_principled241.ins.Fac); if (part.HasDiffuseTexture) { RenderEngine.SetTextureImage(diffuse_texture208, part.DiffuseTexture); RenderEngine.SetProjectionMode(m_shader, part.DiffuseTexture, diffuse_texture208, texcoord207); } if (part.HasBumpTexture) { RenderEngine.SetTextureImage(bump_texture209, part.BumpTexture); RenderEngine.SetProjectionMode(m_shader, part.BumpTexture, bump_texture209, texcoord207); } if (part.HasTransparencyTexture) { RenderEngine.SetTextureImage(transparency_texture235, part.TransparencyTexture); RenderEngine.SetProjectionMode(m_shader, part.TransparencyTexture, transparency_texture235, texcoord207); } if (part.HasEnvironmentTexture) { RenderEngine.SetTextureImage(environment_texture228, part.EnvironmentTexture); RenderEngine.SetProjectionMode(m_shader, part.EnvironmentTexture, environment_texture228, texcoord207); } if (part.CyclesMaterialType == ShaderBody.CyclesMaterial.Glass) { return(coloured_shadow_mix_glass_principled241); } return(custom_alpha_cutter239); }
public override Shader GetShader() { if (!string.IsNullOrEmpty(m_original_background.Xml)) { var xml = m_original_background.Xml; Shader.ShaderFromXml(ref m_shader, xml); } else { var texcoord210 = new TextureCoordinateNode("texcoord"); var bg_env_texture255 = new EnvironmentTextureNode("bg_env_texture"); bg_env_texture255.Projection = TextureNode.EnvironmentProjection.Equirectangular; bg_env_texture255.ColorSpace = TextureNode.TextureColorSpace.None; bg_env_texture255.Extension = TextureNode.TextureExtension.Repeat; bg_env_texture255.Interpolation = InterpolationType.Linear; bg_env_texture255.IsLinear = false; var bg_color_or_texture259 = new MixNode("bg_color_or_texture"); bg_color_or_texture259.ins.Color1.Value = m_original_background.Color1AsFloat4; bg_color_or_texture259.ins.Fac.Value = m_original_background.HasBgEnvTextureAsFloat; bg_color_or_texture259.BlendType = MixNode.BlendTypes.Mix; bg_color_or_texture259.UseClamp = false; var separate_bg_color265 = new SeparateRgbNode("separate_bg_color"); var skylight_strength_factor302 = new MathMultiply("skylight_strength_factor"); skylight_strength_factor302.ins.Value1.Value = m_original_background.BgStrength; skylight_strength_factor302.ins.Value2.Value = m_original_background.NonSkyEnvStrengthFactor; skylight_strength_factor302.Operation = MathNode.Operations.Multiply; skylight_strength_factor302.UseClamp = false; var factor_r262 = new MathMultiply("factor_r"); factor_r262.Operation = MathNode.Operations.Multiply; factor_r262.UseClamp = false; var factor_g263 = new MathMultiply("factor_g"); factor_g263.Operation = MathNode.Operations.Multiply; factor_g263.UseClamp = false; var factor_b264 = new MathMultiply("factor_b"); factor_b264.Operation = MathNode.Operations.Multiply; factor_b264.UseClamp = false; var gradienttexture281 = new GradientTextureNode("gradienttexture"); var factored_bg_color266 = new CombineRgbNode("factored_bg_color"); var gradient_colorramp282 = new ColorRampNode("gradient_colorramp"); gradient_colorramp282.ColorBand.Stops.Add(new ColorStop() { Color = new ccl.float4(0.9411765f, 0.5803922f, 0.07843138f, 1f), Position = 0f }); gradient_colorramp282.ColorBand.Stops.Add(new ColorStop() { Color = new ccl.float4(0.5019608f, 0f, 0f, 1f), Position = 1f }); var refl_env_texture256 = new EnvironmentTextureNode("refl_env_texture"); refl_env_texture256.Projection = TextureNode.EnvironmentProjection.Equirectangular; refl_env_texture256.ColorSpace = TextureNode.TextureColorSpace.None; refl_env_texture256.Extension = TextureNode.TextureExtension.Repeat; refl_env_texture256.Interpolation = InterpolationType.Linear; refl_env_texture256.IsLinear = false; var refl_color_or_texture260 = new MixNode("refl_color_or_texture"); refl_color_or_texture260.ins.Color1.Value = m_original_background.ReflectionColorAs4float; refl_color_or_texture260.ins.Fac.Value = m_original_background.HasReflEnvTextureAsFloat; refl_color_or_texture260.BlendType = MixNode.BlendTypes.Mix; refl_color_or_texture260.UseClamp = false; var separate_refl_color270 = new SeparateRgbNode("separate_refl_color"); var skylight_strength_factor303 = new MathMultiply("skylight_strength_factor"); skylight_strength_factor303.ins.Value1.Value = m_original_background.ReflStrength; skylight_strength_factor303.ins.Value2.Value = m_original_background.NonSkyEnvStrengthFactor; skylight_strength_factor303.Operation = MathNode.Operations.Multiply; skylight_strength_factor303.UseClamp = false; var factor_refl_r267 = new MathMultiply("factor_refl_r"); factor_refl_r267.Operation = MathNode.Operations.Multiply; factor_refl_r267.UseClamp = false; var factor_refl_g268 = new MathMultiply("factor_refl_g"); factor_refl_g268.Operation = MathNode.Operations.Multiply; factor_refl_g268.UseClamp = false; var factor_refl_b269 = new MathMultiply("factor_refl_b"); factor_refl_b269.Operation = MathNode.Operations.Multiply; factor_refl_b269.UseClamp = false; var light_path235 = new LightPathNode("light_path"); var use_reflect_refract_when_glossy_and_reflection285 = new MathMultiply("use_reflect_refract_when_glossy_and_reflection"); use_reflect_refract_when_glossy_and_reflection285.Operation = MathNode.Operations.Multiply; use_reflect_refract_when_glossy_and_reflection285.UseClamp = false; var gradient_or_other283 = new MixNode("gradient_or_other"); gradient_or_other283.ins.Fac.Value = m_original_background.UseGradientAsFloat; gradient_or_other283.BlendType = MixNode.BlendTypes.Mix; gradient_or_other283.UseClamp = false; var factored_refl_color271 = new CombineRgbNode("factored_refl_color"); var refl_env_when_enabled286 = new MathMultiply("refl_env_when_enabled"); refl_env_when_enabled286.ins.Value1.Value = m_original_background.UseCustomReflectionEnvironmentAsFloat; refl_env_when_enabled286.Operation = MathNode.Operations.Multiply; refl_env_when_enabled286.UseClamp = false; var skycolor_or_final_bg284 = new MixNode("skycolor_or_final_bg"); skycolor_or_final_bg284.ins.Color2.Value = m_original_background.SkyColorAs4float; skycolor_or_final_bg284.ins.Fac.Value = m_original_background.UseSkyColorAsFloat; skycolor_or_final_bg284.BlendType = MixNode.BlendTypes.Mix; skycolor_or_final_bg284.UseClamp = false; var sky_env_texture257 = new EnvironmentTextureNode("sky_env_texture"); sky_env_texture257.Projection = TextureNode.EnvironmentProjection.Equirectangular; sky_env_texture257.ColorSpace = TextureNode.TextureColorSpace.None; sky_env_texture257.Extension = TextureNode.TextureExtension.Repeat; sky_env_texture257.Interpolation = InterpolationType.Linear; sky_env_texture257.IsLinear = false; var sky_color_or_texture258 = new MixNode("sky_color_or_texture"); sky_color_or_texture258.ins.Fac.Value = m_original_background.HasSkyEnvTextureAsFloat; sky_color_or_texture258.BlendType = MixNode.BlendTypes.Mix; sky_color_or_texture258.UseClamp = false; var separate_sky_color275 = new SeparateRgbNode("separate_sky_color"); var sky_or_not261 = new MathMultiply("sky_or_not"); sky_or_not261.ins.Value1.Value = m_original_background.SkyStrength; sky_or_not261.ins.Value2.Value = m_original_background.SkylightEnabledAsFloat; sky_or_not261.Operation = MathNode.Operations.Multiply; sky_or_not261.UseClamp = false; var factor_sky_r272 = new MathMultiply("factor_sky_r"); factor_sky_r272.Operation = MathNode.Operations.Multiply; factor_sky_r272.UseClamp = false; var factor_sky_g273 = new MathMultiply("factor_sky_g"); factor_sky_g273.Operation = MathNode.Operations.Multiply; factor_sky_g273.UseClamp = false; var factor_sky_b274 = new MathMultiply("factor_sky_b"); factor_sky_b274.Operation = MathNode.Operations.Multiply; factor_sky_b274.UseClamp = false; var factored_sky_color276 = new CombineRgbNode("factored_sky_color"); var non_camera_rays290 = new MathSubtract("non_camera_rays"); non_camera_rays290.ins.Value1.Value = 1f; non_camera_rays290.Operation = MathNode.Operations.Subtract; non_camera_rays290.UseClamp = false; var camera_and_transmission294 = new MathAdd("camera_and_transmission"); camera_and_transmission294.Operation = MathNode.Operations.Add; camera_and_transmission294.UseClamp = false; var invert_refl_switch300 = new MathSubtract("invert_refl_switch"); invert_refl_switch300.ins.Value1.Value = 1f; invert_refl_switch300.Operation = MathNode.Operations.Subtract; invert_refl_switch300.UseClamp = false; var invert_cam_and_transm292 = new MathSubtract("invert_cam_and_transm"); invert_cam_and_transm292.ins.Value1.Value = 1f; invert_cam_and_transm292.Operation = MathNode.Operations.Subtract; invert_cam_and_transm292.UseClamp = false; var refl_bg_or_custom_env291 = new MixNode("refl_bg_or_custom_env"); refl_bg_or_custom_env291.BlendType = MixNode.BlendTypes.Mix; refl_bg_or_custom_env291.UseClamp = false; var light_with_bg_or_sky289 = new MixNode("light_with_bg_or_sky"); light_with_bg_or_sky289.BlendType = MixNode.BlendTypes.Mix; light_with_bg_or_sky289.UseClamp = false; var if_not_cam_nor_transm_nor_glossyrefl301 = new MathMultiply("if_not_cam_nor_transm_nor_glossyrefl"); if_not_cam_nor_transm_nor_glossyrefl301.Operation = MathNode.Operations.Multiply; if_not_cam_nor_transm_nor_glossyrefl301.UseClamp = false; var mix295 = new MixNode("mix"); mix295.BlendType = MixNode.BlendTypes.Mix; mix295.UseClamp = false; var final_bg280 = new BackgroundNode("final_bg"); final_bg280.ins.Strength.Value = 1f; m_shader.AddNode(texcoord210); m_shader.AddNode(bg_env_texture255); m_shader.AddNode(bg_color_or_texture259); m_shader.AddNode(separate_bg_color265); m_shader.AddNode(skylight_strength_factor302); m_shader.AddNode(factor_r262); m_shader.AddNode(factor_g263); m_shader.AddNode(factor_b264); m_shader.AddNode(gradienttexture281); m_shader.AddNode(factored_bg_color266); m_shader.AddNode(gradient_colorramp282); m_shader.AddNode(refl_env_texture256); m_shader.AddNode(refl_color_or_texture260); m_shader.AddNode(separate_refl_color270); m_shader.AddNode(skylight_strength_factor303); m_shader.AddNode(factor_refl_r267); m_shader.AddNode(factor_refl_g268); m_shader.AddNode(factor_refl_b269); m_shader.AddNode(light_path235); m_shader.AddNode(use_reflect_refract_when_glossy_and_reflection285); m_shader.AddNode(gradient_or_other283); m_shader.AddNode(factored_refl_color271); m_shader.AddNode(refl_env_when_enabled286); m_shader.AddNode(skycolor_or_final_bg284); m_shader.AddNode(sky_env_texture257); m_shader.AddNode(sky_color_or_texture258); m_shader.AddNode(separate_sky_color275); m_shader.AddNode(sky_or_not261); m_shader.AddNode(factor_sky_r272); m_shader.AddNode(factor_sky_g273); m_shader.AddNode(factor_sky_b274); m_shader.AddNode(factored_sky_color276); m_shader.AddNode(non_camera_rays290); m_shader.AddNode(camera_and_transmission294); m_shader.AddNode(invert_refl_switch300); m_shader.AddNode(invert_cam_and_transm292); m_shader.AddNode(refl_bg_or_custom_env291); m_shader.AddNode(light_with_bg_or_sky289); m_shader.AddNode(if_not_cam_nor_transm_nor_glossyrefl301); m_shader.AddNode(mix295); m_shader.AddNode(final_bg280); texcoord210.outs.Generated.Connect(bg_env_texture255.ins.Vector); bg_env_texture255.outs.Color.Connect(bg_color_or_texture259.ins.Color2); bg_color_or_texture259.outs.Color.Connect(separate_bg_color265.ins.Image); separate_bg_color265.outs.R.Connect(factor_r262.ins.Value1); skylight_strength_factor302.outs.Value.Connect(factor_r262.ins.Value2); separate_bg_color265.outs.G.Connect(factor_g263.ins.Value1); skylight_strength_factor302.outs.Value.Connect(factor_g263.ins.Value2); separate_bg_color265.outs.B.Connect(factor_b264.ins.Value1); skylight_strength_factor302.outs.Value.Connect(factor_b264.ins.Value2); texcoord210.outs.Window.Connect(gradienttexture281.ins.Vector); factor_r262.outs.Value.Connect(factored_bg_color266.ins.R); factor_g263.outs.Value.Connect(factored_bg_color266.ins.G); factor_b264.outs.Value.Connect(factored_bg_color266.ins.B); gradienttexture281.outs.Fac.Connect(gradient_colorramp282.ins.Fac); texcoord210.outs.Generated.Connect(refl_env_texture256.ins.Vector); refl_env_texture256.outs.Color.Connect(refl_color_or_texture260.ins.Color2); refl_color_or_texture260.outs.Color.Connect(separate_refl_color270.ins.Image); separate_refl_color270.outs.R.Connect(factor_refl_r267.ins.Value1); skylight_strength_factor303.outs.Value.Connect(factor_refl_r267.ins.Value2); separate_refl_color270.outs.G.Connect(factor_refl_g268.ins.Value1); skylight_strength_factor303.outs.Value.Connect(factor_refl_g268.ins.Value2); separate_refl_color270.outs.B.Connect(factor_refl_b269.ins.Value1); skylight_strength_factor303.outs.Value.Connect(factor_refl_b269.ins.Value2); light_path235.outs.IsGlossyRay.Connect(use_reflect_refract_when_glossy_and_reflection285.ins.Value1); light_path235.outs.IsReflectionRay.Connect(use_reflect_refract_when_glossy_and_reflection285.ins.Value2); factored_bg_color266.outs.Image.Connect(gradient_or_other283.ins.Color1); gradient_colorramp282.outs.Color.Connect(gradient_or_other283.ins.Color2); factor_refl_r267.outs.Value.Connect(factored_refl_color271.ins.R); factor_refl_g268.outs.Value.Connect(factored_refl_color271.ins.G); factor_refl_b269.outs.Value.Connect(factored_refl_color271.ins.B); use_reflect_refract_when_glossy_and_reflection285.outs.Value.Connect(refl_env_when_enabled286.ins.Value2); gradient_or_other283.outs.Color.Connect(skycolor_or_final_bg284.ins.Color1); texcoord210.outs.Generated.Connect(sky_env_texture257.ins.Vector); skycolor_or_final_bg284.outs.Color.Connect(sky_color_or_texture258.ins.Color1); sky_env_texture257.outs.Color.Connect(sky_color_or_texture258.ins.Color2); sky_color_or_texture258.outs.Color.Connect(separate_sky_color275.ins.Image); separate_sky_color275.outs.R.Connect(factor_sky_r272.ins.Value1); sky_or_not261.outs.Value.Connect(factor_sky_r272.ins.Value2); separate_sky_color275.outs.G.Connect(factor_sky_g273.ins.Value1); sky_or_not261.outs.Value.Connect(factor_sky_g273.ins.Value2); separate_sky_color275.outs.B.Connect(factor_sky_b274.ins.Value1); sky_or_not261.outs.Value.Connect(factor_sky_b274.ins.Value2); factor_sky_r272.outs.Value.Connect(factored_sky_color276.ins.R); factor_sky_g273.outs.Value.Connect(factored_sky_color276.ins.G); factor_sky_b274.outs.Value.Connect(factored_sky_color276.ins.B); light_path235.outs.IsCameraRay.Connect(non_camera_rays290.ins.Value2); light_path235.outs.IsCameraRay.Connect(camera_and_transmission294.ins.Value1); light_path235.outs.IsTransmissionRay.Connect(camera_and_transmission294.ins.Value2); refl_env_when_enabled286.outs.Value.Connect(invert_refl_switch300.ins.Value2); camera_and_transmission294.outs.Value.Connect(invert_cam_and_transm292.ins.Value2); gradient_or_other283.outs.Color.Connect(refl_bg_or_custom_env291.ins.Color1); factored_refl_color271.outs.Image.Connect(refl_bg_or_custom_env291.ins.Color2); refl_env_when_enabled286.outs.Value.Connect(refl_bg_or_custom_env291.ins.Fac); gradient_or_other283.outs.Color.Connect(light_with_bg_or_sky289.ins.Color1); factored_sky_color276.outs.Image.Connect(light_with_bg_or_sky289.ins.Color2); non_camera_rays290.outs.Value.Connect(light_with_bg_or_sky289.ins.Fac); invert_refl_switch300.outs.Value.Connect(if_not_cam_nor_transm_nor_glossyrefl301.ins.Value1); invert_cam_and_transm292.outs.Value.Connect(if_not_cam_nor_transm_nor_glossyrefl301.ins.Value2); refl_bg_or_custom_env291.outs.Color.Connect(mix295.ins.Color1); light_with_bg_or_sky289.outs.Color.Connect(mix295.ins.Color2); if_not_cam_nor_transm_nor_glossyrefl301.outs.Value.Connect(mix295.ins.Fac); mix295.outs.Color.Connect(final_bg280.ins.Color); // extra code gradient_colorramp282.ColorBand.Stops.Clear(); // bottom color on 0.0f gradient_colorramp282.ColorBand.InsertColorStop(m_original_background.Color2AsFloat4, 0.0f); // top color on 1.0f gradient_colorramp282.ColorBand.InsertColorStop(m_original_background.Color1AsFloat4, 1.0f); // rotate the window vector gradienttexture281.Rotation = RenderEngine.CreateFloat4(0.0, 0.0, 1.570796); if (m_original_background.BackgroundFill == BackgroundStyle.Environment && m_original_background.HasBgEnvTexture) { RenderEngine.SetTextureImage(bg_env_texture255, m_original_background.BgTexture); _SetEnvironmentProjection(m_original_background.BgTexture, bg_env_texture255); bg_env_texture255.Rotation = m_original_background.BgTexture.Transform.z; } if (m_original_background.BackgroundFill == BackgroundStyle.WallpaperImage && m_original_background.Wallpaper.HasTextureImage) { RenderEngine.SetTextureImage(bg_env_texture255, m_original_background.Wallpaper); bg_env_texture255.Projection = TextureNode.EnvironmentProjection.Wallpaper; } if (m_original_background.HasReflEnvTexture) { RenderEngine.SetTextureImage(refl_env_texture256, m_original_background.ReflectionTexture); _SetEnvironmentProjection(m_original_background.ReflectionTexture, refl_env_texture256); } if (m_original_background.HasSkyEnvTexture) { RenderEngine.SetTextureImage(sky_env_texture257, m_original_background.SkyTexture); _SetEnvironmentProjection(m_original_background.SkyTexture, sky_env_texture257); } final_bg280.outs.Background.Connect(m_shader.Output.ins.Surface); } // phew, done. m_shader.FinalizeGraph(); m_shader.Tag(); return(m_shader); }