public override void CreateRenderData(out MyRenderVoxelMaterialData renderData)
        {
            base.CreateRenderData(out renderData);

            renderData.ColorMetalXZnY  = this.ColorMetalXZnY;
            renderData.ColorMetalY     = this.ColorMetalY;
            renderData.NormalGlossXZnY = this.NormalGlossXZnY;
            renderData.NormalGlossY    = this.NormalGlossY;
            renderData.ExtXZnY         = this.ExtXZnY;
            renderData.ExtY            = this.ExtY;

            renderData.ColorMetalXZnYFar1  = this.ColorMetalXZnYFar1;
            renderData.ColorMetalYFar1     = this.ColorMetalYFar1;
            renderData.NormalGlossXZnYFar1 = this.NormalGlossXZnYFar1;
            renderData.NormalGlossYFar1    = this.NormalGlossYFar1;
            renderData.ExtXZnYFar1         = this.ExtXZnYFar1;
            renderData.ExtYFar1            = this.ExtYFar1;

            renderData.ColorMetalXZnYFar2  = this.ColorMetalXZnYFar2;
            renderData.ColorMetalYFar2     = this.ColorMetalYFar2;
            renderData.NormalGlossXZnYFar2 = this.NormalGlossXZnYFar2;
            renderData.NormalGlossYFar2    = this.NormalGlossYFar2;
            renderData.ExtXZnYFar2         = this.ExtXZnYFar2;
            renderData.ExtYFar2            = this.ExtYFar2;

            renderData.Scale     = this.Scale;
            renderData.ScaleFar1 = this.ScaleFar1;
            renderData.ScaleFar2 = this.ScaleFar2;

            renderData.ExtensionTextureArray1     = this.FoliageTextureArray1;
            renderData.ExtensionTextureArray2     = this.FoliageTextureArray2;
            renderData.ExtensionDensity           = this.FoliageDensity;
            renderData.ExtensionScale             = this.FoliageScale;
            renderData.ExtensionRandomRescaleMult = this.FoliageRandomRescaleMult;
        }
예제 #2
0
        internal static void Add(ref MyRenderVoxelMaterialData materialData)
        {
            //  Check if not yet assigned
            MyDebug.AssertRelease(!m_materials.ContainsKey(materialData.Index));

            //  Create and add into array
            MyRenderVoxelMaterial voxelMaterial = new MyRenderVoxelMaterial(materialData);

            m_materials[materialData.Index] = voxelMaterial;
        }
