Skip to content

Mine-imator 2.1 rendering (WIP) - #45

Open
stuffbydavid wants to merge 95 commits into
2.1from
2.1-rendering
Open

stuffbydavid wants to merge 95 commits into
2.1from
2.1-rendering

Conversation

@stuffbydavid

@stuffbydavid stuffbydavid commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Mine-imator 2.1 will feature 3 different "renderers", rather than the typical high/low quality mode:

  1. Quick renderer: The same as "Flat" mode today.
  2. Standard renderer: An optimized version of the pre-2.0 "High quality" mode, intended as a WYSIWYG preview for most animators and users and replaces "Shaded" mode.
    • Shadow blur quality/size for fast PCSS is added in the interface (single cascade)
    • SSAO with fixed blur passes (1 or 2)
    • "Depth of field quality" will be hard-coded (1 or 2)
    • Glow will be limited to a single iteration(?)
    • FXAA for anti-aliasing
  3. Realistic renderer: Intended for advanced users (locked behind upgrade) and wallpaper creators and focuses on longer rending times in exchange for accurate reflections, indirect lighting, subsurface scattering etc.

Below is the new render settings interface that reflect the renderers, split into "Special effects", "Graphics" and "Materials". Only certain buttons/toggles that affect FPS are tied to the presets, while others that only affect appearance are shared between them. Presets are loaded from the Render/ folder as usual.

rendersettings

.mirender format changes:

{
	"format": 35,
	"created_in": "2.1",
	"name": "balanced",
	"render": {
		"standard": {
			(performance-related settings for the Standard renderer)
		},
		"realistic": {
			(performance-related settings for the Realistic renderer)
		}
		"specialeffects": {
			(appearance-related settings for both Standard/Realistic renderers)
		}
		"graphics": {
			(appearance-related settings for all rendering)
		}
		"materials": {
			(materials-related settings for Realistic renderer)
		}
	}
}

The different categories in the .mirender file are optional and only those present will override the current settings once chosen in the interface.

Changes

  • Added Shady.gml inlining and moved reusable code into: common_color, common_constants, common_effect, common_material, common_position, common_screen, common_util.
  • Packed most buffer data into 2 MRT shaders:
    • shader_high_gbuffers:
      • Depth
      • Normals
      • Material
      • Emissive
      • AO Mask
      • Glint
    • shader_high_auxiliary:
      • Fog Strength
      • Subsurface Radius
      • Subsurface RGB Radius
      • Glow Color
  • Buffer changes:
    • Removed render_surface_emissive; emissive is now in render_surface_normal.a
    • Removed render_surface_hdr[2]; reflections effect now reuses render_surface_reflections.
    • Removed render_surface_sample_expo/dec/alpha; sampling now uses render_surface_samples
    • Added buffers: render_surface_fog, render_surface_sss, render_surface_sss_range, render_surface_glow
  • Assigned new formats to render surfaces.
    • F8 UNORM: render_surface_fog
    • R16 FLOAT: render_surface_sss
    • R32 FLOAT: render_surface_depth, render_surface_sun_buffer, render_surface_point_buffer, render_surface_point_atlas_buffer, render_surface_spot_buffer
    • RGBA32 FLOAT: render_surface_normal, render_surface_specular, render_surface_shadows, render_surface_hdr[0/1], render_surface_samples
  • With glow color now in shader_high_auxiliary, blending behavior changed in the pass. Glow effect is mostly the same but gets weaker behind transparent objects. Previously, would be super bright. (Possibly preferred change.)
  • Set the default dielectric reflectance to 0.04. (DIELECTRIC_F0)
  • Enabled texture filtering for material and normal maps.
  • AO is applied less in lit areas. (Configurable via new 'Always visible' setting.)

