private static Vector3 GetDiffuseColor(Schema2.Material srcMaterial) { var diffuse = srcMaterial.FindChannel("Diffuse"); if (diffuse == null) diffuse = srcMaterial.FindChannel("BaseColor"); if (diffuse == null) return Vector3.One; return new Vector3(diffuse.Value.Parameter.X, diffuse.Value.Parameter.Y, diffuse.Value.Parameter.Z); }
private Texture2D GetDiffuseTexture(Schema2.Material srcMaterial) { var diffuse = srcMaterial.FindChannel("Diffuse"); if (diffuse == null) diffuse = srcMaterial.FindChannel("BaseColor"); if (diffuse == null) return null; var name = srcMaterial.Name; if (name == null) name = "null"; name += "-Diffuse"; return _TexFactory.UseTexture(diffuse.Value.Texture?.PrimaryImage?.GetImageContent() ?? default, name); }
private static Vector3 GeEmissiveColor(Schema2.Material srcMaterial) { var emissive = srcMaterial.FindChannel("Emissive"); if (emissive == null) return Vector3.Zero; return new Vector3(emissive.Value.Parameter.X, emissive.Value.Parameter.Y, emissive.Value.Parameter.Z); }
private static float GetAlphaLevel(Schema2.Material srcMaterial) { if (srcMaterial.Alpha == Schema2.AlphaMode.OPAQUE) return 1; var baseColor = srcMaterial.FindChannel("BaseColor"); if (baseColor == null) return 1; return baseColor.Value.Parameter.W; }
private static float GetSpecularPower(Schema2.Material srcMaterial) { var mr = srcMaterial.FindChannel("MetallicRoughness"); if (mr == null) return 16; // default value = 16 var metallic = mr.Value.Parameter.X; var roughness = mr.Value.Parameter.Y; return 4 + 16 * metallic; }
private Texture2D GetDiffuseTexture(Schema2.Material srcMaterial) { var diffuse = srcMaterial.FindChannel("Diffuse"); if (diffuse == null) { diffuse = srcMaterial.FindChannel("BaseColor"); } if (diffuse == null) { return(null); } var name = srcMaterial.Name; if (name == null) { name = "null"; } name += "-Diffuse"; return(_TexFactory.UseTexture(diffuse.Value.Texture?.PrimaryImage?.Content ?? default, name)); }
private static Vector3 GetSpecularColor(Schema2.Material srcMaterial) { var mr = srcMaterial.FindChannel("MetallicRoughness"); if (mr == null) return Vector3.One; // default value 16 var diffuse = GetDiffuseColor(srcMaterial); var metallic = mr.Value.Parameter.X; var roughness = mr.Value.Parameter.Y; var k = Vector3.Zero; k += Vector3.Lerp(diffuse, Vector3.Zero, roughness); k += Vector3.Lerp(diffuse, Vector3.One, metallic); k *= 0.5f; return k; }