public static void SetupVoxelEntity(MyLodTypeEnum lod, MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            MyEffectVoxels effectVoxels = shader as MyEffectVoxels;

            {
                MatrixD worldMatrixD = renderElement.WorldMatrix;
                worldMatrixD.Translation -= MyRenderCamera.Position;
                var worldMatrix = (Matrix)worldMatrixD;
                effectVoxels.SetWorldMatrix(ref worldMatrix);
            }

            var voxelCell = renderElement.RenderObject as MyRenderVoxelCell;
            if (voxelCell != null)
            {
                MyRenderVoxelCell.EffectArgs args;
                voxelCell.GetEffectArgs(out args);
                effectVoxels.VoxelVertex.SetArgs(ref args);
            }

            effectVoxels.SetDiffuseColor(Vector3.One);
            if (MyRenderSettings.DebugClipmapLodColor && renderElement.VoxelBatch.Lod < MyRenderVoxelCell.LOD_COLORS.Length)
            {
                effectVoxels.SetDiffuseColor(MyRenderVoxelCell.LOD_COLORS[renderElement.VoxelBatch.Lod].ToVector3());
            }
            effectVoxels.EnablePerVertexAmbient(MyRender.Settings.EnablePerVertexVoxelAmbient);

            if (lod == MyLodTypeEnum.LOD_BACKGROUND && renderElement.RenderObject is MyRenderVoxelCellBackground)
            {
                SetupAtmosphere(effectVoxels, renderElement.RenderObject as MyRenderVoxelCellBackground);
            }
        }
        public static void SetupVoxelEntity(MyLodTypeEnum lod,MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            MyEffectVoxels effectVoxels = shader as MyEffectVoxels;

            {
                MatrixD worldMatrixD = renderElement.WorldMatrix;
                worldMatrixD.Translation -= MyRenderCamera.Position;
                var worldMatrix = (Matrix)worldMatrixD;
                effectVoxels.SetWorldMatrix(ref worldMatrix);
            }

            //effectVoxels.SetVoxelMapPosition((Vector3)(renderElement.WorldMatrix.Translation - MyRenderCamera.Position));
            //effectVoxels.SetPositionLocalOffset((Vector3)(renderElement.WorldMatrix.Right));
            //effectVoxels.SetPositionLocalScale((Vector3)(renderElement.WorldMatrix.Up));
            //effectVoxels.SetLodBounds(new Vector2((float)renderElement.WorldMatrix.M14, (float)renderElement.WorldMatrix.M24));
            effectVoxels.SetDiffuseColor(Vector3.One);
            if (MyRenderSettings.DebugClipmapLodColor && renderElement.VoxelBatch.Lod < MyRenderVoxelCell.LOD_COLORS.Length)
            {
                effectVoxels.SetDiffuseColor(MyRenderVoxelCell.LOD_COLORS[renderElement.VoxelBatch.Lod].ToVector3());
            }
            effectVoxels.EnablePerVertexAmbient(MyRender.Settings.EnablePerVertexVoxelAmbient);

            if (lod == MyLodTypeEnum.LOD_BACKGROUND && renderElement.RenderObject is MyRenderVoxelCellBackground)
            {
                SetupAtmosphere(effectVoxels, renderElement.RenderObject as MyRenderVoxelCellBackground);
            }
        }
        public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            MyEffectAtmosphere effectAtmosphere = shader as MyEffectAtmosphere;

            effectAtmosphere.SetWorldMatrix((Matrix)renderElement.WorldMatrixForDraw);
            effectAtmosphere.SetDiffuseColor(renderElement.Color);

            var atmosphere = renderElement.RenderObject as MyRenderAtmosphere;

            float depthScale = 0.2f;

            effectAtmosphere.SetInnerRadius(atmosphere.PlanetRadius);
            effectAtmosphere.SetOutherRadius(atmosphere.AtmosphereRadius);

            float scaleAtmosphere = 1.0f / (atmosphere.AtmosphereRadius - atmosphere.PlanetRadius);

            effectAtmosphere.SetScaleAtmosphere(scaleAtmosphere);
            effectAtmosphere.SetScaleAtmosphereOverScaleDepth(scaleAtmosphere / depthScale);

            Vector3 cameraToCenter = atmosphere.GetRelativeCameraPos(MyRenderCamera.Position);

            effectAtmosphere.SetRelativeCameraPos(cameraToCenter);

            effectAtmosphere.SetLightPos(-MySunGlare.GetSunDirection());
            effectAtmosphere.SetIsInside(atmosphere.IsInside(MyRenderCamera.Position));

            effectAtmosphere.SetScaleDepth(depthScale);

            effectAtmosphere.SetWavelength(atmosphere.AtmosphereWavelengths);
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);
            SetupBaseEffect(shader, setup, lodType);

            MyEffectModelsDNS dnsShader = shader as MyEffectModelsDNS;

            dnsShader.SetHalfPixel(MyRenderCamera.Viewport.Width, MyRenderCamera.Viewport.Height);
            dnsShader.SetScale(MyRender.GetScaleForViewport(MyRender.GetRenderTarget(MyRenderTargets.Depth)));

            bool useDepth = lodType != MyLodTypeEnum.LOD_NEAR;

            if (useDepth)
            {
                // DepthStencilState.DepthRead;
                MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();
            }
            else
            {
                DepthStencilState.DepthRead.Apply();
            }
            MyStateObjects.Holo_BlendState.Apply();

            shader.ApplyHolo(!useDepth);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);
            SetupBaseEffect(shader, setup, lodType);

            shader.SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsInstancedSkinnedTechnique);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
 public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
 {
     MyEffectModelsDNS effectDNS = shader as MyEffectModelsDNS;
     effectDNS.SetWorldMatrix((Matrix)renderElement.WorldMatrixForDraw);
     effectDNS.SetDiffuseColor(renderElement.Color);
     effectDNS.Dithering = renderElement.Dithering;
     effectDNS.Time = (float)MyRender.InterpolationTime.Miliseconds;
     effectDNS.SetColorMaskHSV(renderElement.ColorMaskHSV);
 }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectAtmosphere)MyRender.GetEffect(MyEffects.Atmosphere);
            SetupBaseEffect(shader, setup, lodType);

            shader.SetSurfaceTechnique();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            base.SetupEntity(shader, renderElement);

            if (renderElement.Dithering > 0)
            {
            //    renderElement.Dithering = 0;
            }
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);
            SetupBaseEffect(shader, setup, lodType);

            shader.ApplyMasked();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            MyEffectVoxelsDebris shader = (MyEffectVoxelsDebris)MyRender.GetEffect(MyEffects.VoxelDebrisMRT);
            SetupBaseEffect(shader, setup, lodType);

            shader.SetTechnique(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            MyEffectVoxelsDebris shader = (MyEffectVoxelsDebris)MyRender.GetEffect(MyEffects.VoxelDebrisMRT);

            SetupBaseEffect(shader, setup, lodType);

            shader.SetTechnique(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectAtmosphere)MyRender.GetEffect(MyEffects.Atmosphere);

            SetupBaseEffect(shader, setup, lodType);

            shader.SetSurfaceTechnique();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
Exemple #13
0
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);

            SetupBaseEffect(shader, setup, lodType);

            shader.ApplyMasked();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
