public void SetHalfPixel(int screenSizeX, int screenSizeY)
        {
            Vector2 halfPixel = MyUtilsRender9.GetHalfPixel(screenSizeX, screenSizeY);

            m_D3DEffect.SetValue(m_halfPixel, halfPixel);
            m_D3DEffect.SetValue(m_fullPixel, 2.0f * halfPixel);
        }
Exemple #2
0
        /// <summary>
        /// Render method is called directly by renderer. Depending on stage, post process can do various things
        /// </summary>
        /// <param name="postProcessStage">Stage indicating in which part renderer currently is.</param>public override void RenderAfterBlendLights()
        public override Texture Render(PostProcessStage postProcessStage, Texture source, Texture availableRenderTarget)
        {
            switch (postProcessStage)
            {
            case PostProcessStage.AlphaBlended:
            {
                MyRender.SetRenderTarget(availableRenderTarget, null);
                MyEffectContrast effectContrast = MyRender.GetEffect(MyEffects.Contrast) as MyEffectContrast;


                effectContrast.SetDiffuseTexture(source);
                effectContrast.SetHalfPixel(MyUtilsRender9.GetHalfPixel(source.GetLevelDescription(0).Width, source.GetLevelDescription(0).Height));
                effectContrast.SetContrast(Contrast);
                effectContrast.SetHue(Hue);
                effectContrast.SetSaturation(Saturation);

                MyRender.GetFullscreenQuad().Draw(effectContrast);

                return(availableRenderTarget);
            }
            break;
            }

            return(source);
        }
        /// <summary>
        /// Checks the normal map.
        /// </summary>
        /// <param name="texture">The texture.</param>
        private static void CheckTexture(MyTexture texture)
        {
            System.Diagnostics.Debug.Assert(texture != null, "Voxel texture missing");
            MyUtilsRender9.AssertTexture((MyTexture2D)texture);

            texture.TextureLoaded -= CheckTexture;
        }
Exemple #4
0
 public void SetHalfPixel(int screenSizeX, int screenSizeY)
 {
     if (m_screenSizeXLocal != screenSizeX || m_screenSizeYLocal != screenSizeY)
     {
         m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(screenSizeX, screenSizeY));
         m_screenSizeXLocal = screenSizeX;
         m_screenSizeYLocal = screenSizeY;
     }
 }
Exemple #5
0
        public override void LoadContent()
        {
            MyRender.Log.WriteLine("MyDecals.LoadContent() - START");
            MyRender.Log.IncreaseIndent();
            MyRender.GetRenderProfiler().StartProfilingBlock("MyDecals::LoadContent");

            //  Reason is that if count of neighbour triangles is more then decal triangles buffer, we won't be able to add any triangleVertexes to the buffer.
            MyDebug.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER > MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES);

            MyDebug.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE <= MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);
            MyDebug.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL <= MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER);

            //  Reason is that if count of neighbour triangles is more then decal triangles buffer, we won't be able to add any triangleVertexes to the buffer.
            MyDebug.AssertRelease(MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER > MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES);

            //  Reason is that if count of neighbour triangles is more then this fade limit, we won't be able to add decals that lay on more triangles, because buffer will be never released to us.
            MyDebug.AssertRelease(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES < (MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT));

            //  Reason is that if count of neighbour triangles is more then this fade limit, we won't be able to add decals that lay on more triangles, because buffer will be never released to us.
            MyDebug.AssertRelease(MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES < (MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT));

            //  Large must be bigger than small
            MyDebug.AssertRelease(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES > MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES);

            m_vertices = new MyVertexFormatDecal[MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER * MyDecalsConstants.VERTEXES_PER_DECAL];
            // m_neighbourTriangles = new List<MyTriangle_Vertex_Normals>(MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES);

            m_decalsForModels = new MyDecalsForRenderObjects(MyDecalsConstants.DECAL_BUFFERS_COUNT);
            m_decalsForVoxels = new MyDecalsForVoxels(MyDecalsConstants.DECAL_BUFFERS_COUNT);

            //  Decal textures
            int texturesCount = MyEnumsToStrings.Decals.Length;

            m_texturesDiffuse   = new MyTexture2D[texturesCount];
            m_texturesNormalMap = new MyTexture2D[texturesCount];

            for (int i = 0; i < texturesCount; i++)
            {
                //MyRender.Log.WriteLine("textureManager " + i.ToString() + "Textures\\Decals\\" + MyEnumsToStrings.Decals[i] + "_Diffuse", SysUtils.LoggingOptions.MISC_RENDER_ASSETS);
                m_texturesDiffuse[i] = MyTextureManager.GetTexture <MyTexture2D>("Textures\\Decals\\" + MyEnumsToStrings.Decals[i] + "_Diffuse.dds", "", null, LoadingMode.Immediate);
                //MyRender.Log.WriteLine("textureManager " + i.ToString() + "Textures\\Decals\\" + MyEnumsToStrings.Decals[i] + "_NormalMap", SysUtils.LoggingOptions.MISC_RENDER_ASSETS);
                m_texturesNormalMap[i] = MyTextureManager.GetTexture <MyTexture2D>("Textures\\Decals\\" + MyEnumsToStrings.Decals[i] + "_NormalMap.dds", "", CheckTexture, LoadingMode.Immediate);

                MyUtilsRender9.AssertTexture(m_texturesNormalMap[i]);
            }

            MyRender.GetRenderProfiler().EndProfilingBlock();
            MyRender.Log.DecreaseIndent();
            MyRender.Log.WriteLine("MyDecals.LoadContent() - END");
        }
