Repository navigation
Releases: mariuz/castle-doom3
Release list
Castle Doom 3 0.12.0
Shadows from big md5 models.
- md5 shadow hulls: md5 meshes over 1500 triangles (retail monsters) used not to cast at all, because CGE searches silhouette edges quadratically and again on every animation frame. They now cast with one closed box per joint, around the vertexes the joint moves, shrunk to stay inside the body and moved by a per-joint matrix transform, so their edges never change.
- Console
r_md5ShadowTris <n>: the triangle limit (reloads the map; 0 makes every md5 model cast with boxes). - Shots log which monster they hit.
- 296 checks (joint matrices match skinning, boxes are closed and face out, box counts); CI checks the boxes are built.
Still one shadow casting light: more need shadow volume or cube shadow map support for several point lights in CGE (roadmap item 2).
Downloads: Windows (x86_64) .zip and Linux (x86_64) .tar.gz below. They include only the generated test level; point -basepath at a Doom 3 install to load its data.
Castle Doom 3 0.11.0
More material stages.
- Every plain stage is drawn: stages after the first one (and the first plain stage of lit materials) are overlays, copies of the surface a little in front of it with their own unlit, blended appearance, texture matrix and animated color. Glowing strips on lit walls and doors now show.
deform sprite: each quad becomes a camera facing billboard of the same size.- Glass: materials whose only stages are reflections, heat haze, mirrors or videos are drawn as a faint additive tint instead of disappearing.
- A
cubeMapis a sky only withtexgen skybox/wobblesky(glass reflects cube maps too). - Test level: the door has pulsing glow strips over its lit metal, a glass pane and a flare in room A.
- 289 checks (extra stages, overlays, glass, sprites); CI checks the stage counts in the log.
Downloads: Windows (x86_64) .zip and Linux (x86_64) .tar.gz below. They include only the generated test level; point -basepath at a Doom 3 install to load its data.
Castle Doom 3 0.10.0
More shadows.
- Walls and pillars cast shadows: the level's
.cmbrushes (solid / opaque contents) are rebuilt as closed convex shadow casters 1 unit inside the walls (the render geometry of areas is open and can't cast). They also stop the shadow light from shining through walls. Grouped per area, enabled for visible areas and the areas the shadow light reaches. noshadows: materials with it don't cast (X3DshadowCaster), lights or light shaders with it are never the shadow casting light.- Test level: solid brushes for walls, floors, ceilings, pillars and the balcony in its
.cm. - 269 checks (brush polyhedra are closed, insets, casters of the test level,
noshadows); CI checks the casters are built.
Still one shadow casting light at a time (CGE's shadow volumes).
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.9.0
GUIs.
- Doom 3 GUIs (
.gui) onguisurfsurfaces: windowDef trees withrect,backcolor,matcolor,background, borders,text(alsogui::state from the entity'sgui_*keys,\nline breaks),textscale,textalign,forecolor,visible, drawn in software into a 640 x 480 image with CGE's built-in font and shown on the surface.guisurf entity/entity2/entity3use the entity'sgui/gui2/gui3keys,guisurf <path>names the GUI. - Brush entities and static models (LWO / ASE screens) pass their entity to their GUI surfaces.
- Test level: a door panel GUI with the entity's text and a status screen.
- 257 checks (parsing, rendered pixels, state, caching); CI checks both GUIs are rendered.
Not yet: GUI events and scripts, the cursor, Doom 3's own fonts.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.8.0
Material stages.
- Texture matrices:
scroll/translate,scale,centerScale,shearandrotatewith expressions, composed like Doom 3'sMultiplyTextureMatrix, as CGETextureTransformMatrix3Dnodes: scrolling screens, moving fluids, rotating fans. - Animated surface colors:
rgb/red/ ... /alpharegisters on glow and blend stages (pulsing panels, fading decals), updated every frame. - Skies:
cameraCubeMap/cubeMapsky materials become a CGE skybox (TCastleBackground); the sky surfaces themselves aren't drawn. - Test level: scrolling terminal screens, pulsing ceiling panels, a skylight in room B.
- 231 checks (texture matrices, stage parsing, skies); CI checks the sky is set up.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.7.0
Shadows.
- Stencil shadows with CGE's shadow volumes: every frame the strongest light at the player (lights in the player's area first, ambient lights never) casts shadows of brush entities (doors, crates, movers), static models and md5 models (up to 1500 triangles). Area geometry receives shadows.
- Console
r_shadows [0|1]; screenshot log lines name the shadow casting light. - 213 checks; CI checks the shadow light is chosen.
Known limitation: one shadow casting light at a time (CGE's shadow volumes), and walls don't cast shadows.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.6.0
Light volumes.
- Doom 3 light volumes: lights don't fade with distance any more; like Doom 3 each lights a box (point lights,
light_radius,rotation) or a frustum (projected lights,light_target/light_right/light_up,light_start/light_end), mapped to the light's texture space likelightProject, shaped by projection and falloff curves. Implemented as a per-light CGE shader effect (PLUG_light_scale) reading the fragment's world position. - Lights without a
textureuse Doom 3'slights/defaultPointLight/lights/defaultProjectedLightwhen the game data declares them. shaderParm4is the light shader's time offset, like Doom 3.- Console
r_lightVolumes [0|1]reloads the map with plain spherical lights for comparison. - Fixed: a shut door was hidden by portal visibility when seen from the room on its other side (it now belongs to the areas on both sides of its portal).
- Test level: a projected window light, Doom 3-style default light shaders and light images.
- 210 checks (light texture space, projected lights, shapes).
Known limitation: projection and falloff images are approximated by analytic shapes chosen from the image name (CGE doesn't bind textures referenced only by light effects).
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.5.0
Light shaders.
- Material expressions and tables (
Doom3Expressions):time,parm0-11,global0-7,table[...]lookups (snap,clamp, wrapping and interpolation like Doom 3), arithmetic, comparisons,&&/||, with Doom 3's operator priorities. - Animated lights: light shaders' color registers (
red,green,blue,rgb,rgba,color,colored) are evaluated every frame with the light's_colorandshaderParms, so strobes, flickers and pulses work. A declared shader without color registers is white, an undeclared one uses_color, like Doom 3. - Console
lightslists every light's current color. - Test level: a flickering (snap table), a pulsing (sine table) and a strobing light.
- 193 checks (expressions, tables, light shaders); CI checks that the pulsing light changes.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.4.0
Portal visibility.
- Portal visibility like Doom 3's renderer: from the camera's area through the inter-area portals, each portal clipped by the view volume and narrowing it. Areas (now one scene each), brush entities, static and md5 models of hidden areas aren't drawn.
- Doors close portals while they are shut, so nothing behind a closed door is drawn.
- Lights are switched off while none of the areas they reach is visible (a flood through the portals within the light's radius).
- Console:
r_usePortals [0|1],portals; screenshot log lines show the visible areas.TDoom3Map.PortalCulling. - Fixed:
notargetdidn't stop a monster that was already attacking. - 162 parser and visibility checks; CI checks the visible areas through the door.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.
Castle Doom 3 0.3.0
Static models and collision models.
- Collision models (
.cm): maps collide with Doom 3's collision geometry, including its invisibleplayerclipbrushes, instead of the render geometry. Material contents follow Doom 3's surface parameters (playerclip,monsterclip,nonsolid,water,trigger...).TDoom3Map.UseCollisionModel(default on). - Static models: LightWave
.lwo(LWO2) and 3ds Max.aseloaders forfunc_static, props, light fixtures, items and LWO doors, with skins;func_*models collide unlessnoclipmodel. - Fixed: every rotated entity (brush entities, static models, creatures) faced backwards. CGE's default
TCastleTransformorientation points along local +Z;SetD3Rotationnow orients them. - Test level: LWO barrels, ASE terminals with glowing screens, a
.cmwith an invisible clip wall and a monster clip strip. - 147 parser checks (from 102); CI checks that static and collision models load.
Downloads: Windows (x86_64) zip and Linux (x86_64) tar.gz below. They include the bundled test level; pass -basepath "<Doom 3 dir>" to load the original Doom 3 (2004) data, which is not included.