< 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:0
Uncovered lines:49
Coverable lines:49
Total lines:117
Line coverage:0% (0 of 49)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PBRMaterial()0%2100%
Create()0%2100%
SetUpColors(...)0%12300%
SetUpProps(...)0%2100%
SetUpTransparency(...)0%72800%

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;
 4
 5namespace DCL
 6{
 7    internal static class BasicMaterial
 8    {
 9        private static readonly string MATERIAL_PATH = "Materials/BasicShapeMaterial";
 10
 11        public static Material Create()
 12        {
 13            return new Material(Utils.EnsureResourcesMaterial(MATERIAL_PATH));
 14        }
 15
 16        public static void SetUp(Material material, float alphaTest)
 17        {
 18            material.EnableKeyword("_ALPHATEST_ON");
 19            material.SetInt(ShaderUtils.ZWrite, 1);
 20            material.SetFloat(ShaderUtils.AlphaClip, 1);
 21            material.SetFloat(ShaderUtils.Cutoff, alphaTest);
 22            material.renderQueue = (int)RenderQueue.AlphaTest;
 23        }
 24    }
 25
 26    internal static class PBRMaterial
 27    {
 028        private static readonly string MATERIAL_PATH = "Materials/ShapeMaterial";
 29
 30        public static Material Create()
 31        {
 032            return new Material(Utils.EnsureResourcesMaterial(MATERIAL_PATH));
 33        }
 34
 35        public static void SetUpColors(Material material, Color albedo, Color emissive, Color reflectivity, float emissi
 36        {
 037            material.SetColor(ShaderUtils.BaseColor, albedo);
 38
 039            if (emissive != Color.clear && emissive != Color.black)
 40            {
 041                material.EnableKeyword("_EMISSION");
 42            }
 43
 044            material.SetColor(ShaderUtils.EmissionColor, emissive * emissiveIntensity);
 045            material.SetColor(ShaderUtils.SpecColor, reflectivity);
 046        }
 47
 48        public static void SetUpProps(Material material, float metallic, float roughness, float glossiness,
 49            float specularIntensity, float directIntensity)
 50        {
 051            material.SetFloat(ShaderUtils.Metallic, metallic);
 052            material.SetFloat(ShaderUtils.Smoothness, 1 - roughness);
 053            material.SetFloat(ShaderUtils.EnvironmentReflections, glossiness);
 054            material.SetFloat(ShaderUtils.SpecularHighlights, specularIntensity * directIntensity);
 055        }
 56
 57        public static void SetUpTransparency(Material material, AssetPromise_Material_Model.TransparencyMode transparenc
 58            AssetPromise_Material_Model.Texture? alphaTexture, Color albedoColor, float alphaTest)
 59        {
 60            // Reset shader keywords
 061            material.DisableKeyword("_ALPHATEST_ON"); // Cut Out Transparency
 062            material.DisableKeyword("_ALPHABLEND_ON"); // Fade Transparency
 063            material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); // Transparent
 64
 065            if (transparencyMode == AssetPromise_Material_Model.TransparencyMode.Auto)
 66            {
 067                if (alphaTexture != null || albedoColor.a < 1f) //AlphaBlend
 68                {
 069                    transparencyMode = AssetPromise_Material_Model.TransparencyMode.AlphaBlend;
 070                }
 71                else // Opaque
 72                {
 073                    transparencyMode = AssetPromise_Material_Model.TransparencyMode.Opaque;
 74                }
 75            }
 76
 77            switch (transparencyMode)
 78            {
 79                case AssetPromise_Material_Model.TransparencyMode.Opaque:
 080                    material.renderQueue = (int)RenderQueue.Geometry;
 081                    material.SetFloat(ShaderUtils.AlphaClip, 0);
 082                    break;
 83                case AssetPromise_Material_Model.TransparencyMode.AlphaTest: // ALPHATEST
 084                    material.EnableKeyword("_ALPHATEST_ON");
 85
 086                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.One);
 087                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.Zero);
 088                    material.SetInt(ShaderUtils.ZWrite, 1);
 089                    material.SetFloat(ShaderUtils.AlphaClip, 1);
 090                    material.SetFloat(ShaderUtils.Cutoff, alphaTest);
 091                    material.SetInt(ShaderUtils.Surface, 0);
 092                    material.renderQueue = (int)RenderQueue.AlphaTest;
 093                    break;
 94                case AssetPromise_Material_Model.TransparencyMode.AlphaBlend: // ALPHABLEND
 095                    material.EnableKeyword("_ALPHABLEND_ON");
 96
 097                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.SrcAlpha);
 098                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.OneMinusSrcAlpha);
 099                    material.SetInt(ShaderUtils.ZWrite, 0);
 0100                    material.SetFloat(ShaderUtils.AlphaClip, 0);
 0101                    material.renderQueue = (int)RenderQueue.Transparent;
 0102                    material.SetInt(ShaderUtils.Surface, 1);
 0103                    break;
 104                case AssetPromise_Material_Model.TransparencyMode.AlphaTestAndAlphaBlend:
 0105                    material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
 106
 0107                    material.SetInt(ShaderUtils.SrcBlend, (int)BlendMode.One);
 0108                    material.SetInt(ShaderUtils.DstBlend, (int)BlendMode.OneMinusSrcAlpha);
 0109                    material.SetInt(ShaderUtils.ZWrite, 0);
 0110                    material.SetFloat(ShaderUtils.AlphaClip, 1);
 0111                    material.renderQueue = (int)RenderQueue.Transparent;
 0112                    material.SetInt(ShaderUtils.Surface, 1);
 113                    break;
 114            }
 0115        }
 116    }
 117}