Fixes

  • Fixed the sun’s specular highlight and subsurface effects by correcting the C++ shader uniform-array upload size, which was corrupting adjacent uniforms. (ie. uCameraPosition). (3c6526ce)
  • Fixed metallic materials not tinting reflections correctly.
  • Fixed metallic materials not appearing in reflections.
  • Fixed spotlight attenuation masking specular highlights twice.
  • Fixed LabPBR roughness being too sharp. (was additionally squared in getMaterial)
  • Fixed light source fresnel calculation for specular.
  • Applied metal/fresnel energy conservation to indirect lighting.
  • Applied light source energy conservation to diffuse light.
  • Fixed 0-angle decoding on normal maps. (8-bit textures can't decode to perfect 0, added patch.)
  • Fixed model texture names not being used by normal/material maps. (Fixes models like pistons.)
  • Fixed gamma not being applied correctly in lighting.
  • Set minimum roughness to prevent infinitely sharp specular. (MIN_PERCEPTUAL_ROUGHNESS)
  • *Fixed fog looking different between Flat/Shaded and Rendered mode.
  • *Fixed normals on non-uniform scaled objects.

*Existed since 1.0.0 DEMOs

@stuffbydavid
stuffbydavid requested a review from NimiSqrd August 27, 2026 13:01
@stuffbydavid stuffbydavid changed the title 2.1 rendering (WIP) Mine-imator 2.1 rendering (WIP) Aug 27, 2026
@stuffbydavid
stuffbydavid force-pushed the 2.1-rendering branch 2 times, most recently from 980ad8c to d4929c1 Compare August 27, 2026 21:28
@moxie-coder

moxie-coder commented Aug 28, 2026

Copy link
Copy Markdown

something I'd love to see is multi-core rendering instead of single threaded honestly (and possibly under the GPU too), especially if this is running under C++

I'm hoping this is what this PR is about

Benchmark movie exporting (dev_mode_exportmovie_benchmarks=true)
Fixed render distance setting not working
Patched shader parser
Previous log file saved on startup
CppProject only optimization analysis
Fixed crash loading missing biome
Add missing settings to history_copy_render_settings()
Show walk/run cycles in Advanced mode
Macro refactoring
Apply developer settings via program arguments
Codex analysis about startup optimizations
P0: Replace face texture list scans
P0: Remove quadratic object-registry prepending
P1 quick win: Make Debug audits opt-in
@NimiSqrd

Copy link
Copy Markdown
Collaborator

Thoughts on #include behavior for shaders? Repeated shader code is unruly in 2.0.x, ideally we have some tool like Shady.gml to handle the behavior on the GameMaker side and emulate Shady's basic import behavior in CppGen. Would help with the repeated wind, color, material, etc. uniforms and logic.

stuffbydavid and others added 7 commits August 30, 2026 18:21
AGENTS.md v1
RELEASE_MODE flag for final build only
file_directory (and dev_project) moved to build folder in non-release mode
is_optimized() function
Uniform XYZ scaling is now enabled by default
AGENTS build tips
working_directory patch for RelWithDebInfo/RunBenchmarks
float[] memory leak fix
Fixed logging bugs
Fixed shadows=false,ssao=true white screen bug (unbound texture) in OpenGL mode
Moved TBN construct to fsh side to reduce interpolators and fix normalization.
stuffbydavid and others added 21 commits September 10, 2026 10:24
Find preset on project load
Remove "Video quality" and bitrate settings
Added warning on intense Realistic movie exports
Render preset tweaks and fixes
Render preset reset fix for "custom"
Clean up duplicate export_ scripts
Add missing undo/redo for render distance
Legacy render setting support
- General fix for alpha in material/normal maps.
- Default emissive is now applied to material maps if emissive isn't defined.
VarType == operator fix
Xcode fix
- Added "Jittered shadows" option for old behavior.
- Sun cascade setting support.
- Added Uchimura, Lottes, Hable, GT7 Curve tonemappers.
- Made Reinhard luminance-preserving, reducing desaturation.
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