diff --git a/crates/gc-engine/src/main.rs b/crates/gc-engine/src/main.rs index 77aa541..c45d05f 100644 --- a/crates/gc-engine/src/main.rs +++ b/crates/gc-engine/src/main.rs @@ -20,6 +20,7 @@ use std::path::PathBuf; use anyhow::{Context, Result}; use bevy::asset::RenderAssetUsages; use bevy::image::{ImageAddressMode, ImageFilterMode, ImageSampler, ImageSamplerDescriptor}; +use bevy::material::AlphaMode; use bevy::prelude::*; use bevy::render::mesh::{Indices, PrimitiveTopology}; use bevy::render::render_resource::{Extent3d, TextureDimension, TextureFormat}; @@ -308,6 +309,12 @@ fn spawn_level( // Double-sided: the strips as stored do not carry a consistent // winding, and the game relies on GS defaults rather than culling. cull_mode: None, + // Blend, not Mask. The disc's alpha is 97.94% opaque, 0.98% clear and + // 1.08% partial across 126 values, and Blend handles all three: a + // clear texel blends to invisible, a partial one stays smooth. Mask + // would flatten those 1.08% to fully opaque, discarding exactly the + // soft edges they exist to produce. + alpha_mode: AlphaMode::Blend, ..default() }); commands.spawn((