Exemple #14
0
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectAtmosphere)MyRender.GetEffect(MyEffects.Atmosphere);

            SetupBaseEffect(shader, setup, lodType);

            shader.SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsRenderTechnique);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
Exemple #15
0
        public static void LoadData()
        {
            MyRender.GetRenderProfiler().StartProfilingBlock("MyLights.LoadData");
            MyRender.Log.WriteLine("MyLights.LoadData() - START");
            MyRender.Log.IncreaseIndent();


            MyRender.Log.DecreaseIndent();
            MyRender.Log.WriteLine("MyLights.LoadData() - END");
            MyRender.GetRenderProfiler().EndProfilingBlock();
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);

            SetupBaseEffect(shader, setup, lodType);

            shader.SetTechnique(MyRenderConstants.RenderQualityProfile.ModelsInstancedTechnique);
            //shader.SetTechnique(MyEffectModelsDNS.MyEffectModelsDNSTechniqueEnum.HighInstanced);
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
        public void PrepareForDraw(MyEffectDistantImpostors effect)
        {
            RasterizerState.CullClockwise.Apply();
            BlendState.Opaque.Apply();
            MyMinerGame.SetRenderTarget(MyRender.GetRenderTarget(MyRenderTargets.AuxiliaryHalf0), null);

            foreach (MyVoxelMapImpostorGroup group in m_voxelMapImpostorGroups)
            {
                group.PrepareForDraw(effect);
            }
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);
            SetupBaseEffect(shader, setup, lodType);

            MyStateObjects.Static_Decals_BlendState.Apply();
            MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();

            shader.BeginBlended();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public static void LoadData()
        {
            MyRender.GetRenderProfiler().StartProfilingBlock("MyParticlesDustField.LoadData");

            MyMwcLog.WriteLine("MyParticlesDustField.LoadContent() - START");
            MyMwcLog.IncreaseIndent();


            MyMwcLog.DecreaseIndent();
            MyMwcLog.WriteLine("MyParticlesDustField.LoadContent() - END");
            MyRender.GetRenderProfiler().EndProfilingBlock();
        }
        protected void RenderShadowMap(Matrix lightViewProjectionAtZero)
        {
            // Set up the effect
            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MyEffectShadowMap;

            shadowMapEffect.SetViewProjMatrix(lightViewProjectionAtZero);
            shadowMapEffect.SetDitheringTexture((SharpDX.Direct3D9.Texture)MyTextureManager.GetTexture <MyTexture2D>(@"Textures\Models\Dither.png"));
            shadowMapEffect.SetHalfPixel(MySpotShadowRenderer.SpotShadowMapSize, MySpotShadowRenderer.SpotShadowMapSize);

            // Draw the models
            DrawElements(m_renderElementsForShadows, shadowMapEffect, true, MyRenderCamera.Position, MyShadowRenderer.NumSplits, false);
        }
        private void BlitToThumbnail(GraphicsDevice device, RenderTarget2D renderTarget)
        {
            device.SetRenderTarget(renderTarget);
            var screenEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;

            Debug.Assert(screenEffect != null);
            screenEffect.SetTechnique(MyEffectScale.Technique.HWScalePrefabPreviews);
            screenEffect.SetSourceTextureMod(m_fullSizeRT);
            screenEffect.SetScale(2f * new Vector2(renderTarget.Width / (float)m_fullSizeRT.Width, renderTarget.Height / (float)m_fullSizeRT.Height));
            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);
            device.SetRenderTarget(null);
        }
        public static void Draw()
        {
            if (MyRender.GetCurrentLodDrawPass() == Utils.MyLodTypeEnum.LOD_NEAR && CanDrawCockpitWeapons() && MyFakes.DRAW_WEAPONS)
            {
                var old = MySession.PlayerShip.Weapons.Visible;
                MySession.PlayerShip.Weapons.Visible = true;
                MySession.PlayerShip.Weapons.Draw();
                MySession.PlayerShip.Weapons.Visible = old;

                MySession.PlayerShip.CubeBuilder.Draw();
            }
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;
            SetupBaseEffect(shader, setup, lodType);

            {
                shader.Apply();
            }
            m_currentLod = lodType;
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            base.SetupEntity(shader, renderElement);

            var atmosphere = renderElement.RenderObject as MyRenderAtmosphere;
            if (atmosphere.IsInside(MyRenderCamera.Position))
            {
                MyEffectAtmosphere effectAtmosphere = shader as MyEffectAtmosphere;
                Matrix optProjection = Matrix.CreatePerspectiveFieldOfView(MyRenderCamera.FieldOfView, MyRenderCamera.AspectRatio, MyRenderCamera.NEAR_PLANE_DISTANCE, atmosphere.AtmosphereRadius * 2.0f / MyRenderAtmosphere.ATMOSPHERE_SCALE);
                effectAtmosphere.SetProjectionMatrix(ref optProjection);
            }

        }