예제 #3
0
 public virtual void CreateRenderData(out MyRenderVoxelMaterialData renderData)
 {
     renderData = new MyRenderVoxelMaterialData()
     {
         Index             = this.Index,
         DiffuseXZ         = this.DiffuseXZ,
         NormalXZ          = this.NormalXZ,
         DiffuseY          = this.DiffuseY,
         NormalY           = this.NormalY,
         SpecularPower     = this.SpecularPower,
         SpecularShininess = this.SpecularShininess
     };
 }
        //  Parameter 'useTwoTexturesPerMaterial' tells us if we use two textures per material. One texture for axis XZ and second for axis Y.
        //  Use it for rock/stone materials. Don't use it for gold/silver, because there you don't need to make difference between side and bottom materials.
        //  Using this we save texture memory, but pixel shader still used differenced textures (two samplers looking to same texture)
        public MyRenderVoxelMaterial(MyRenderVoxelMaterialData data)
        {
            //  SpecularPower must be > 0, because pow() makes NaN results if called with zero
            MyDebug.AssertRelease(data.SpecularPower > 0);

            m_diffuseXZ       = data.DiffuseXZ;
            m_diffuseY        = data.DiffuseY;
            m_normalXZ        = data.NormalXZ;
            m_normalY         = data.NormalY;
            SpecularIntensity = data.SpecularShininess;
            SpecularPower     = data.SpecularPower;
            m_materialIndex   = data.Index;
        }
        //  Parameter 'useTwoTexturesPerMaterial' tells us if we use two textures per material. One texture for axis XZ and second for axis Y.
        //  Use it for rock/stone materials. Don't use it for gold/silver, because there you don't need to make difference between side and bottom materials.
        //  Using this we save texture memory, but pixel shader still used differenced textures (two samplers looking to same texture)
        public MyRenderVoxelMaterial(MyRenderVoxelMaterialData data)
        {
            //  SpecularPower must be > 0, because pow() makes NaN results if called with zero
            MyDebug.AssertRelease(data.SpecularPower > 0);

            m_diffuseXZ       = data.DiffuseXZ;
            m_diffuseY        = data.DiffuseY;
            m_normalXZ        = data.NormalXZ;
            m_normalY         = data.NormalY;
            SpecularIntensity = data.SpecularShininess;
            SpecularPower     = data.SpecularPower;
            m_materialIndex   = data.Index;

            DistancesAndScale     = data.DistanceAndScale;
            DistancesAndScaleFar  = data.DistanceAndScaleFar;
            ExtensionDetailScale  = data.ExtensionDetailScale;
            DistancesAndScaleFar3 = data.DistanceAndScaleFar3;
            Far3Color             = data.Far3Color;
        }
        public override void CreateRenderData(out MyRenderVoxelMaterialData renderData)
        {
            base.CreateRenderData(out renderData);

            renderData.ColorMetalXZnY = this.ColorMetalXZnY;
            FillString(ref renderData.ColorMetalY, ref this.ColorMetalY, ref ColorMetalXZnY);
            renderData.NormalGlossXZnY = this.NormalGlossXZnY;
            FillString(ref renderData.NormalGlossY, ref this.NormalGlossY, ref NormalGlossXZnY);
            renderData.ExtXZnY = this.ExtXZnY;
            FillString(ref renderData.ExtY, ref this.ExtY, ref ExtXZnY);

            FillString(ref renderData.ColorMetalXZnYFar1, ref ColorMetalXZnYFar1, ref ColorMetalXZnY);
            FillString(ref renderData.ColorMetalYFar1, ref ColorMetalYFar1, ref renderData.ColorMetalXZnYFar1);
            FillString(ref renderData.NormalGlossXZnYFar1, ref this.NormalGlossXZnYFar1, ref NormalGlossXZnY);
            FillString(ref renderData.NormalGlossYFar1, ref NormalGlossYFar1, ref renderData.NormalGlossXZnYFar1);
            FillString(ref renderData.ExtXZnYFar1, ref this.ExtXZnYFar1, ref ExtXZnY);
            FillString(ref renderData.ExtYFar1, ref ExtYFar1, ref renderData.ExtXZnYFar1);

            FillString(ref renderData.ColorMetalXZnYFar2, ref ColorMetalXZnYFar2, ref renderData.ColorMetalXZnYFar1);
            FillString(ref renderData.ColorMetalYFar2, ref ColorMetalYFar2, ref renderData.ColorMetalXZnYFar2);
            FillString(ref renderData.NormalGlossXZnYFar2, ref this.NormalGlossXZnYFar2, ref renderData.NormalGlossXZnYFar1);
            FillString(ref renderData.NormalGlossYFar2, ref NormalGlossYFar2, ref renderData.NormalGlossXZnYFar2);
            FillString(ref renderData.ExtXZnYFar2, ref this.ExtXZnYFar2, ref renderData.ExtXZnYFar1);
            FillString(ref renderData.ExtYFar2, ref ExtYFar2, ref renderData.ExtXZnYFar2);

            renderData.DistanceAndScale     = new Vector4(InitialScale, InitialDistance, ScaleMultiplier, DistanceMultiplier);
            renderData.DistanceAndScaleFar  = new Vector4(Far1Scale, Far1Distance, Far2Scale, Far2Distance);
            renderData.DistanceAndScaleFar3 = new Vector2(Far3Scale, Far3Distance);
            renderData.Far3Color            = Far3Color;
            renderData.ExtensionDetailScale = ExtensionDetailScale;

            renderData.ExtensionTextureArray1     = this.FoliageTextureArray1;
            renderData.ExtensionTextureArray2     = this.FoliageTextureArray2;
            renderData.FoliageColorTextureArray   = this.FoliageColorTextureArray;
            renderData.FoliageNormalTextureArray  = this.FoliageNormalTextureArray;
            renderData.ExtensionDensity           = this.FoliageDensity;
            renderData.ExtensionScale             = this.FoliageScale;
            renderData.ExtensionRandomRescaleMult = this.FoliageRandomRescaleMult;
            renderData.ExtensionType = this.FoliageType;
        }
        public override void CreateRenderData(out MyRenderVoxelMaterialData renderData)
        {
            base.CreateRenderData(out renderData);

            renderData.ColorMetalXZnY = this.ColorMetalXZnY;
            FillString(ref renderData.ColorMetalY, ref this.ColorMetalY, ref ColorMetalXZnY);
            renderData.NormalGlossXZnY = this.NormalGlossXZnY;
            FillString(ref renderData.NormalGlossY, ref this.NormalGlossY, ref NormalGlossXZnY);
            renderData.ExtXZnY = this.ExtXZnY;
            FillString(ref renderData.ExtY, ref this.ExtY, ref ExtXZnY);

            FillString(ref renderData.ColorMetalXZnYFar1, ref ColorMetalXZnYFar1, ref ColorMetalXZnY);
            FillString(ref renderData.ColorMetalYFar1, ref ColorMetalYFar1, ref renderData.ColorMetalXZnYFar1);
            FillString(ref renderData.NormalGlossXZnYFar1, ref this.NormalGlossXZnYFar1, ref NormalGlossXZnY);
            FillString(ref renderData.NormalGlossYFar1, ref NormalGlossYFar1, ref renderData.NormalGlossXZnYFar1);
            FillString(ref renderData.ExtXZnYFar1, ref this.ExtXZnYFar1, ref ExtXZnY);
            FillString(ref renderData.ExtYFar1, ref ExtYFar1, ref renderData.ExtXZnYFar1);

            FillString(ref renderData.ColorMetalXZnYFar2, ref ColorMetalXZnYFar2, ref renderData.ColorMetalXZnYFar1);
            FillString(ref renderData.ColorMetalYFar2, ref ColorMetalYFar2, ref renderData.ColorMetalXZnYFar2);
            FillString(ref renderData.NormalGlossXZnYFar2, ref this.NormalGlossXZnYFar2, ref renderData.NormalGlossXZnYFar1);
            FillString(ref renderData.NormalGlossYFar2, ref NormalGlossYFar2, ref renderData.NormalGlossXZnYFar2);
            FillString(ref renderData.ExtXZnYFar2, ref this.ExtXZnYFar2, ref renderData.ExtXZnYFar1);
            FillString(ref renderData.ExtYFar2, ref ExtYFar2, ref renderData.ExtXZnYFar2);

            renderData.Scale     = this.Scale;
            renderData.ScaleFar1 = this.ScaleFar1;
            renderData.ScaleFar2 = this.ScaleFar2;
            renderData.ScaleFar3 = this.ScaleFar3;
            renderData.ScaleFar4 = this.ScaleFar4;


            renderData.ExtensionTextureArray1     = this.FoliageTextureArray1;
            renderData.ExtensionTextureArray2     = this.FoliageTextureArray2;
            renderData.ExtensionDensity           = this.FoliageDensity;
            renderData.ExtensionScale             = this.FoliageScale;
            renderData.ExtensionRandomRescaleMult = this.FoliageRandomRescaleMult;
        }