Merge remote-tracking branch 'refs/remotes/origin/master'

This commit is contained in:
Christian Lincoln 2026-09-08 19:59:17 +01:00
commit 8c94f452ef

View file

@ -879,13 +879,24 @@ impl Renderer {
self.surface.configure(&self.device, &self.config);
self.eye.resize(width, height);
}
pub fn set_skybox(&mut self, skybox: SimpleTexture) {
self.eye.skybox(&self.device, skybox);
}
pub async fn new(window: &Arc<Window>) -> anyhow::Result<Self> {
static SKIP_EXTERNAL_OVERLAYS : bool = true; // use a config file or something to allow this to be toggled
let bounds = window.inner_size();
let width = bounds.width;
let height = bounds.height;
if(SKIP_EXTERNAL_OVERLAYS) {
unsafe { // currently will crash on most Windows systems because wGPU in its infinite
// wisdom tries to attach overlays from closed or non-existent programs
std::env::set_var("VK_LOADER_LAYERS_DISABLE", "~implicit~");
}
}
// The instance is a handle to our GPU
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
@ -1164,10 +1175,13 @@ impl Renderer {
}
pub(crate) fn render(&mut self, window: &Arc<Window>) -> anyhow::Result<()> {
window.request_redraw();
let mut resize_renderer = false;
let output = match self.surface.get_current_texture() {
wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture,
wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => {
self.surface.configure(&self.device, &self.config);
resize_renderer = true; //moved reconfigure to avoid a crash when resizing window
surface_texture
}
wgpu::CurrentSurfaceTexture::Timeout
@ -1245,6 +1259,21 @@ impl Renderer {
output.present();
if(resize_renderer){
std::mem::drop(view); //idk how this would affect a multi-pass system like deferred rendering, but this makes sure it's not gonna collide with resizing the swap chain or whatever wGPU does
self.surface.configure(&self.device, &self.config);
/*
also in this snippet call the functions to
a: resize window resolution
b: resize projection
currently when you resize the window the projection matrix is not updated
and therefore it gets very skewed and weird looking if you resize the current
small window to a big screen like mine(halbear) which is 3440x1440
i would add it myself but i don't know wGPU or rust all that well sooooo
*/
}
Ok(())
}
}