Graphics namespace

All the graphics system: rendering, shaders, models, lighting, textures,...

This namespace includes classes related to graphics rendering in the game. Some things included are models, textures and materials.


namespace GlobalState
namespace Renderer
This namespace contains most internal stuff related with rendering, such as Direct3D Device and shaders, shader data, etc.


class Animations
class cMaterialInfo
class cMaterialManager
The implementation of IMaterialManager; this should only be used for extending and detouring.
class cMITextureSet
class cModelManager
The implementation of IModelManager; this should only be used for extending and detouring.
template<typename T>
class CompiledShader
class cRenderManager
class cRenderTargetManager
class cTextureManager
The implementation of ITextureManager; this should only be used for extending and detouring.
struct FilterSettings
template<typename Vertex>
class GeneratedMesh
class GmdlRenderAsset
class IGraphicsManager
class ILightingManager
This manager handles the lighting configurations in the game.
class ILightingWorld
A lighting world is a space with a specific lighting configuration.
class IMaterialManager
This manager stores the information of materials, which are used to control the visual appearance of game objects.
class IModelManager
This manager stores the model worlds in the game; for more info, check the IModelWorld class.
class IModelWorld
A model world is a space where models can be rendered in the game.
class IRawImage
class IRenderable
This interface defines an object that can be rendered, and whose render method is called on every game loop.
class IRenderManager
This class manages the rendering process in the game.
class IRenderTargetManager
class IShadowManager
class ITextureManager
class IThumbnailManager
class LambdaRenderable
struct Light
class LightingProperties
class Material
Represents a material that controls the visual appearance of game objects.
class MaterialShader
class Model
class ModelAsset
class ModelMesh
struct MorphHandleInfo
struct NamedShaderDataUniform
class PlanetThumbnailRequest
struct PosNormalVertex
struct PosUvVertex
struct RenderererParams
class SequenceRenderable
An implementation of IRenderable that renders a sequence of IRenderables.
class ShaderBuilder
struct ShaderBuilderEntry
struct ShaderDataInformation
struct ShaderDataUniform
struct ShadowMapInfo
class StandardShader
struct StandardVertex
struct StandardVertexCompact
class Texture
class TextureContainer
class UnkMatManager


enum class ModelGroups: uint32_t { DeformHandle = 0x1BA53EA, DeformHandleOverdraw = 0x1BA53EB, Background = 0x223E8E0, Overdraw = 0x22FFF11, EffectsMask = 0x23008D4, TestEnv = 0x26F3933, PartsPaintEnv = 0xFE39DE0, Skin = 0xFEB8DF2, RotationRing = 0x31390732, RotationBall = 0x31390733, SocketConnector = 0x4FF4AF74, AnimatedCreature = 0x509991E6, TestMode = 0x509AA7C9, Vertebra = 0x513CDFC1, PaletteSkin = 0x71257E8B, ExcludeFromPinning = 0x900C6ADD, Palette = 0x900C6AE5, BallConnector = 0x900C6CDD, Rigblock = 0x9138FD8D, RigblockEffect = 0x4FE3913, GameBackground = 0x64AC354 }
enum (anonymous) { kRenderQueueMain = 8 }
enum class LayerIndices { ClearScene = 0, Planets = 7, PlanetRings = 8, TerrainRTT = 9, Terrain = 10, PlanetRibbons1 = 11, TerrainModels = 12, Level = 13, BlobShadows = 14, PreMain = 15, Main = 16, CreatureAnim = 17, PostMain = 18, CreatureFXAnim = 19, EffectsMask = 20, UI = 30 }
The available layer indices that can be used for adding renderers.
enum class CollisionMode: uint8_t { BoundingBox = 0, TightBoundingBox = 1, HullKDTree = 2, Lod0KDTree = 3 }
enum (anonymous) { kModelFlagUseColor = 0x2, kModelFlagObjectTypeColor = 0x8, kModelFlagOverrideRaycastMode = 0x100, kModelFlagHighRes = 0x2000, kModelFlagVisible = 0x8000, kModelFlagOverrideBoundingBox = 0x10000, kModelFlagOverrideBoundingRadius = 0x20000, kModelFlagNeedsBake = 0x40000 }


using VertexShader = CompiledShader<IDirect3DVertexShader9>
using PixelShader = CompiledShader<IDirect3DPixelShader9>
using ModelPredicate_t = bool(*)(Model*, void*)
using RenderTargetTexture = RenderWare::Raster
using RTT = RenderTargetTexture
using TextureVector_t = vector<intrusive_ptr<Texture>>


ASSERT_SIZE(cMaterialInfo, 0x1C)
auto Addresses(cMaterialManager) -> namespace
ASSERT_SIZE(cMITextureSet::Entry, 0x10)
ASSERT_SIZE(cMITextureSet, 0x70)
auto Addresses(CompiledShader) -> namespace
auto GetVertexShaders() -> vector<VertexShader>&
auto GetPixelShaders() -> vector<PixelShader>&
void ReadCompiledVertexShaders(IO::IStream* pStream)
void ReadCompiledPixelShaders(IO::IStream* pStream)
auto GenerateScreenPlane(float z = 0.0) -> GeneratedMesh<PosUvVertex>*
auto Addresses(GlobalState) -> namespace
auto Addresses(IGraphicsManager) -> namespace
auto Addresses(ILightingManager) -> namespace
auto Addresses(IMaterialManager) -> namespace
auto Addresses(IModelManager) -> namespace
ASSERT_SIZE(MorphHandleInfo, 0x5C)
auto Addresses(IModelWorld) -> namespace
void GetMousePosition(int& mouseX, int& mouseY)
auto Addresses(IRenderManager) -> namespace
auto Addresses(IRenderTargetManager) -> namespace
auto GetMainColorRTT() -> RenderTargetTexture*
auto GetMainDepthRTT() -> RenderTargetTexture*
auto Addresses(IShadowManager) -> namespace
auto Addresses(ITextureManager) -> namespace
ASSERT_SIZE(PlanetThumbnailRequest, 0x2C)
auto Addresses(IThumbnailManager) -> namespace
auto Addresses(MaterialShader) -> namespace
auto Addresses(Model) -> namespace
ASSERT_SIZE(ModelMesh, 0x100)
auto Addresses(Renderer) -> namespace
ASSERT_SIZE(SequenceRenderable, 0x20)
auto Addresses(ShaderBuilder) -> namespace
auto Addresses(StandardShader) -> namespace

Enum documentation

enum class Graphics::ModelGroups: uint32_t

enum class Graphics::LayerIndices

The available layer indices that can be used for adding renderers.

Most of these have been copied from Darkspore globals.lua, so they might not match for Spore.

enum class Graphics::CollisionMode: uint8_t


Just intersect with the bounding box.



Check intersection with the hull mesh.


Check intersection with the LOD0 mesh.

enum Graphics::(anonymous)

Typedef documentation

typedef CompiledShader<IDirect3DVertexShader9> Graphics::VertexShader

typedef CompiledShader<IDirect3DPixelShader9> Graphics::PixelShader

typedef bool(*Graphics::ModelPredicate_t)(Model*, void*)

typedef vector<intrusive_ptr<Texture>> Graphics::TextureVector_t

Function documentation

namespace Graphics::Addresses(GlobalState)

namespace Graphics::Addresses(IModelWorld)

void Graphics::GetMousePosition(int& mouseX, int& mouseY)

namespace Graphics::Addresses(Model)

namespace Graphics::Addresses(Renderer)