/* ** Command & Conquer Generals Zero Hour(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ //////////////////////////////////////////////////////////////////////////////// // // // (c) 2001-2003 Electronic Arts Inc. // // // //////////////////////////////////////////////////////////////////////////////// // FILE: W3DShaderManager.h ///////////////////////////////////////////////////////// // // Custom shader system that allows more options and easier device validation than // possible with W3D2. // // Author: Mark Wilczynski, August 2001 // /////////////////////////////////////////////////////////////////////////////// #pragma once #ifndef __W3DSHADERMANAGER_H_ #define __W3DSHADERMANAGER_H_ #include "WW3D2/Texture.h" enum FilterTypes; enum CustomScenePassModes; enum StaticGameLODLevel; enum ChipsetType; enum CpuType; enum GraphicsVenderID; class TextureClass; ///forward reference /** System for managing complex rendering settings which are either not handled by WW3D2 or need custom paths depending on the video card. This system will determine the proper shader given video card limitations and also allow the app to query the hardware for specific features. */ class W3DShaderManager { public: //put any custom shaders (not going through W3D) in here. enum ShaderTypes { ST_INVALID, //invalid shader type. ST_TERRAIN_BASE, //shader to apply base terrain texture only ST_TERRAIN_BASE_NOISE1, //shader to apply base texture and cloud/noise 1. ST_TERRAIN_BASE_NOISE2, //shader to apply base texture and cloud/noise 2. ST_TERRAIN_BASE_NOISE12,//shader to apply base texture and both cloud/noise ST_SHROUD_TEXTURE, //shader to apply shroud texture projection. ST_MASK_TEXTURE, //shader to apply alpha mask texture projection. ST_ROAD_BASE, //shader to apply base terrain texture only ST_ROAD_BASE_NOISE1, //shader to apply base texture and cloud/noise 1. ST_ROAD_BASE_NOISE2, //shader to apply base texture and cloud/noise 2. ST_ROAD_BASE_NOISE12,//shader to apply base texture and both cloud/noise ST_CLOUD_TEXTURE, //shader to project clouds. ST_FLAT_TERRAIN_BASE, //shader to apply base terrain texture only ST_FLAT_TERRAIN_BASE_NOISE1, //shader to apply base texture and cloud/noise 1. ST_FLAT_TERRAIN_BASE_NOISE2, //shader to apply base texture and cloud/noise 2. ST_FLAT_TERRAIN_BASE_NOISE12,//shader to apply base texture and both cloud/noise ST_FLAT_SHROUD_TEXTURE, //shader to apply shroud texture projection. ST_MAX }; W3DShaderManager(void); ///