Exemple #25
0
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = (MyEffectModelsDNS)MyRender.GetEffect(MyEffects.ModelDNS);

            SetupBaseEffect(shader, setup, lodType);

            MyStateObjects.Static_Decals_BlendState.Apply();
            MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();

            shader.BeginBlended();
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
        public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            MyEffectModelsDNS effectDNS = shader as MyEffectModelsDNS;

            // This is required, it's position of whole group
            effectDNS.SetWorldMatrix((Matrix)renderElement.WorldMatrixForDraw);

            // This should be in instance buffer when required
            effectDNS.SetDiffuseColor(renderElement.Color);
            effectDNS.Dithering = renderElement.Dithering;
            effectDNS.SetColorMaskHSV(renderElement.ColorMaskHSV);
            effectDNS.SetEmissivity(0);
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;

            SetupBaseEffect(shader, setup, lodType);

            {
                shader.ApplyMultimaterial();
            }
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            m_currentLod = lodType;
            return(shader);
        }
Exemple #28
0
        private void BlitToThumbnail(Device device, Texture renderTarget)
        {
            MyMinerGame.SetRenderTarget(renderTarget, null);
            var screenEffect = MyRender.GetEffect(MyEffects.Scale) as MyEffectScale;

            Debug.Assert(screenEffect != null);
            screenEffect.SetTechnique(MyEffectScale.Technique.HWScalePrefabPreviews);
            screenEffect.SetSourceTextureMod(m_fullSizeRT);
            //screenEffect.SetScale(2f * new Vector2(renderTarget.Width / (float)m_fullSizeRT.Width, renderTarget.Height / (float)m_fullSizeRT.Height));
            screenEffect.SetScale(2f * new Vector2((renderTarget.GetLevelDescription(0).Width - 1) / (float)m_fullSizeRT.GetLevelDescription(0).Width, (renderTarget.GetLevelDescription(0).Height - 1) / (float)m_fullSizeRT.GetLevelDescription(0).Height));
            MyGuiManager.GetFullscreenQuad().Draw(screenEffect);
            MyMinerGame.SetRenderTarget(null, null);
        }
        public override void RecreateControls(bool contructor)
        {
            Controls.Clear();

            m_scale = 0.7f;

            AddCaption(new System.Text.StringBuilder("Render Lights debug"), Color.Yellow.ToVector4());

            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder("(press ALT to share focus)"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);

            Controls.Add(label);

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f;
            AddLabel(new StringBuilder("Lights"), Color.Yellow.ToVector4(), 1.2f);

            AddCheckBox(new StringBuilder("Enable lights"), null, MemberHelper.GetMember(() => EnableRenderLights));
            AddCheckBox(new StringBuilder("Enable light glares"), null, MemberHelper.GetMember(() => MyLightGlare.EnableLightGlares));
            AddCheckBox(new StringBuilder("Enable spot shadows"), null, MemberHelper.GetMember(() => MyRender.EnableSpotShadows));
            AddCheckBox(new StringBuilder("Enable spectator light"), null, MemberHelper.GetMember(() => MyRender.EnableSpectatorReflector));
            AddCheckBox(new StringBuilder("Only specular intensity"), null, MemberHelper.GetMember(() => MyRender.ShowSpecularIntensity));
            AddCheckBox(new StringBuilder("Only specular power"), null, MemberHelper.GetMember(() => MyRender.ShowSpecularPower));
            AddCheckBox(new StringBuilder("Only emissivity"), null, MemberHelper.GetMember(() => MyRender.ShowEmissivity));
            AddCheckBox(new StringBuilder("Only reflectivity"), null, MemberHelper.GetMember(() => MyRender.ShowReflectivity));

            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MyEffectShadowMap;

            if (shadowMapEffect != null)
            {
                m_currentPosition.Y += 0.01f;
                AddLabel(new StringBuilder("Sun"), Color.Yellow.ToVector4(), 1.2f);
                AddCheckBox(new StringBuilder("Enable sun"), null, MemberHelper.GetMember(() => MyRender.EnableSun));
                AddCheckBox(new StringBuilder("Enable shadows"), null, MemberHelper.GetMember(() => MyRender.EnableShadows));
                AddCheckBox(new StringBuilder("Enable asteroid shadows"), null, MemberHelper.GetMember(() => MyRender.EnableAsteroidShadows));
                AddCheckBox(new StringBuilder("Enable ambient map"), MyRender.EnableEnvironmentMapAmbient, OnAmbientMapChecked);
                AddCheckBox(new StringBuilder("Enable reflection map"), MyRender.EnableEnvironmentMapReflection, OnReflectionMapChecked);
                AddCheckBox(new StringBuilder("Enable voxel ambient"), null, MemberHelper.GetMember(() => MyRender.EnablePerVertexVoxelAmbient));
                AddSlider(new StringBuilder("Intensity"), 0, 10.0f, MySector.SunProperties, MemberHelper.GetMember(() => MySector.SunProperties.SunIntensity));
                AddCheckBox(new StringBuilder("Show cascade splits"), null, MemberHelper.GetMember(() => MyRender.ShowCascadeSplits));
                //nefunguje po obfuskaci
                // AddSlider(new StringBuilder("ShadowBias"), 0, 0.01f, shadowMapEffect, MemberHelper.GetMember(() => shadowMapEffect.ShadowBias));

                AddCheckBox(new StringBuilder("Enable shadow interleaving"), null, MemberHelper.GetMember(() => MyRender.ShadowInterleaving));
                AddCheckBox(new StringBuilder("Freeze cascade 0"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade0));
                AddCheckBox(new StringBuilder("Freeze cascade 1"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade1));
                AddCheckBox(new StringBuilder("Freeze cascade 2"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade2));
                AddCheckBox(new StringBuilder("Freeze cascade 3"), null, MemberHelper.GetMember(() => MyRender.FreezeCascade3));
            }
        }
