//--------------------------------------------------------------------------------------------------------------------------------------------------- // <copyright file="ShaderParameters.cs" company="DarkWynter Studios"> // Copyright (C)2007 DarkWynter Studios. All rights reserved. // </copyright> //--------------------------------------------------------------------------------------------------------------------------------------------------- // {License Information: Creative Commons} //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace DarkWynterEngine.Globals { #region Using Statements using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; #endregion /// <summary> /// Provides global handles to shader api. /// Provides global access bridge to shader Uniform and Texture variables. /// </summary> public class ShaderParameters { /// <summary> /// Draw effects file (HLSL) /// </summary> public static Effect effect_draw; /// <summary> /// Update effects file (HLSL) /// </summary> public static Effect effect_update; /// <summary> /// Update effects file (HLSL) /// </summary> public static Effect effect_aiVision; #region Global access bridge to shader Uniform and Texture variables /// <summary> /// View Projection Matrix of Player. /// </summary> /// <summary> /// ViewxProjection Matrix /// </summary> public static EffectParameter ViewProj; /// <summary> /// World Transformation Matrix of object being drawn. /// </summary> public static EffectParameter World; /// <summary> /// Eye Position based on the inverse of the View matrix /// </summary> public static EffectParameter EyePostion; /// <summary> /// Boolean Player is Dead, indicating playerDead shader should activate. /// </summary> public static EffectParameter playerIsDead; /// <summary> /// Position of light 0. /// </summary> public static EffectParameter lightPosition0; /// <summary> /// Ambient color of light 0. /// </summary> public static EffectParameter lightAmbient0; /// <summary> /// Diffuse color of light 0. /// </summary> public static EffectParameter lightDiffuse0; /// <summary> /// Specular color of light 0. /// </summary> public static EffectParameter lightSpecular0; /// <summary> /// Position of light 1. /// </summary> public static EffectParameter lightPosition1; /// <summary> /// Ambient color of light 1. /// </summary> public static EffectParameter lightAmbient1; /// <summary> /// Diffuse color of light 1. /// </summary> public static EffectParameter lightDiffuse1; /// <summary> /// Specular color of light 1. /// </summary> public static EffectParameter lightSpecular1; /// <summary> /// Shininess of object being drawn. /// </summary> public static EffectParameter shininess; /// <summary> /// Energy state of particle being drawn. /// </summary> public static EffectParameter particleEnergyValue; /// <summary> /// Diffuse color of object's material. /// </summary> public static EffectParameter materialDiffuse; /// <summary> /// Specular color of object's material. /// </summary> public static EffectParameter materialSpecular; /// <summary> /// Minimum Y value of the terrain /// </summary> public static EffectParameter worldMinY; /// <summary> /// Maximum Y value of the terrain /// </summary> public static EffectParameter worldMaxY; /// <summary> /// Time delay for screen saver activation /// </summary> public static EffectParameter screenSaverTime; /// <summary> /// Terrain Mod enabled/disabled /// </summary> public static EffectParameter terrainModEnabled; /// <summary> /// Intersecting point between terrainMod lookAt ray, and the terrain it intersects. /// </summary> public static EffectParameter PlaneRayIntersectionPoint; /// <summary> /// Range at which terrainMod will work. /// </summary> public static EffectParameter TerrainModRange; /// <summary> /// Location of Current Player on the board during shader pass. /// </summary> public static EffectParameter playerPosition; /// <summary> /// /// </summary> public static EffectParameter terrainMapSize; /// <summary> /// Scaling factor of the terrain /// </summary> public static EffectParameter terrainScaleFactor; /// <summary> /// /// </summary> public static EffectParameter terrainBarrierWallHeight; /// <summary> /// First texture to be used in multi-texturing /// </summary> public static EffectParameter modelTexture1; /// <summary> /// Model Texture 2 shader location. /// </summary> public static EffectParameter modelTexture2; /// <summary> /// Model Texture 3 shader location. /// </summary> public static EffectParameter modelTexture3; /// <summary> /// Model Texture 4 shader location. /// </summary> public static EffectParameter modelTexture4; /// <summary> /// Model Texture 5 shader location. /// </summary> public static EffectParameter modelTexture5; /// <summary> /// Model Texture 6 shader location. /// </summary> public static EffectParameter modelTexture6; /// <summary> /// Bump Texture 1 shader location. /// </summary> public static EffectParameter bumpTexture1; /// <summary> /// Bump Texture 2 shader location. /// </summary> public static EffectParameter bumpTexture2; /// <summary> /// Bump Texture 3 shader location. /// </summary> public static EffectParameter bumpTexture3; /// <summary> /// Bump Texture 4 shader location. /// </summary> public static EffectParameter bumpTexture4; /// <summary> /// Bump Texture 5 shader location. /// </summary> public static EffectParameter bumpTexture5; /// <summary> /// Bump Texture 6 shader location. /// </summary> public static EffectParameter bumpTexture6; /// <summary> /// TerrainMod Texture shader location. /// </summary> public static EffectParameter terrainModTexture; /// <summary> /// Terrain HeightMap Texture shader location. /// </summary> public static EffectParameter heightMapTexture; /// <summary> /// Terrain Normal Map Texture shader location. /// </summary> public static EffectParameter terrainNormalMapTexture; /// <summary> /// Number of players in the game. /// </summary> public static EffectParameter numberOfPlayers; /// <summary> /// Range between minimum and maximum numerical values for gpgpu physics. /// </summary> /// <summary> /// Scale range /// </summary> public static EffectParameter scaleRange; /// <summary> /// Minimum value of numerical vavlues for gpgpu physics. /// </summary> public static EffectParameter minimumValue; /// <summary> /// The size of the board. /// Calculated as [Terrain Scale Factor * Vertex Map Size] /// </summary> public static EffectParameter mapSizeXScaleFactor; /// <summary> /// Fog start distance /// </summary> public static EffectParameter fogStart; /// <summary> /// Fog end distance /// </summary> public static EffectParameter fogEnd; #endregion /// <summary> /// Shader Parameters constructor. /// Loads Draw shader file from disk. /// Associates all cpu effectparameters with gpu counterpart variables. /// </summary> /// <summary> /// Constructor /// </summary> public ShaderParameters() { // Set up Uniform shader connections ShaderParameters.effect_draw = Statics.SystemSettings.content.Load<Effect>("Content/_shaders/ElementalGPU"); ShaderParameters.effect_update = Statics.SystemSettings.content.Load<Effect>("Content/_shaders/GpuCollisionPhysics"); LoadParameters(); } /// <summary> /// Associates all cpu effectparameters with gpu counterpart variables. /// </summary> private void LoadParameters() { try { // Std Matrix ViewProj = ShaderParameters.effect_draw.Parameters["ViewProj"]; World = ShaderParameters.effect_draw.Parameters["World"]; // Lighting lightPosition0 = ShaderParameters.effect_draw.Parameters["lightPosition0"]; lightAmbient0 = ShaderParameters.effect_draw.Parameters["lightAmbient0"]; lightDiffuse0 = ShaderParameters.effect_draw.Parameters["lightDiffuse0"]; lightSpecular0 = ShaderParameters.effect_draw.Parameters["lightSpecular0"]; lightPosition1 = ShaderParameters.effect_draw.Parameters["lightPosition1"]; lightAmbient1 = ShaderParameters.effect_draw.Parameters["lightAmbient1"]; lightDiffuse1 = ShaderParameters.effect_draw.Parameters["lightDiffuse1"]; lightSpecular1 = ShaderParameters.effect_draw.Parameters["lightSpecular1"]; shininess = ShaderParameters.effect_draw.Parameters["shininess"]; materialDiffuse = ShaderParameters.effect_draw.Parameters["materialDiffuse"]; materialSpecular = ShaderParameters.effect_draw.Parameters["materialSpecular"]; // Shadow EyePostion = ShaderParameters.effect_draw.Parameters["EyePostion"]; // Particle Shader particleEnergyValue = ShaderParameters.effect_draw.Parameters["particleEnergyValue"]; // Multi- Texturing modelTexture1 = ShaderParameters.effect_draw.Parameters["modelTexture1"]; modelTexture2 = ShaderParameters.effect_draw.Parameters["modelTexture2"]; modelTexture3 = ShaderParameters.effect_draw.Parameters["modelTexture3"]; modelTexture4 = ShaderParameters.effect_draw.Parameters["modelTexture4"]; modelTexture5 = ShaderParameters.effect_draw.Parameters["modelTexture5"]; modelTexture6 = ShaderParameters.effect_draw.Parameters["modelTexture6"]; bumpTexture1 = ShaderParameters.effect_draw.Parameters["bumpTexture1"]; bumpTexture2 = ShaderParameters.effect_draw.Parameters["bumpTexture2"]; bumpTexture3 = ShaderParameters.effect_draw.Parameters["bumpTexture3"]; bumpTexture4 = ShaderParameters.effect_draw.Parameters["bumpTexture4"]; bumpTexture5 = ShaderParameters.effect_draw.Parameters["bumpTexture5"]; bumpTexture6 = ShaderParameters.effect_draw.Parameters["bumpTexture6"]; // Terrain heightMapTexture = ShaderParameters.effect_draw.Parameters["heightMapTexture"]; terrainMapSize = ShaderParameters.effect_draw.Parameters["terrainMapSize"]; terrainScaleFactor = ShaderParameters.effect_draw.Parameters["terrainScaleFactor"]; terrainNormalMapTexture = ShaderParameters.effect_draw.Parameters["terrainNormalMapTexture"]; terrainBarrierWallHeight = ShaderParameters.effect_draw.Parameters["terrainBarrierWallHeight"]; // Terrain Mod Range TerrainModRange = ShaderParameters.effect_draw.Parameters["TerrainModRange"]; terrainModTexture = ShaderParameters.effect_draw.Parameters["terrainModTexture"]; terrainModEnabled = ShaderParameters.effect_draw.Parameters["terrainModEnabled"]; playerIsDead = ShaderParameters.effect_draw.Parameters["playerIsDead"]; screenSaverTime = ShaderParameters.effect_draw.Parameters["screenSaverTime"]; worldMinY = ShaderParameters.effect_draw.Parameters["worldMinY"]; worldMaxY = ShaderParameters.effect_draw.Parameters["worldMaxY"]; PlaneRayIntersectionPoint = ShaderParameters.effect_draw.Parameters["PlaneRayIntersectionPoint"]; playerPosition = ShaderParameters.effect_draw.Parameters["playerPosition"]; mapSizeXScaleFactor = ShaderParameters.effect_draw.Parameters["mapSizeXScaleFactor"]; // AI Vision stuff numberOfPlayers = ShaderParameters.effect_draw.Parameters["numberOfPlayers"]; scaleRange = ShaderParameters.effect_draw.Parameters["scaleRange"]; minimumValue = ShaderParameters.effect_draw.Parameters["minimumValue"]; fogStart = ShaderParameters.effect_draw.Parameters["fogStart"]; fogEnd = ShaderParameters.effect_draw.Parameters["fogEnd"]; } catch { throw new Exception("missing param"); } } } }