示例#1
0
        public void RenderDownscale(ViewportRenderingContext context, Component_RenderingPipeline.IFrameData frameData, Vector2I destinationSize, ref Component_Image actualTexture)
        {
            if (Technique.Value >= TechniqueEnum.SSAAx2 && Technique.Value <= TechniqueEnum.SSAAx4 && context.Owner.SizeInPixels != actualTexture.Result.ResultSize)
            {
                var rescaledTexture = context.RenderTarget2D_Alloc(context.Owner.SizeInPixels, actualTexture.Result.ResultFormat);

                //copy to scene texture with downscale
                {
                    context.SetViewport(rescaledTexture.Result.GetRenderTarget().Viewports[0]);

                    CanvasRenderer.ShaderItem shader = new CanvasRenderer.ShaderItem();
                    shader.VertexProgramFileName   = @"Base\Shaders\EffectsCommon_vs.sc";
                    shader.FragmentProgramFileName = @"Base\Shaders\Effects\DownscaleAntialiasing_fs.sc";

                    shader.Defines.Add(new CanvasRenderer.ShaderItem.DefineItem(Technique.Value.ToString().ToUpper()));

                    var multiplier = new Vector2F(1, 1) / destinationSize.ToVector2F() * (float)DownscaleSamplerMultiplier.Value;
                    shader.Parameters.Set("antialiasing_multiplier", multiplier);

                    shader.Parameters.Set(new ViewportRenderingContext.BindTextureData(0 /*"sourceTexture"*/,
                                                                                       actualTexture, TextureAddressingMode.Clamp, FilterOption.Linear, FilterOption.Linear, FilterOption.None));

                    context.RenderQuadToCurrentViewport(shader);
                }

                context.DynamicTexture_Free(actualTexture);

                actualTexture = rescaledTexture;
            }
        }
示例#2
0
        CefMouseEvent GetCurrentMouseEvent()
        {
            Vector2 pos        = viewSize.ToVector2F() * MousePosition;
            var     mouseEvent = new CefMouseEvent((int)pos.X, (int)pos.Y, GetCurrentKeyboardModifiers());

            return(mouseEvent);
        }
示例#3
0
		/////////////////////////////////////////

		protected virtual Vector2I GetDemandedSize()
		{
			Vector2I result;

			Vector2I viewportSize = ParentContainer.Viewport.SizeInPixels;
			result = ( viewportSize.ToVector2F() * GetScreenSize() ).ToVector2I();

			if( result.X < 1 )
				result.X = 1;
			if( result.Y < 1 )
				result.Y = 1;

			//fix max texture size
			if( result.X > RenderingSystem.Capabilities.MaxTextureSize || result.Y > RenderingSystem.Capabilities.MaxTextureSize )
			{
				double divideX = (double)result.X / (double)RenderingSystem.Capabilities.MaxTextureSize;
				double divideY = (double)result.Y / (double)RenderingSystem.Capabilities.MaxTextureSize;
				double divide = Math.Max( Math.Max( divideX, divideY ), 1 );
				if( divide != 1 )
				{
					result = ( result.ToVector2() / divide ).ToVector2I();
					if( result.X > RenderingSystem.Capabilities.MaxTextureSize )
						result.X = RenderingSystem.Capabilities.MaxTextureSize;
					if( result.Y > RenderingSystem.Capabilities.MaxTextureSize )
						result.Y = RenderingSystem.Capabilities.MaxTextureSize;
				}
			}

			return result;
		}
示例#4
0
        Vector2I GetNeededSize()
        {
            Vector2I result;

            //!!!!3D
            //UIContainerScreen screenControlManager = ParentContainer as UIContainerScreen;
            //if( screenControlManager != null )
            {
                //screen gui

                Vector2I viewportSize = ParentContainer.Viewport.SizeInPixels;

                Vector2 size = viewportSize.ToVector2F() * GetScreenSize();
                //if( screenControlManager.CanvasRenderer._OutGeometryTransformEnabled )
                //	size *= screenControlManager.CanvasRenderer._OutGeometryTransformScale;

                result = size.ToVector2I();
                //result = new Vec2I( (int)( size.X + .9999f ), (int)( size.Y + .9999f ) );
            }
            //else
            //{
            //	//in-game gui

            //	//!!!!
            //	int height = 800;// renderingIn3DHeightInPixels;
            //	Vector2 screenSize = GetScreenSize();
            //	double width = (double)height * ( screenSize.X / screenSize.Y ) * ParentContainer.AspectRatio;
            //	result = new Vector2I( (int)( width + .9999f ), height );

            //	//int height = inGame3DGuiHeightInPixels;
            //	//if( height > RenderSystem.Instance.Capabilities.MaxTextureSize )
            //	//   height = RenderSystem.Instance.Capabilities.MaxTextureSize;

            //	//Vec2 screenSize = GetScreenSize();
            //	//double width = (double)height * ( screenSize.X / screenSize.Y ) * GetControlManager().AspectRatio;
            //	//result = new Vec2I( (int)( width + .9999f ), height );
            //}

            if (result.X < 1)
            {
                result.X = 1;
            }
            if (result.Y < 1)
            {
                result.Y = 1;
            }

            //fix max texture size
            if (result.X > RenderingSystem.Capabilities.MaxTextureSize || result.Y > RenderingSystem.Capabilities.MaxTextureSize)
            {
                double divideX = (double)result.X / (double)RenderingSystem.Capabilities.MaxTextureSize;
                double divideY = (double)result.Y / (double)RenderingSystem.Capabilities.MaxTextureSize;
                double divide  = Math.Max(Math.Max(divideX, divideY), 1);
                if (divide != 1)
                {
                    result = (result.ToVector2() / divide).ToVector2I();
                    if (result.X > RenderingSystem.Capabilities.MaxTextureSize)
                    {
                        result.X = RenderingSystem.Capabilities.MaxTextureSize;
                    }
                    if (result.Y > RenderingSystem.Capabilities.MaxTextureSize)
                    {
                        result.Y = RenderingSystem.Capabilities.MaxTextureSize;
                    }
                }
            }

            return(result);
        }