Exemple #30
0
        void PrepareViewportForCascade(int splitIndex)
        {
            // Set the viewport for the current split
            Viewport splitViewport = new Viewport();

            splitViewport.MinDepth = 0;
            splitViewport.MaxDepth = 1;
            splitViewport.Width    = ShadowMapCascadeSize;
            splitViewport.Height   = ShadowMapCascadeSize;
            splitViewport.X        = splitIndex * ShadowMapCascadeSize;
            splitViewport.Y        = 0;
            //Must be here because otherwise it crasher after resolution change
            MyRender.SetDeviceViewport(splitViewport);
        }
        public static void DrawModel(MyModel model, Matrix worldMatrix, Matrix viewMatrix, Matrix projectionMatrix, Vector3 diffuseColor, float alpha)
        {
            var effect = (MyEffectModelsDiffuse)MyRender.GetEffect(MyEffects.ModelDiffuse);

            effect.SetWorldMatrix(worldMatrix);
            effect.SetViewMatrix(ref viewMatrix);
            effect.SetProjectionMatrix(ref projectionMatrix);
            effect.SetDiffuseColor(new Vector4(diffuseColor, alpha));
            effect.SetTechnique(MyEffectModelsDiffuse.Technique.Position);

            effect.Begin();
            model.Render();
            effect.End();
        }