Exemple #6
0
 /// <summary>
 /// Called when [loaded].
 /// </summary>
 protected override void OnLoaded()
 {
     base.OnLoaded();
     if (MyUtilsRender9.IsTextureMipMapped(this) == false)
     {
         //MyRender.Log.IncreaseIndent();
         MyRender.Log.WriteLine("TextureNotMipMapped " + this.Name.ToString());
         //MyRender.Log.DecreaseIndent();
     }       /*
              * if (MyUtils.IsTextureDxtCompressed(this) == false)
              * {
              * MyPerformanceCounter.PerAppLifetime.NonDxtCompressedTexturesCount++;
              * //MyRender.Log.IncreaseIndent();
              * MyRender.Log.WriteLine("TextureNotCompressed " + this.Name.ToString());
              * //MyRender.Log.DecreaseIndent();
              * }     */
 }
Exemple #7
0
 public void SetHalfPixel(int screenSizeX, int screenSizeY)
 {
     m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(screenSizeX, screenSizeY));
 }
        /// <summary>
        /// Checks the normal map.
        /// </summary>
        /// <param name="texture">The texture.</param>
        private static void CheckTexture(MyTexture texture)
        {
            MyUtilsRender9.AssertTexture((MyTexture2D)texture);

            texture.TextureLoaded -= CheckTexture;
        }
 public void SetDepthRT(Texture depthRT)
 {
     m_D3DEffect.SetTexture(m_depthRT, depthRT);
     m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(depthRT.GetLevelDescription(0).Width, depthRT.GetLevelDescription(0).Height));
 }
Exemple #10
0
        public void SetHalfPixelAndScale(int screenSizeX, int screenSizeY, Vector2 scale)
        {
            Vector2 halfPixel = MyUtilsRender9.GetHalfPixel(screenSizeX, screenSizeY);

            m_D3DEffect.SetValue(m_halfPixelAndScale, new Vector4(halfPixel.X, halfPixel.Y, scale.X, scale.Y));
        }
        public static void Draw()
        {
            if (!Visible)
            {
                return;
            }

            MyRenderModel model = MyRenderModels.GetModel(Model);//MySession.Static.PlayerShip.CockpitGlassModelEnum);

            RasterizerState.CullNone.Apply();

            MyStateObjects.DepthStencil_StencilReadOnly.Apply();

            BlendState.NonPremultiplied.Apply();

            MyEffectCockpitGlass effect = (MyEffectCockpitGlass)MyRender.GetEffect(MyEffects.CockpitGlass);

            effect.SetGlassDirtLevelAlpha(new Vector4(GlassDirtAlpha, 0, 0, 0));

            var     inMatrix = PlayerHeadForCockpitInteriorWorldMatrix;
            MatrixD drawMatrix;

            MatrixD.Multiply(ref inMatrix, ref MyRenderCamera.InversePositionTranslationMatrix, out drawMatrix);

            effect.SetWorldMatrix((Matrix)drawMatrix);
            effect.SetViewMatrix((Matrix)MyRenderCamera.ViewMatrix);

            Matrix projection = MyRenderCamera.ProjectionMatrixForNearObjects;

            effect.SetWorldViewProjectionMatrix((Matrix)(drawMatrix * MyRenderCamera.ViewMatrixAtZero * projection));

            MyRenderMeshMaterial cockpitMaterial = model.GetMeshList()[0].Material;

            cockpitMaterial.PreloadTexture();
            effect.SetCockpitGlassTexture(cockpitMaterial.DiffuseTexture);

            Texture depthRT = MyRender.GetRenderTarget(MyRenderTargets.Depth);

            effect.SetDepthTexture(depthRT);

            effect.SetHalfPixel(MyUtilsRender9.GetHalfPixel(depthRT.GetLevelDescription(0).Width, depthRT.GetLevelDescription(0).Height));

            Vector4 sunColor = MyRender.Sun.Color;

            effect.SetSunColor(new Vector3(sunColor.X, sunColor.Y, sunColor.Z));

            effect.SetDirectionToSun(-MyRender.Sun.Direction);

            effect.SetAmbientColor(Vector3.Zero);
            effect.SetReflectorPosition((Vector3)((Vector3)MyRenderCamera.Position - 4 * MyRenderCamera.ForwardVector));

            if (MyRender.RenderLightsForDraw.Count > 0)
            {
                effect.SetNearLightColor(MyRender.RenderLightsForDraw[0].Color);
                effect.SetNearLightRange(MyRender.RenderLightsForDraw[0].Range);
            }

            MyRender.GetShadowRenderer().SetupShadowBaseEffect(effect);
            effect.SetShadowBias(0.001f);

            MyLights.UpdateEffect(effect, true);

            effect.Begin();
            model.Render();
            effect.End();

            //MyDebugDraw.DrawSphereWireframe(PlayerHeadForCockpitInteriorWorldMatrix, Vector3.One, 1);
        }
 public void SetHalfPixel(int width, int height)
 {
     m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(width, height));
 }
Exemple #13
0
 public void SetSourceTexture(Texture renderTarget2D)
 {
     m_D3DEffect.SetTexture(m_source, renderTarget2D);
     m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(renderTarget2D.GetLevelDescription(0).Width, renderTarget2D.GetLevelDescription(0).Height));
 }
        public void SetDiffuseTexture(Texture dt)
        {
            m_D3DEffect.SetTexture(m_diffuseTexture, dt);

            SetHalfPixel(MyUtilsRender9.GetHalfPixel(dt.GetLevelDescription(0).Width, dt.GetLevelDescription(0).Height));
        }
Exemple #15
0
 public void SetEnvironmentMap(CubeTexture environmentMap)
 {
     m_D3DEffect.SetTexture(m_environmentMap, environmentMap);
     m_D3DEffect.SetValue(m_halfPixel, MyUtilsRender9.GetHalfPixel(environmentMap.GetLevelDescription(0).Width, environmentMap.GetLevelDescription(0).Height));
 }