From df7840a3cac2fe5c8f62a9d8b9f84498c2eddade Mon Sep 17 00:00:00 2001 From: Ben Hansen Date: Tue, 26 Nov 2019 15:46:46 -0700 Subject: [PATCH] added AutoGithubLink and fixed uniforms challenge --- code/beginner/tutorial6-uniforms/challenge.rs | 25 +++++++++++++----- .../tutorial6-uniforms/happy-tree-cartoon.png | Bin 59874 -> 0 bytes docs/.vuepress/components/AutoGithubLink.vue | 17 ++++++++++++ docs/.vuepress/config.js | 2 +- .../README.md} | 4 ++- docs/beginner/tutorial2-swapchain/README.md | 6 +++-- docs/beginner/tutorial3-pipeline/README.md | 4 ++- docs/beginner/tutorial4-buffer/README.md | 4 ++- docs/beginner/tutorial5-textures/README.md | 2 ++ docs/beginner/tutorial6-uniforms/README.md | 2 ++ docs/intermediate/windowless/README.md | 4 ++- 11 files changed, 56 insertions(+), 14 deletions(-) delete mode 100644 code/beginner/tutorial6-uniforms/happy-tree-cartoon.png create mode 100644 docs/.vuepress/components/AutoGithubLink.vue rename docs/beginner/{tutorial1-window.md => tutorial1-window/README.md} (98%) diff --git a/code/beginner/tutorial6-uniforms/challenge.rs b/code/beginner/tutorial6-uniforms/challenge.rs index fbe1da33..cfbd8cbb 100644 --- a/code/beginner/tutorial6-uniforms/challenge.rs +++ b/code/beginner/tutorial6-uniforms/challenge.rs @@ -552,6 +552,9 @@ fn main() { .unwrap(); let mut state = State::new(&window); + + let mut old_time = std::time::Instant::now(); + const MSPT: std::time::Duration = std::time::Duration::from_millis(20); event_loop.run(move |event, _, control_flow| { match event { @@ -559,7 +562,7 @@ fn main() { ref event, window_id, } if window_id == window.id() => if state.input(event) { - *control_flow = ControlFlow::Wait; + () } else { match event { WindowEvent::CloseRequested => *control_flow = ControlFlow::Exit, @@ -573,26 +576,34 @@ fn main() { virtual_keycode: Some(VirtualKeyCode::Escape), .. } => *control_flow = ControlFlow::Exit, - _ => *control_flow = ControlFlow::Wait, + _ => (), } } WindowEvent::Resized(logical_size) => { state.resize(*logical_size); - *control_flow = ControlFlow::Wait; + () } WindowEvent::HiDpiFactorChanged(new_hidpi_factor) => { state.update_hidpi_and_resize(*new_hidpi_factor); - *control_flow = ControlFlow::Wait; + () } - _ => *control_flow = ControlFlow::Wait, + _ => (), } } Event::EventsCleared => { state.update(); state.render(); - *control_flow = ControlFlow::Wait; + + let new_time = std::time::Instant::now(); + let delta_time = new_time - old_time; + *control_flow = if delta_time > MSPT { + ControlFlow::Poll + } else { + ControlFlow::WaitUntil(old_time + MSPT) + }; + old_time = new_time; } - _ => *control_flow = ControlFlow::Wait, + _ => (), } }); } \ No newline at end of file diff --git a/code/beginner/tutorial6-uniforms/happy-tree-cartoon.png b/code/beginner/tutorial6-uniforms/happy-tree-cartoon.png deleted file mode 100644 index ba8bb95dfe7464043c7ef5b2cc4af08df098e20c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59874 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®-?FpV)$Z5vMn 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 diff --git a/docs/.vuepress/components/AutoGithubLink.vue b/docs/.vuepress/components/AutoGithubLink.vue new file mode 100644 index 00000000..f9fbf644 --- /dev/null +++ b/docs/.vuepress/components/AutoGithubLink.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 6f91b422..6e06f2ad 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -21,7 +21,7 @@ module.exports = { title: 'Beginner', collapsable: false, children: [ - '/beginner/tutorial1-window', + '/beginner/tutorial1-window/', '/beginner/tutorial2-swapchain/', '/beginner/tutorial3-pipeline/', '/beginner/tutorial4-buffer/', diff --git a/docs/beginner/tutorial1-window.md b/docs/beginner/tutorial1-window/README.md similarity index 98% rename from docs/beginner/tutorial1-window.md rename to docs/beginner/tutorial1-window/README.md index 58f84994..bef64602 100644 --- a/docs/beginner/tutorial1-window.md +++ b/docs/beginner/tutorial1-window/README.md @@ -71,4 +71,6 @@ fn main() { } ``` -All this does is create a window, and keep it open until until user closes it, or presses escape. Next tutorial we'll actually start using wgpu! \ No newline at end of file +All this does is create a window, and keep it open until until user closes it, or presses escape. Next tutorial we'll actually start using wgpu! + + \ No newline at end of file diff --git a/docs/beginner/tutorial2-swapchain/README.md b/docs/beginner/tutorial2-swapchain/README.md index 14d6f4e0..ad256e4a 100644 --- a/docs/beginner/tutorial2-swapchain/README.md +++ b/docs/beginner/tutorial2-swapchain/README.md @@ -93,7 +93,7 @@ As of writing, the wgpu implementation doesn't allow you to customize much of re ``` Here we defining and creating the `swap_chain`. The `usage` field describes how the `swap_chain`'s underlying textures will be used. `OUTPUT_ATTACHMENT` specifies that the textures will be used to write to the screen (we'll talk about more `TextureUsage`s later). -The `format` defines how the `swap_chain`s textures will be stored on the gpu. Usually you want to specify the format of the display you're using. As of writing, I was unable to find a way to query what format the display has through `wgpu`, so `wgpu::TextureFormat::Bgra8UnormSrgb` will do for now. +The `format` defines how the `swap_chain`s textures will be stored on the gpu. Usually you want to specify the format of the display you're using. As of writing, I was unable to find a way to query what format the display has through `wgpu`, though [there are plans on including such a method](https://github.com/gfx-rs/wgpu-rs/issues/123#issuecomment-555803321), so `wgpu::TextureFormat::Bgra8UnormSrgb` will do for now. We use `wgpu::TextureFormat::Bgra8UnormSrgb` because that's the format that's [guaranteed to be natively supported by the swapchains of all the APIs/platforms](https://github.com/gfx-rs/wgpu-rs/issues/123#issuecomment-555800583) which are currently supported. `width` and `height`, are self explanatory. @@ -349,4 +349,6 @@ In the event loop we're currently using `*control_flow = ControlFlow::Wait` in m ## Challenge -Modify the `input()` method to capture mouse events, and update the clear color using that. *Hint: you'll probably need to use `WindowEvent::CursorMoved`* \ No newline at end of file +Modify the `input()` method to capture mouse events, and update the clear color using that. *Hint: you'll probably need to use `WindowEvent::CursorMoved`* + + \ No newline at end of file diff --git a/docs/beginner/tutorial3-pipeline/README.md b/docs/beginner/tutorial3-pipeline/README.md index d4cdc744..b6993721 100644 --- a/docs/beginner/tutorial3-pipeline/README.md +++ b/docs/beginner/tutorial3-pipeline/README.md @@ -260,4 +260,6 @@ With all that you should be seeing a lovely brown triangle. ![Said lovely brown triangle](./tutorial3-pipeline-triangle.png) ## Challenge -Create a second pipeline that uses the triangles position data to create a color that it then sends to the fragment shader to use for `f_color`. Have the app swap between these when you press the spacebar. *Hint: use*`in`*and*`out`*variables in a separate shader.* \ No newline at end of file +Create a second pipeline that uses the triangles position data to create a color that it then sends to the fragment shader to use for `f_color`. Have the app swap between these when you press the spacebar. *Hint: use*`in`*and*`out`*variables in a separate shader.* + + \ No newline at end of file diff --git a/docs/beginner/tutorial4-buffer/README.md b/docs/beginner/tutorial4-buffer/README.md index cde07069..2fd238cb 100644 --- a/docs/beginner/tutorial4-buffer/README.md +++ b/docs/beginner/tutorial4-buffer/README.md @@ -331,4 +331,6 @@ With all that you should have a garishly magenta pentagon in your window. ![Magenta pentagon in window](./indexed-pentagon.png) ## Challenge -Create a more complex shape than the one we made (aka. more than three triangles) using a vertex buffer and an index buffer. Toggle between the two with the space key. \ No newline at end of file +Create a more complex shape than the one we made (aka. more than three triangles) using a vertex buffer and an index buffer. Toggle between the two with the space key. + + \ No newline at end of file diff --git a/docs/beginner/tutorial5-textures/README.md b/docs/beginner/tutorial5-textures/README.md index f3984d1b..fe4dd617 100644 --- a/docs/beginner/tutorial5-textures/README.md +++ b/docs/beginner/tutorial5-textures/README.md @@ -373,6 +373,8 @@ With that in place we now have our tree subscribed right-side up on our hexagon. Create another texture and swap it out when you press the space key. + +