Exemple #32
0
        public override void RecreateControls(bool contructor)
        {
            Controls.Clear();

            AddCaption(new StringBuilder("Volumetric SSAO Debug"), Color.Yellow.ToVector4());

            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder("(press ALT to share focus)"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);

            Controls.Add(label);

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            MyPostProcessVolumetricSSAO2 volumetricSsaoPP = MyRender.GetPostProcess(MyPostProcessEnum.VolumetricSSAO2) as MyPostProcessVolumetricSSAO2;

            if (volumetricSsaoPP == null)
            {
                label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.1f), null, new System.Text.StringBuilder("Sorry SSAO post process is not available"), Color.Red.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                              MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);
                Controls.Add(label);
                return;
            }


            MyEffectVolumetricSSAO2 volumetricSsaoEffect = MyRender.GetEffect(MyEffects.VolumetricSSAO) as MyEffectVolumetricSSAO2;

            AddCheckBox(new StringBuilder("Use SSAO"), volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Enabled));
            AddCheckBox(new StringBuilder("Use blur"), volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.UseBlur));
            AddCheckBox(new StringBuilder("Show only SSAO"), volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.ShowOnlySSAO));

            m_currentPosition.Y += 0.01f;

//            AddSlider(new StringBuilder("Offset"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.Offset));
//          AddSlider(new StringBuilder("SiluetteDist"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.SiluetteDist));
//        AddSlider(new StringBuilder("R"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.R));


            AddSlider(new StringBuilder("MinRadius"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.MinRadius));
            AddSlider(new StringBuilder("MaxRadius"), 0, 1000, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.MaxRadius));
            AddSlider(new StringBuilder("RadiusGrowZScale"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.RadiusGrowZScale));
            AddSlider(new StringBuilder("CameraZFar"), 0, 100000, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.CameraZFar));

            AddSlider(new StringBuilder("Bias"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Bias));
            AddSlider(new StringBuilder("Falloff"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Falloff));
            AddSlider(new StringBuilder("NormValue"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.NormValue));
            //AddSlider(new StringBuilder("ColorScale"), 0, 10, volumetricSsaoEffect, MemberHelper.GetMember(() => volumetricSsaoEffect.ColorScale));
            AddSlider(new StringBuilder("Contrast"), 0, 10, volumetricSsaoPP, MemberHelper.GetMember(() => volumetricSsaoPP.Contrast));

            m_currentPosition.Y += 0.01f;
        }
        /// <summary>
        /// Load graphics resources content.
        /// </summary>
        public override void LoadContent()
        {
            int block1 = -1;

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyMinerGame::LoadContent", ref block1);
            base.LoadContent();

            DefaultSurface           = MyMinerGame.Static.GraphicsDevice.GetRenderTarget(0);
            DefaultSurface.DebugName = "DefaultSurface";
            DefaultDepth             = MyMinerGame.Static.GraphicsDevice.DepthStencilSurface;
            DefaultDepth.DebugName   = "DefaultDepth";

            MyMwcLog.WriteLine("MyMinerGame.LoadContent() - START");
            MyMwcLog.IncreaseIndent();

            MyVideoModeManager.UpdateScreenSize();

            System.Drawing.Font systemfont = new System.Drawing.Font("Tahoma", 12f, FontStyle.Regular);
            m_debugFont = new SharpDX.Direct3D9.Font(GraphicsDevice, systemfont);

            // GUI
            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyGuiManager.LoadContent()");
            MyGuiManager.LoadContent();

            // Models
            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock("MyModels.LoadContent()");
            MyModels.LoadContent();

            // Render
            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock("MyRender.LoadContent();");
            MyRender.LoadContent();

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock("MyDebugDraw.LoadContent();");
            MyDebugDraw.LoadContent();

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock("MyDebugDrawCachedLines.LoadContent()");
            MyDebugDrawCachedLines.LoadContent();


            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartNextBlock("MySunGlare.LoadContent()");
            MySunGlare.LoadContent();
            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock();

            MyMwcLog.DecreaseIndent();
            MyMwcLog.WriteLine("MyMinerGame.LoadContent() - END");

            GC.Collect();

            MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(block1);
        }
