Skip to content

Lighting engine overhaul - #3423

Closed
EricsonWillians wants to merge 26 commits into
ZDoom:masterfrom
EricsonWillians:lighting-engine-overhaul
Closed

Lighting engine overhaul#3423
EricsonWillians wants to merge 26 commits into
ZDoom:masterfrom
EricsonWillians:lighting-engine-overhaul

Conversation

@EricsonWillians

Copy link
Copy Markdown

No description provided.

Updated README to reflect NeoDoom branding and features.
…RINFO

Implement extended SBARINFO mugshot syntax to support custom dimensions
and positioning for high-resolution status bar faces, enabling proper
scaling of non-standard mugshot graphics.

Changes:
- Extended SBARINFO parser to accept Width and Height parameters
  * Modified ParseSBarInfo() to handle TK_FloatConst tokens
  * Added support for 5 numeric parameters: Accuracy, X, Y, Width, Height
  * Implemented replace/merge logic for duplicate state definitions

- Added native functions for mugshot dimension and position retrieval
  * Implemented GetMugShotWidth/Height/X/Y() in DBaseStatusBar
  * Added fallback logic to query specific face states (e.g., "STFST")
  * Exposed functions to ZScript via DEFINE_ACTION_FUNCTION_NATIVE

- Updated Standard HUD (ZScript) to use custom mugshot properties
  * Modified DoomStatusBar::DrawMainBar() to retrieve custom dimensions
  * Implemented proper scaling via DrawTexture() Box parameter
  * Added support for custom X/Y positioning from SBARINFO definitions

- Fixed DrawTexture scaling logic
  * Corrected argument order: Box parameter (5th) for target dimensions
  * Removed manual scale calculation (was causing invisible mugshots)
  * Restored DI_ITEM_OFFSETS flag for proper texture alignment

Technical Details:
- FMugShotState now stores Width, Height, X, Y coordinates
- Parser handles mixed identifier/numeric parameter lists
- Fallback to default coordinates (143, 168) when not specified
- Compatible with LumpForge TOML mugshot configuration format

Fixes:
- Mugshots now render at correct size (e.g., 24x29 instead of 248x314)
- Custom positioning works in both SBARINFO and Standard HUD
- Prevents "invisible mugshot" issue from incorrect scaling

Example SBARINFO syntax:
  mugshot "STFST", 5, health, 143, 169, 24, 32;
- Renamed build executable to `biaseddoom`.
- Updated CMake configuration:
  - Renamed options `NEODOOM_ENABLE_GLTF` -> `BIASEDDOOM_ENABLE_GLTF`
  - Renamed macros and definitions to use `BIASEDDOOM_` prefix.
- Updated build scripts (`supreme-build.sh`, `clean-build.sh`) and tool scripts.
- Replaced all "NeoDoom" references in source code comments, headers, and string literals.
- Updated all documentation files ([README.md](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/README.md:0:0-0:0), `docs/`, `GLTF_*.md`) to reflect the new name.
- Added [CHANGELOG.md](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/CHANGELOG.md:0:0-0:0) to track project history.
- Added disclaimer regarding AI-generated code to `README.md`.
- Implemented new atmosphere modes: Toxic, Hellfire, and Cyberpunk.
- Moved atmosphere shader logic to 'present.fp' to apply effects globally, including the status bar and menus.
- Added 'gl_atmosphere_intensity' and 'gl_atmosphere_contrast' CVARs to allow users to fine-tune effect strength and look.
- Exposed new parameters via "Atmosphere Intensity" and "Atmosphere Contrast" sliders in the Post-Process menu.
- Refactored 'PresentUniforms' to include new parameters and removed obsolete 'TonemapUniforms' struct.
- Resolved build errors related to missing 'GLsync' types and shader uniform definitions.
…eline

Introduces a comprehensive suite of post-processing effects to simulate CRT monitor characteristics and NTSC signal artifacts. These effects are implemented as a distinct layer in the [present.fp](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/wadsrc/static/shaders/pp/present.fp:0:0-0:0) shader, allowing them to stack with existing atmosphere modes.

