< Summary

Class:DCL.PBRMaterial
Assembly:AssetPromiseKeeper
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Material/MaterialHelper.cs
Covered lines:29
Uncovered lines:18
Coverable lines:47
Total lines:118
Line coverage:61.7% (29 of 47)
Covered branches:0
Total branches:0
Covered methods:5
Total methods:5
Method coverage:100% (5 of 5)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PBRMaterial()0%110100%
Create()0%110100%
SetUpColors(...)0%3.043083.33%
SetUpProps(...)0%110100%
SetUpTransparency(...)0%15.338051.43%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/Material/MaterialHelper.cs

#LineLine coverage
 1using DCL.Helpers;
 2using UnityEngine;
 3using UnityEngine.Rendering;
 4using DCL.Shaders;
 5
 6namespace DCL
 7{
 8    internal static class BasicMaterial
 9    {
 10        private static readonly string MATERIAL_PATH = "Materials/BasicShapeMaterial";
 11
 12        public static Material Create()
 13        {
 14            return new Material(Utils.EnsureResourcesMaterial(MATERIAL_PATH));
 15        }
 16
 17        public static void SetUp(Material material, float alphaTest, Color diffuseColor)
 18        {
 19            material.EnableKeyword("_ALPHATEST_ON");
 20            material.SetInt(ShaderUtils.ZWrite, 1);
 21            material.SetFloat(ShaderUtils.AlphaClip, 1);
 22            material.SetFloat(ShaderUtils.Cutoff, alphaTest);
 23            material.SetColor(ShaderUtils.BaseColor, diffuseColor);
 24            material.renderQueue = (int)RenderQueue.AlphaTest;
 25        }
 26    }
 27
 28    internal static class PBRMaterial
 29    {
 130        private static readonly string MATERIAL_PATH = "Materials/ShapeMaterial";
 31
 32        public static Material Create()
 33        {
 1934            return new Material(Utils.EnsureResourcesMaterial(MATERIAL_PATH));
 35        }
 36
 37        public static void SetUpColors(Material material, Color albedo, Color emissive, Color reflectivity, float emissi
 38        {
 1939            material.SetColor(ShaderUtils.BaseColor, albedo);
 40
 1941            if (emissive != Color.clear && emissive != Color.black)
 42            {
 043                material.EnableKeyword("_EMISSION");
 44            }
 45
 1946            material.SetColor(ShaderUtils.EmissionColor, emissive * emissiveIntensity);
 1947            material.SetColor(ShaderUtils.SpecColor, reflectivity);
 1948        }
 49
 50        public static void SetUpProps(Material material, float metallic, float roughness,
 51            float specularIntensity, float directIntensity)
 52        {
 1953            material.SetFloat(ShaderUtils.Metallic, metallic);
 1954            material.SetFloat(ShaderUtils.Smoothness, 1 - roughness);
 1955            material.SetFloat(ShaderUtils.SpecularHighlights, specularIntensity * directIntensity);
 1956        }
 57
 58        public static void SetUpTransparency(Material material, AssetPromise_Material_Model.TransparencyMode transparenc
 59            AssetPromise_Material_Model.Texture? alphaTexture, Color albedoColor, float alphaTest)
 60        {
 61            // Reset shader keywords
 1962            material.DisableKeyword("_ALPHATEST_ON"); // Cut Out Transparency
 1963            material.DisableKeyword("_ALPHABLEND_ON"); // Fade Transparency
 1964            material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); // Transparent
 65
 1966            if (transparencyMode == AssetPromise_Material_Model.TransparencyMode.Auto)
 67            {
 1968                if (alphaTexture != null || albedoColor.a < 1f) //AlphaBlend
 69                {
 770                    transparencyMode = AssetPromise_Material_Model.TransparencyMode.AlphaBlend;
 71                }
 72                else // Opaque
 73                {
 1274                    transparencyMode = AssetPromise_Material_Model.TransparencyMode.Opaque;
 75                }
 76            }
 77
 78            switch (transparencyMode)
 79            {
 80                case AssetPromise_Material_Model.TransparencyMode.Opaque:
 1281                    material.renderQueue = (int)RenderQueue.Geometry;
 1282                    material.SetFloat(ShaderUtils.AlphaClip, 0);
 1283                    break;
 84                case AssetPromise_Material_Model.TransparencyMode.AlphaTest: // ALPHATEST
 085                    material.EnableKeyword("_ALPHATEST_ON");
 86
 087                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.One);
 088                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.Zero);
 089                    material.SetInt(ShaderUtils.ZWrite, 1);
 090                    material.SetFloat(ShaderUtils.AlphaClip, 1);
 091                    material.SetFloat(ShaderUtils.Cutoff, alphaTest);
 092                    material.SetInt(ShaderUtils.Surface, 0);
 093                    material.renderQueue = (int)RenderQueue.AlphaTest;
 094                    break;
 95                case AssetPromise_Material_Model.TransparencyMode.AlphaBlend: // ALPHABLEND
 796                    material.EnableKeyword("_ALPHABLEND_ON");
 97
 798                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.SrcAlpha);
 799                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.OneMinusSrcAlpha);
 7100                    material.SetInt(ShaderUtils.ZWrite, 0);
 7101                    material.SetFloat(ShaderUtils.AlphaClip, 0);
 7102                    material.renderQueue = (int)RenderQueue.Transparent;
 7103                    material.SetInt(ShaderUtils.Surface, 1);
 7104                    break;
 105                case AssetPromise_Material_Model.TransparencyMode.AlphaTestAndAlphaBlend:
 0106                    material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
 107
 0108                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.One);
 0109                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.OneMinusSrcAlpha);
 0110                    material.SetInt(ShaderUtils.ZWrite, 0);
 0111                    material.SetFloat(ShaderUtils.AlphaClip, 1);
 0112                    material.renderQueue = (int)RenderQueue.Transparent;
 0113                    material.SetInt(ShaderUtils.Surface, 1);
 114                    break;
 115            }
 0116        }
 117    }
 118}