Exemple #34
0
        public static void SetupBaseEffect(MyEffectBase effect, float fogMultiplierMult = 1.0f)
        {
            if (MyRender.EnableFog)
            {
                effect.SetFogDistanceFar(MySector.FogProperties.FogFar);
                effect.SetFogDistanceNear(MySector.FogProperties.FogNear);
                effect.SetFogColor(MySector.FogProperties.FogColor);
                effect.SetFogMultiplier(MySector.FogProperties.FogMultiplier * fogMultiplierMult);
                effect.SetFogBacklightMultiplier(MySector.FogProperties.FogBacklightMultiplier);
            }
            else
            {
                effect.SetFogMultiplier(0);
            }

            //if (MyRenderConstants.RenderQualityProfile.ForwardRender || !MyRender.EnableLODBlending)
            {
                if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)
                {
                    effect.SetLodCut((GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);
                }
                else
                if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD1)
                {
                    effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);
                }
                else
                {
                    effect.SetLodCut(0);
                }

                effect.SetLodBackgroundCut(GetLodTransitionDistanceBackgroundEnd());
            }

            /*
             * if (!MyRenderConstants.RenderQualityProfile.ForwardRender && MyRender.EnableLODBlending)
             * {
             *  if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD1)
             *  {
             *      //effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);
             *      //effect.SetLodCut(-(GetLodTransitionDistanceFar() + GetLodTransitionDistanceNear()) / 2.0f);
             *      effect.SetLodCut(0);
             *  }
             *  else
             *  {
             *      effect.SetLodCut(0);
             *  }
             * }  */
        }
        /// <summary>
        /// Only to be called with FastOcclusionBoundingBoxDraw
        /// </summary>
        public static void PrepareFastOcclusionBoundingBoxDraw()
        {
            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;

            effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestEnabled);

            effectOQ.SetViewMatrix(MyCamera.ViewMatrixAtZero);
            effectOQ.SetProjectionMatrix(MyCamera.ProjectionMatrix);

            if (!MyRenderConstants.RenderQualityProfile.ForwardRender)
            {
                var depthRenderTarget = MyRender.GetRenderTarget(MyRenderTargets.Depth);
                effectOQ.SetDepthRT(depthRenderTarget);
                effectOQ.SetScale(MyRender.GetScaleForViewport(depthRenderTarget));
            }
        }
        public override void RecreateControls(bool contructor)
        {
            Controls.Clear();

            AddCaption(new System.Text.StringBuilder("Render modules"), Color.Yellow.ToVector4());

            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder("(press ALT to share focus)"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);

            Controls.Add(label);

            m_scale = 0.7f;

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f;

            AddLabel(new StringBuilder("Prepare for draw"), Color.Yellow.ToVector4(), 1.2f);
            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.PrepareForDraw))
            {
                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));
            }

            AddLabel(new StringBuilder("Background"), Color.Yellow.ToVector4(), 1.2f);
            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.Background))
            {
                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));
            }

            AddLabel(new StringBuilder("Pre-HDR Alpha blend"), Color.Yellow.ToVector4(), 1.2f);
            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.AlphaBlendPreHDR))
            {
                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));
            }

            AddLabel(new StringBuilder("Alpha blend"), Color.Yellow.ToVector4(), 1.2f);
            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.AlphaBlend))
            {
                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));
            }

            AddLabel(new StringBuilder("Debug draw"), Color.Yellow.ToVector4(), 1.2f);
            foreach (MyRender.MyRenderModuleItem renderModule in MyRender.GetRenderModules(MyRenderStage.DebugDraw))
            {
                AddCheckBox(new StringBuilder(renderModule.DisplayName), renderModule, MemberHelper.GetMember(() => renderModule.Enabled));
            }
        }
Exemple #37
0
        public static void Draw()
        {
            if (MyRender.GetCurrentLodDrawPass() == MyLodTypeEnum.LOD0)
            {
                MyStateObjects.DepthStencil_TestFarObject_DepthReadOnly.Apply();
                MyStateObjects.Dynamic_Decals_BlendState.Apply();
                MyStateObjects.BiasedRasterizer_Decals.Apply();

                Effects.MyEffectDecals effect = (Effects.MyEffectDecals)MyRender.GetEffect(MyEffects.Decals);

                //  Draw voxel decals
                m_decalsForVoxels.Draw(m_vertices, effect, m_texturesDiffuse, m_texturesNormalMap);

                //  Draw model decals
                m_decalsForModels.Draw(m_vertices, effect, m_texturesDiffuse, m_texturesNormalMap);
            }
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;
            SetupBaseEffect(shader, setup, lodType);

            if (lodType == MyLodTypeEnum.LOD_BACKGROUND)
            {
                shader.ApplyMultimaterialFar();
            }
            else
            {
                shader.ApplyMultimaterial();
            }
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            m_currentLod = lodType;
            return shader;
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;
            SetupBaseEffect(shader, setup, lodType);

            if (lodType == MyLodTypeEnum.LOD_BACKGROUND)
            {
                shader.ApplyFar(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);
            }
            else
            {
                shader.Apply();
            }
            m_currentLod = lodType;
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return shader;
        }
        protected void RenderShadowMap(Matrix lightViewProjection)
        {
            // Set up the effect
            MyEffectShadowMap shadowMapEffect = MyRender.GetEffect(MyEffects.ShadowMap) as MinerWars.AppCode.Game.Effects.MyEffectShadowMap;

            shadowMapEffect.SetViewProjMatrix(lightViewProjection);

            /*
             * m_culledElements.Clear();
             * foreach (MyRender.MyRenderElement element in m_renderElementsForShadows)
             * {
             * m_culledElements.Add(element);
             * }
             */
            // Draw the models
            DrawElements(m_renderElementsForShadows, shadowMapEffect, false, MyPerformanceCounter.NoSplit);
        }
        public void RenderForLight(Matrix lightViewProjection, ref BoundingBox lightBoundingBox, Texture shadowRenderTarget, Texture shadowDepth, int spotIndex)
        {
            m_renderElementsForShadows.Clear();
            m_castingRenderObjectsUnique.Clear();

            m_spotFrustum.Matrix = lightViewProjection;

            //MyRender.GetEntitiesFromPrunningStructure(ref lightBoundingBox, m_castingRenderObjects);
            MyRender.GetEntitiesFromShadowStructure(ref lightBoundingBox, m_castingRenderObjects);

            foreach (MyElement element in m_castingRenderObjects)
            {
                MyRenderObject renderObject = (MyRenderObject)element;
                MyEntity       entity       = ((MyRenderObject)element).Entity;

                if (entity != null)
                {
                    if (entity is MyVoxelMap)
                    {
                        // Changed m_castersBox to lightBoundingBox, should work
                        //(entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, ref lightBoundingBox, m_spotFrustum, MyLodTypeEnum.LOD0, false);
                        (entity as MyVoxelMap).GetRenderElementsForShadowmap(m_renderElementsForShadows, renderObject.RenderCellCoord.Value, MyLodTypeEnum.LOD0, false);
                    }
                    else
                    {
                        if (entity.ModelLod0 != null)
                        {
                            MyRender.CollectRenderElementsForShadowmap(m_renderElementsForShadows, m_transparentRenderElementsForShadows, entity, entity.ModelLod0);
                        }
                    }
                }
            }

            // Set our targets
            MyMinerGame.SetRenderTarget(shadowRenderTarget, shadowDepth);
            MyMinerGame.Static.GraphicsDevice.Clear(ClearFlags.All, new ColorBGRA(1.0f), 1.0f, 0);

            DepthStencilState.Default.Apply();
            RasterizerState.CullNone.Apply();
            BlendState.Opaque.Apply();

            RenderShadowMap(lightViewProjection);

            MyRender.TakeScreenshot("ShadowMapSpot", shadowRenderTarget, MyEffectScreenshot.ScreenshotTechniqueEnum.Color);
        }
        protected void SetupBaseEffect(MyEffectBase shader, MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            MyRenderCamera.SetupBaseEffect(shader, lodType,  setup.FogMultiplierMult);

            if (lodType == MyLodTypeEnum.LOD_NEAR)
            {
                shader.SetProjectionMatrix(ref MyRenderCamera.ProjectionMatrixForNearObjects);
            }
            else
            {
                shader.SetProjectionMatrix(ref MyRenderCamera.ProjectionMatrix);
            }

            shader.SetViewMatrix(ref MyRenderCamera.ViewMatrixAtZero);

            var rasterizerState = MyRender.Settings.Wireframe ? WireframeRasterizerState : SolidRasterizerState;
            rasterizerState.Apply();
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;

            SetupBaseEffect(shader, setup, lodType);

            if (lodType == MyLodTypeEnum.LOD_BACKGROUND)
            {
                shader.ApplyMultimaterialFar(MyRenderConstants.RenderQualityProfile.VoxelsRenderTechnique);
            }
            else
            {
                shader.ApplyMultimaterial();
            }
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            m_currentLod = lodType;
            return(shader);
        }
        private void DisableContainedDummyParticles(ref MyExplosionInfo explosionInfo)
        {
            BoundingBox aabb = BoundingBox.CreateFromSphere(explosionInfo.ExplosionSphere);

            MyRender.GetEntitiesFromPrunningStructure(ref aabb, m_destroyHelper);

            foreach (var elem in m_destroyHelper)
            {
                var entity = ((MyRenderObject)elem).Entity;

                var dummyPoint = entity as MyDummyPoint;
                if (dummyPoint != null && !dummyPoint.CanSurvivePrefabDestruction())
                {
                    var position = dummyPoint.GetPosition();
                    dummyPoint.DisableParticleEffect();
                }
            }
        }
        public override MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType)
        {
            var shader = MyRender.GetEffect(MyEffects.VoxelsMRT) as MyEffectVoxels;

            SetupBaseEffect(shader, setup, lodType);

            if (lodType == MyLodTypeEnum.LOD_BACKGROUND)
            {
                shader.ApplyFar();
            }
            else
            {
                shader.Apply();
            }
            m_currentLod = lodType;
            shader.Begin(0, SharpDX.Direct3D9.FX.None);
            return(shader);
        }
        /// <summary>
        /// Draw occlusion bounding box method with our premade effect and box.
        /// </summary>
        /// <param name="bbox"></param>
        /// <param name="scale"></param>
        /// <param name="enableDepthTesting"></param>
        /// <param name="billboardLike">Indicates whether the occlusion object (box) is rotated to face the camera or not.</param>
        public static void DrawOcclusionBoundingBox(BoundingBox bbox, float scale, bool enableDepthTesting, bool billboardLike = false, bool useDepthTarget = true)
        {
            useDepthTarget &= !MyRenderConstants.RenderQualityProfile.ForwardRender;

            var    cameraToBBox = bbox.GetCenter() - MyCamera.Position;
            Matrix worldMatrix  = billboardLike ? Matrix.CreateWorld(Vector3.Zero, MyMwcUtils.Normalize(cameraToBBox), MyMwcUtils.Normalize(MyCamera.UpVector + MyCamera.LeftVector)) : Matrix.Identity;

            Vector3 scaleV = (bbox.Max - bbox.Min) * scale;

            worldMatrix            *= Matrix.CreateScale(scaleV);
            worldMatrix.Translation = cameraToBBox;



            MyEffectOcclusionQueryDraw effectOQ = MyRender.GetEffect(MyEffects.OcclusionQueryDrawMRT) as MyEffectOcclusionQueryDraw;

            if (enableDepthTesting && !MyRenderConstants.RenderQualityProfile.ForwardRender)
            {
                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestEnabled);
            }
            else
            {
                effectOQ.SetTechnique(MyEffectOcclusionQueryDraw.Technique.DepthTestDisabled);
            }


            effectOQ.SetWorldMatrix(worldMatrix);
            effectOQ.SetViewMatrix(MyCamera.ViewMatrixAtZero);
            effectOQ.SetProjectionMatrix(MyCamera.ProjectionMatrix);

            if (useDepthTarget)
            {
                var depthRenderTarget = MyRender.GetRenderTarget(MyRenderTargets.Depth);
                effectOQ.SetDepthRT(depthRenderTarget);
                effectOQ.SetScale(MyRender.GetScaleForViewport(depthRenderTarget));
            }

            effectOQ.Begin();

            //draw
            m_modelBoxLowRes.Render();

            effectOQ.End();
        }