Key Features:
- **CRT Distortion**: Implements efficient pincushion distortion with a new 'Zoom' (Overscan) control to mitigate black corner artifacts.
- **Advanced Scanlines**: Procedural scanline generation with decoupled density, opacity, and sharpness controls. Supports both soft, interpolated scanlines and sharp, pixel-grid aligned scanlines.
- **Phosphor Masks**: Introduces multiple CRT emulation modes:
  - Mode 1: Standard Scanlines.
  - Mode 2: Aperture Grille (Vertical RGB stripes).
  - Mode 3: Shadow Mask (Dot triad pattern).
- **NTSC Artifacts**: Simulates composite signal degradation including chromatic aberration (fringing) and color bleeding.
- **Menu Integration**: Fully exposed all parameters in "Display Options -> Post Processing".

Technical Implementation:
- **C++ / CVARs**: Added `gl_crt_*` and `gl_ntsc_*` CVARs to [hw_postprocess_cvars.cpp](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/src/common/rendering/hwrenderer/postprocessing/hw_postprocess_cvars.cpp:0:0-0:0).
- **Uniforms**: Extended [PresentUniforms](cci:2://file:///home/ericsonwillians/workspace/BiasedDoom/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.h:683:0-743:1) structure in [hw_postprocess.h](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/src/common/rendering/hwrenderer/postprocessing/hw_postprocess.h:0:0-0:0) to pass dynamic float/int parameters to the shader.
- **Backends**: Updated both [gles_postprocess.cpp](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/src/common/rendering/gles/gles_postprocess.cpp:0:0-0:0) (OpenGLES) and [vk_postprocess.cpp](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/src/common/rendering/vulkan/renderer/vk_postprocess.cpp:0:0-0:0) (Vulkan) to populate and bind the new uniforms during the presentation pass.
- **Shaders**: significant logic additions to [present.fp](cci:7://file:///home/ericsonwillians/workspace/BiasedDoom/wadsrc/static/shaders/pp/present.fp:0:0-0:0) to handle coordinate distortion, mask generation, and signal blending.

New CVARs:
- `gl_crt_mode` (0-3): Off, Standard, Aperture Grille, Shadow Mask.
- `gl_crt_distortion` (Float): Strength of physical screen curvature.
- `gl_crt_zoom` (Float): Overscan factor to crop distortion borders.
- `gl_crt_scanline` (Float): Opacity of scanlines.
- `gl_crt_scanline_density` (Float): Multiplier for scanline frequency relative to resolution.
- `gl_crt_scanline_sharpness` (Float): Hardness of the scanline sine wave profile.
- `gl_crt_mask_intensity` (Float): Opacity of the aperture/shadow mask overlay.
- `gl_ntsc_mode` (0/1): Toggle for NTSC signal simulation.
Add a user-friendly release path via tools/release.sh, including draft and prerelease dispatch support, and route the release script through Release workflow inputs.

- Update release workflow metadata handling to accept prerelease flag and pass it through publish step.
- Improve version bump/trigger flow in tools/release.sh with explicit helper command output.
- Synchronize top-level README release instructions with the streamlined command workflow.
- Propagate VERSIONSTR into macOS bundle version fields so launcher-visible version metadata updates consistently.
Escape delimiters in the VERSIONSTR update command so bump script runs reliably under release automation.
- Fix vertical door lookup in BuildUDMF to match door seam index consistently.
- Add bounds guard before dereferencing Grid[j][i] in vertical door path.
- Prevent invalid wall texture pointer usage that could cause runtime SIGSEGV during PROCMAP generation.
Expand graphics presets with playable VHS, evil, fog, CRT, and horror variants.

Add configurable lighting style controls and wire them through OpenGL, Vulkan, GLES, and material shaders.

Expose the new preset and lighting controls in the options menus.
Add renderer-level controls for dynamic light range, falloff softness, wrap lighting, indirect bounce, and shadow strength across OpenGL, Vulkan, and GLES paths.

Expose the new lighting controls in the menus and tune lighting presets to use the stronger configurable model.
Expand the dedicated lighting preset list and tune each preset around the new range, softness, wrap, indirect bounce, and shadow strength controls.

Update post-processing preset lighting styles so every themed preset family explicitly uses the enhanced dynamic lighting model.
Make the vignette controls activate the post-processing path with a useful default strength instead of silently doing nothing at zero strength.

Replace the old corner-only vignette curve with a viewport-shaped mask across desktop, stereo, and GLES present shaders so the effect is clearly visible and scalable.
@coelckers

Copy link
Copy Markdown
Member

PR seems to have been made by mistake, it appears to be for a forked project.

@coelckers coelckers closed this Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants