Skip to content

Commit

Permalink
fix: use the same trick to fix text rendering on windows
Browse files Browse the repository at this point in the history
  • Loading branch information
ten3roberts committed Sep 15, 2023
1 parent 005df19 commit b916a99
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ bin/
wasm-pack.log
www/.bin/create-wasm-app.js
third_person_camera.cap

*.dll
1 change: 1 addition & 0 deletions crates/renderer/src/renderer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ impl Renderer {
renderer_resources: renderer_resources.clone(),
fs_main: FSMain::Forward,
render_opaque: false,
settings,
},
),
solids_frame: RenderTarget::new(
Expand Down
8 changes: 7 additions & 1 deletion crates/renderer/src/transparent_renderer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use ambient_gpu::{
typed_buffer::TypedBuffer,
};
use ambient_native_std::asset_cache::AssetCache;
use ambient_settings::RenderSettings;
use glam::{Mat4, UVec4, Vec3};
use itertools::Itertools;
use ordered_float::OrderedFloat;
Expand All @@ -29,6 +30,7 @@ pub struct TransparentRendererConfig {
pub renderer_resources: RendererResources,
pub fs_main: FSMain,
pub render_opaque: bool,
pub settings: RenderSettings,
}

pub struct TransparentRenderer {
Expand Down Expand Up @@ -230,7 +232,11 @@ impl TransparentRenderer {

render_pass.draw_indexed(
metadata.index_offset..(metadata.index_offset + metadata.index_count),
0,
if self.config.settings.is_win32_web {
metadata.base_offset as i32
} else {
0
},
(i as u32)..((i + 1) as u32),
);
}
Expand Down
24 changes: 15 additions & 9 deletions crates/settings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,24 @@ impl SyncAssetKey<Settings> for SettingsKey {
.unwrap();

tracing::info!("Detected platform: {platform}");
let render_mode = if platform == "Windows" {
RenderMode::Direct
if platform == "Windows" {
Settings {
render: RenderSettings {
render_mode: Some(RenderMode::Direct),
is_win32_web: true,
..Default::default()
},
..Default::default()
}
} else {
RenderMode::Indirect
};
Settings {
render: RenderSettings {
render_mode: Some(RenderMode::Indirect),
..Default::default()
},

Settings {
render: RenderSettings {
render_mode: Some(render_mode),
..Default::default()
},
..Default::default()
}
}
}
#[cfg(not(target_os = "unknown"))]
Expand Down
2 changes: 2 additions & 0 deletions crates/settings/src/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ pub struct RenderSettings {
pub render_mode: Option<RenderMode>,
#[serde(default)]
pub software_culling: bool,
#[serde(default)]
pub is_win32_web: bool,
}
impl RenderSettings {
pub fn resolution(&self) -> (u32, u32) {
Expand Down

0 comments on commit b916a99

Please sign in to comment.