Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
commit
8c94f452ef
1 changed files with 30 additions and 1 deletions
|
|
@ -879,13 +879,24 @@ impl Renderer {
|
||||||
self.surface.configure(&self.device, &self.config);
|
self.surface.configure(&self.device, &self.config);
|
||||||
self.eye.resize(width, height);
|
self.eye.resize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn set_skybox(&mut self, skybox: SimpleTexture) {
|
pub fn set_skybox(&mut self, skybox: SimpleTexture) {
|
||||||
self.eye.skybox(&self.device, skybox);
|
self.eye.skybox(&self.device, skybox);
|
||||||
}
|
}
|
||||||
pub async fn new(window: &Arc<Window>) -> anyhow::Result<Self> {
|
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 bounds = window.inner_size();
|
||||||
let width = bounds.width;
|
let width = bounds.width;
|
||||||
let height = bounds.height;
|
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
|
// The instance is a handle to our GPU
|
||||||
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
|
// BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU
|
||||||
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
||||||
|
|
@ -1164,10 +1175,13 @@ impl Renderer {
|
||||||
}
|
}
|
||||||
pub(crate) fn render(&mut self, window: &Arc<Window>) -> anyhow::Result<()> {
|
pub(crate) fn render(&mut self, window: &Arc<Window>) -> anyhow::Result<()> {
|
||||||
window.request_redraw();
|
window.request_redraw();
|
||||||
|
|
||||||
|
let mut resize_renderer = false;
|
||||||
|
|
||||||
let output = match self.surface.get_current_texture() {
|
let output = match self.surface.get_current_texture() {
|
||||||
wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture,
|
wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture,
|
||||||
wgpu::CurrentSurfaceTexture::Suboptimal(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
|
surface_texture
|
||||||
}
|
}
|
||||||
wgpu::CurrentSurfaceTexture::Timeout
|
wgpu::CurrentSurfaceTexture::Timeout
|
||||||
|
|
@ -1245,6 +1259,21 @@ impl Renderer {
|
||||||
|
|
||||||
output.present();
|
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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue