string ToKeyword(ShadowsType shadowType)
 {
     if (shadowType == ShadowsType.HARD)
     {
         return("HARD_SHADOWS");
     }
     if (shadowType == ShadowsType.PCF)
     {
         return("PCF_SHADOWS");
     }
     if (shadowType == ShadowsType.VARIANCE)
     {
         return("VARIANCE_SHADOWS");
     }
     if (shadowType == ShadowsType.MOMENT)
     {
         return("MOMENT_SHADOWS");
     }
     return("");
 }
#pragma warning restore IDE1006, CS0169

            public void Set(uint numCascades, ShadowSettings settings, ShadowData data)
            {
                ShadowMatrix = data.ShadowMatrix;

                SetArrayData(
                    numCascades,
                    data.CascadeSplits,
                    out CascadeSplit0,
                    out CascadeSplit1,
                    out CascadeSplit2,
                    out CascadeSplit3);

                SetArrayData(
                    numCascades,
                    data.CascadeOffsets,
                    out CascadeOffset0,
                    out CascadeOffset1,
                    out CascadeOffset2,
                    out CascadeOffset3);

                SetArrayData(
                    numCascades,
                    data.CascadeScales,
                    out CascadeScale0,
                    out CascadeScale1,
                    out CascadeScale2,
                    out CascadeScale3);

                Bias                 = settings.Bias;
                OffsetScale          = settings.NormalOffset;
                VisualizeCascades    = settings.VisualizeCascades ? 1u : 0u;
                FilterAcrossCascades = 1u;
                ShadowDistance       = settings.ShadowDistance;
                ShadowsType          = settings.ShadowsType;
                NumSplits            = numCascades;
            }