public DelegateParameterBinding <T> Set <T>(EffectParameter parameter, Func <DelegateParameterBinding <T>, RenderContext, T> computeParameter) { DelegateParameterBinding <T> binding; int index = ParameterBindings.IndexOf(parameter); if (index >= 0) { // An effect parameter binding already exists. binding = ParameterBindings[index] as DelegateParameterBinding <T>; if (binding != null) { // Update existing binding. binding.ComputeParameter = computeParameter; } else { // Replace existing binding. binding = new DelegateParameterBinding <T>(Effect, parameter, computeParameter); ParameterBindings[index] = binding; } } else { // Create a new binding. binding = new DelegateParameterBinding <T>(Effect, parameter, computeParameter); CheckHint(binding); ParameterBindings.Add(binding); } return(binding); }
private static Vector4 GetDebug(DelegateParameterBinding <Vector4> binding, RenderContext context) { if (binding.Description.Index == 0) { return(Debug0); } if (binding.Description.Index == 1) { return(Debug1); } return(new Vector4(0, 0, 0, 0)); }
private static Texture2D GetDetailClipmapTexture(DelegateParameterBinding <Texture2D> binding, RenderContext context) { var usage = binding.Description; int index = (usage != null) ? usage.Index : 0; var textures = GetTerrainNode(context).DetailClipmap.Textures; if (index < textures.Length) { return(textures[index]); } return(null); }
private static Texture2D GetLightBuffer(DelegateParameterBinding <Texture2D> binding, RenderContext context) { if (binding.Description.Index == 0) { return(context.LightBuffer0); } if (binding.Description.Index == 1) { return(context.LightBuffer1); } return(null); }
private static float GetBaseClipmapCellSize(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).BaseClipmap.CellSizes[0]); }
private static float GetHoleThreshold(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).HoleThreshold); }
private static Vector2 GetTerrainHoleTextureSize(DelegateParameterBinding <Vector2> binding, RenderContext context) { var texture = GetTerrainHoleTexture(null, context); return(new Vector2(texture.Width, texture.Height)); }
private static float GetPassIndexAsSingle(DelegateParameterBinding <float> binding, RenderContext context) { return(Math.Max(context.PassIndex, 0.0f)); }
private static float GetDetailFadeRange(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).DetailFadeRange); }
private static float GetDetailClipmapNumberOfColumns(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).DetailClipmap.NumberOfTextureAtlasColumns); }
private static Texture2D GetSourceTexture2D(DelegateParameterBinding <Texture2D> binding, RenderContext context) { return(context.SourceTexture); }
//private Vector2 GetRenderTargetSize(DelegateParameterBinding<Vector2> binding, RenderContext context) //{ // var renderTarget = context.RenderTarget; // if (renderTarget != null) // return new Vector2(renderTarget.Width, renderTarget.Height); // var presentationParameters = context.GraphicsService.GraphicsDevice.PresentationParameters; // return new Vector2(presentationParameters.BackBufferWidth, presentationParameters.BackBufferHeight); //} private static Vector2 GetViewportSize(DelegateParameterBinding <Vector2> binding, RenderContext context) { var viewport = context.GraphicsService.GraphicsDevice.Viewport; return(new Vector2(viewport.Width, viewport.Height)); }
private static float GetElapsedTime(DelegateParameterBinding <float> binding, RenderContext context) { return((float)context.DeltaTime.TotalSeconds); }
private static float GetLastTime(DelegateParameterBinding <float> binding, RenderContext context) { return((float)(context.Time - context.DeltaTime).TotalSeconds); }
private static float GetBaseClipmapNumberOfLevels(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).BaseClipmap.NumberOfLevels); }
private static Vector2 GetTerrainOrigin(DelegateParameterBinding <Vector2> binding, RenderContext context) { var terrainTile = GetTerrainTile(context); return(new Vector2(terrainTile.OriginX, terrainTile.OriginZ)); }
private static float GetDetailClipmapCellsPerLevel(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).DetailClipmap.CellsPerLevel); }
private static Vector2 GetTerrainSize(DelegateParameterBinding <Vector2> binding, RenderContext context) { var terrainTile = GetTerrainTile(context); return(new Vector2(terrainTile.WidthX, terrainTile.WidthZ)); }
private static float GetDetailClipmapLevelBias(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).DetailClipmap.LevelBias); }
private static Texture2D GetTerrainHoleTexture(DelegateParameterBinding <Texture2D> binding, RenderContext context) { return(GetTerrainTile(context).HoleTexture ?? context.GraphicsService.GetDefaultTexture2DWhite()); }
private static float GetDetailEnableAnisotropicFiltering(DelegateParameterBinding <float> binding, RenderContext context) { return(GetTerrainNode(context).DetailClipmap.EnableAnisotropicFiltering ? 1 : 0); }
private static int GetPassIndexAsInt32(DelegateParameterBinding <int> binding, RenderContext context) { return(Math.Max(context.PassIndex, 0)); }