Exemple #47
0
        //////////////////////////////////////////////////////////////////////////
        private MyPrefabContainerManager()
        {
            short  modifier = (short)MyShortcut.ModifierValue.Control + (short)MyShortcut.ModifierValue.Shift;
            string category = "MyPrefabContainerManager";

            //@ debug draw Container
            MyShortcut shortcut = new MyShortcut(Keys.P, modifier);

            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, category, "Debug draw container", shortcut, OnToggleDebugDraw);

            //@ invalidate nodes
            shortcut = new MyShortcut(Keys.L, modifier);
            MyDebugConsole.GetInstance().RegisterShortcut(MyDebugSystem.Editor, category, "ShowPhysicsAABBUnderCursor", shortcut, OnShowPhysAABB);



            MyRender.RegisterRenderModule(MyRenderModuleEnum.PrefabContainerManager, "Prefab container manager", DebugDraw, MyRenderStage.DebugDraw);
            //@ check res if duplicity registration
        }
        public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            MyEffectVoxelsDebris effectVoxelsDebris = (MyEffectVoxelsDebris)shader;

            MyRenderVoxelDebris voxelDebris = renderElement.RenderObject as MyRenderVoxelDebris;

            //  Random texture coord scale and per-object random texture coord offset
            effectVoxelsDebris.SetTextureCoordRandomPositionOffset(voxelDebris.TextureCoordOffset);
            effectVoxelsDebris.SetTextureCoordScale(voxelDebris.TextureCoordScale);
            effectVoxelsDebris.SetDiffuseTextureColorMultiplier(voxelDebris.TextureColorMultiplier);
            
            Matrix m = (Matrix)renderElement.WorldMatrixForDraw;
            effectVoxelsDebris.SetViewWorldScaleMatrix(m * MyRenderCamera.ViewMatrixAtZero);
            
            effectVoxelsDebris.SetWorldMatrix(ref m);
            effectVoxelsDebris.SetDiffuseColor(Vector3.One);
            effectVoxelsDebris.SetEmissivity(0);

            effectVoxelsDebris.UpdateVoxelTextures(voxelDebris.VoxelMaterialIndex);
        }
        public sealed override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
        {
            base.SetupEntity(shader, renderElement);

            MyEffectModelsDNS effectDNS = shader as MyEffectModelsDNS;

            MyRenderCharacter character = renderElement.RenderObject as MyRenderCharacter;

            var bonesUsed = renderElement.BonesUsed;

            if (character.SkinMatrices != null)
            {
                if (bonesUsed == null)
                    for (int i = 0; i < Math.Min(character.SkinMatrices.Length, MyRenderConstants.MAX_SHADER_BONES); i++)
                        m_bonesBuffer[i] = character.SkinMatrices[i];
                else
                    for (int i = 0; i < bonesUsed.Length; i++)
                        m_bonesBuffer[i] = character.SkinMatrices[bonesUsed[i]];
                    
                 effectDNS.SetBones(m_bonesBuffer);
            }
        }
 public abstract void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement);
 /// <summary>
 /// Caller is responsible to call End when done with shader.
 /// </summary>
 public abstract MyEffectBase PrepareAndBeginShader(MyRender.MyRenderSetup setup, MyLodTypeEnum lodType);
 public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
 {
     SetupVoxelEntity(m_currentLod,shader, renderElement);
 }
 public override void SetupEntity(MyEffectBase shader, MyRender.MyRenderElement renderElement)
 {
     MyDrawTechniqueVoxelSingle.SetupVoxelEntity(m_currentLod,shader, renderElement);
 }