@@ -723,6 +723,57 @@ <h3 id="building-blocks"><a href="https://github.com/bonsairobo/building-blocks"
723
723
when doing large edits and working with large maps:</ p >
724
724
< p > < img src ="https://rust-gamedev.github.io/posts/newsletter-015/voxel-mapper.gif " alt ="Terraforming demo " /> </ p >
725
725
< p > Join < a href ="https://discord.gg/CnTNjwb "> Building Blocks's Discord server</ a > .</ p >
726
+ < h3 id ="rust-gpu-v0-1 "> < a href ="https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.1 "> Rust GPU v0.1</ a > < a class ="anchor " href ="#rust-gpu-v0-1 " aria-hidden ="true "> #</ a >
727
+ </ h3 >
728
+ < p > < img src ="https://rust-gamedev.github.io/posts/newsletter-015/rustgpu.jpg " alt ="Rust GPU Sky " />
729
+ < em > Sky example in Rust GPU</ em > </ p >
730
+ < p > < a href ="https://github.com/EmbarkStudios/rust-gpu "> Rust GPU</ a > is a project backed by < a href ="https://www.embark-studios.com/ "> Embark Studios</ a >
731
+ to make Rust a first-class language and ecosystem for building GPU code.</ p >
732
+ < p > Although still in very early stages of development,
733
+ < a href ="https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.1 "> Rust GPU released v0.1 in October</ a > ,
734
+ and has already garnered over 2000 stars on Github.
735
+ Currently, compiling and running very simple shaders
736
+ works, and a significant portion of the core library also compiles. While things
737
+ like if-statements and while-loops are working, many things aren't implemented yet.
738
+ For example, for-loops, iterators and match/switch aren't supported yet. That
739
+ means that while being technically usable, Rust GPU is far from being
740
+ production-ready.</ p >
741
+ < p > The motivation behind the project:</ p >
742
+ < blockquote >
743
+ < p > Historically in games, GPU programming has been done through writing either
744
+ HLSL, or to a lesser extent GLSL. These are simple programming languages that
745
+ have evolved along with rendering APIs over the years. However, as game engines
746
+ have evolved, these languages have failed to provide mechanisms for dealing with
747
+ large codebases, and have generally stayed behind the curve compared to other
748
+ programming languages.</ p >
749
+ < p > In part this is because it's a niche language for a niche market, and in part
750
+ this has been because the industry as a whole has sunk quite a lot of time and
751
+ effort into the status quo. While over-all better alternatives to both languages
752
+ exist, none of them are in a place to replace HLSL or GLSL. Either because they
753
+ are vendor locked, or because they don't support the traditional graphics
754
+ pipeline. Examples of this include CUDA and OpenCL. And while attempts have been
755
+ made to create language in this space, none of them have gained any notable
756
+ traction in the gamedev community.</ p >
757
+ </ blockquote >
758
+ < p > The code for the sky example above:</ p >
759
+ < pre style ="background-color:#2b303b; ">
760
+ < code > < span style ="color:#c0c5ce; "> #[</ span > < span style ="color:#bf616a; "> spirv</ span > < span style ="color:#c0c5ce; "> (entry = "</ span > < span style ="color:#a3be8c; "> fragment</ span > < span style ="color:#c0c5ce; "> ")]
761
+ </ span > < span style ="color:#b48ead; "> pub fn </ span > < span style ="color:#8fa1b3; "> main_fs</ span > < span style ="color:#c0c5ce; "> (</ span > < span style ="color:#bf616a; "> input</ span > < span style ="color:#c0c5ce; "> : Input<Vec4>, </ span > < span style ="color:#b48ead; "> mut </ span > < span style ="color:#bf616a; "> output</ span > < span style ="color:#c0c5ce; "> : Output<Vec4>) {
762
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> dir: Vec3 = input.</ span > < span style ="color:#96b5b4; "> load</ span > < span style ="color:#c0c5ce; "> ().</ span > < span style ="color:#96b5b4; "> truncate</ span > < span style ="color:#c0c5ce; "> ();
763
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> cs_pos = Vec4(dir.</ span > < span style ="color:#d08770; "> 0</ span > < span style ="color:#c0c5ce; "> , -dir.</ span > < span style ="color:#d08770; "> 1</ span > < span style ="color:#c0c5ce; "> , </ span > < span style ="color:#d08770; "> 1.0</ span > < span style ="color:#c0c5ce; "> , </ span > < span style ="color:#d08770; "> 1.0</ span > < span style ="color:#c0c5ce; "> );
764
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> ws_pos = {
765
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> p = clip_to_world.</ span > < span style ="color:#96b5b4; "> mul_vec4</ span > < span style ="color:#c0c5ce; "> (cs_pos);
766
+ p.</ span > < span style ="color:#96b5b4; "> truncate</ span > < span style ="color:#c0c5ce; "> () / p.</ span > < span style ="color:#d08770; "> 3
767
+ </ span > < span style ="color:#c0c5ce; "> };
768
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> dir = (ws_pos - eye_pos).</ span > < span style ="color:#96b5b4; "> normalize</ span > < span style ="color:#c0c5ce; "> ();
769
+ </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> color = </ span > < span style ="color:#96b5b4; "> sky</ span > < span style ="color:#c0c5ce; "> (dir, sun_pos); </ span > < span style ="color:#65737e; "> // evaluate Preetham sky model
770
+ </ span > < span style ="color:#c0c5ce; "> output.</ span > < span style ="color:#96b5b4; "> store</ span > < span style ="color:#c0c5ce; "> (color.</ span > < span style ="color:#96b5b4; "> extend</ span > < span style ="color:#c0c5ce; "> (</ span > < span style ="color:#d08770; "> 0.0</ span > < span style ="color:#c0c5ce; "> ))
771
+ }
772
+ </ span > </ code > </ pre >
773
+ < p > < em > Discussions:
774
+ < a href ="https://reddit.com/r/rust/comments/jg056t/introducing_rustgpu_v01 "> /r/rust</ a > ,
775
+ < a href ="https://news.ycombinator.com/item?id=24858172 "> Hacker News</ a > ,
776
+ < a href ="https://twitter.com/repi/status/1319274584915365888 "> Twitter</ a > </ em > </ p >
726
777
< h3 id ="gfx-rs "> < a href ="https://github.com/gfx-rs/gfx "> gfx-rs</ a > < a class ="anchor " href ="#gfx-rs " aria-hidden ="true "> #</ a >
727
778
</ h3 >
728
779
< p > gfx-rs support for D3D has been improved. < a href ="https://github.com/kvark "> @kvark</ a > landed a few critical fixes
@@ -958,57 +1009,6 @@ <h3 id="proton-5-13-1"><a href="https://github.com/ValveSoftware/Proton">Proton<
958
1009
< p > Documentation for building Proton is available on < a href ="https://github.com/ValveSoftware/Proton "> Github</ a > .
959
1010
Further documentation on Media Converter and its source code is available
960
1011
on the module's < a href ="https://github.com/ValveSoftware/Proton/tree/proton_5.13/media-converter "> repository</ a > </ p >
961
- < h3 id ="rust-gpu-v0-1 "> < a href ="https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.1 "> Rust GPU v0.1</ a > < a class ="anchor " href ="#rust-gpu-v0-1 " aria-hidden ="true "> #</ a >
962
- </ h3 >
963
- < p > < img src ="https://rust-gamedev.github.io/posts/newsletter-015/rustgpu.jpg " alt ="Rust GPU Sky " />
964
- < em > Sky example in Rust GPU</ em > </ p >
965
- < p > < a href ="https://github.com/EmbarkStudios/rust-gpu "> Rust GPU</ a > is a project backed by < a href ="https://www.embark-studios.com/ "> Embark Studios</ a >
966
- to make Rust a first-class language and ecosystem for building GPU code.</ p >
967
- < p > Although still in very early stages of development,
968
- < a href ="https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.1 "> Rust GPU released v0.1 in October</ a > ,
969
- and has already garnered over 2000 stars on Github.
970
- Currently, compiling and running very simple shaders
971
- works, and a significant portion of the core library also compiles. While things
972
- like if-statements and while-loops are working, many things aren't implemented yet.
973
- For example, for-loops, iterators and match/switch aren't supported yet. That
974
- means that while being technically usable, Rust GPU is far from being
975
- production-ready.</ p >
976
- < p > The motivation behind the project:</ p >
977
- < blockquote >
978
- < p > Historically in games, GPU programming has been done through writing either
979
- HLSL, or to a lesser extent GLSL. These are simple programming languages that
980
- have evolved along with rendering APIs over the years. However, as game engines
981
- have evolved, these languages have failed to provide mechanisms for dealing with
982
- large codebases, and have generally stayed behind the curve compared to other
983
- programming languages.</ p >
984
- < p > In part this is because it's a niche language for a niche market, and in part
985
- this has been because the industry as a whole has sunk quite a lot of time and
986
- effort into the status quo. While over-all better alternatives to both languages
987
- exist, none of them are in a place to replace HLSL or GLSL. Either because they
988
- are vendor locked, or because they don't support the traditional graphics
989
- pipeline. Examples of this include CUDA and OpenCL. And while attempts have been
990
- made to create language in this space, none of them have gained any notable
991
- traction in the gamedev community.</ p >
992
- </ blockquote >
993
- < p > The code for the sky example above:</ p >
994
- < pre style ="background-color:#2b303b; ">
995
- < code > < span style ="color:#c0c5ce; "> #[</ span > < span style ="color:#bf616a; "> spirv</ span > < span style ="color:#c0c5ce; "> (entry = "</ span > < span style ="color:#a3be8c; "> fragment</ span > < span style ="color:#c0c5ce; "> ")]
996
- </ span > < span style ="color:#b48ead; "> pub fn </ span > < span style ="color:#8fa1b3; "> main_fs</ span > < span style ="color:#c0c5ce; "> (</ span > < span style ="color:#bf616a; "> input</ span > < span style ="color:#c0c5ce; "> : Input<Vec4>, </ span > < span style ="color:#b48ead; "> mut </ span > < span style ="color:#bf616a; "> output</ span > < span style ="color:#c0c5ce; "> : Output<Vec4>) {
997
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> dir: Vec3 = input.</ span > < span style ="color:#96b5b4; "> load</ span > < span style ="color:#c0c5ce; "> ().</ span > < span style ="color:#96b5b4; "> truncate</ span > < span style ="color:#c0c5ce; "> ();
998
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> cs_pos = Vec4(dir.</ span > < span style ="color:#d08770; "> 0</ span > < span style ="color:#c0c5ce; "> , -dir.</ span > < span style ="color:#d08770; "> 1</ span > < span style ="color:#c0c5ce; "> , </ span > < span style ="color:#d08770; "> 1.0</ span > < span style ="color:#c0c5ce; "> , </ span > < span style ="color:#d08770; "> 1.0</ span > < span style ="color:#c0c5ce; "> );
999
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> ws_pos = {
1000
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> p = clip_to_world.</ span > < span style ="color:#96b5b4; "> mul_vec4</ span > < span style ="color:#c0c5ce; "> (cs_pos);
1001
- p.</ span > < span style ="color:#96b5b4; "> truncate</ span > < span style ="color:#c0c5ce; "> () / p.</ span > < span style ="color:#d08770; "> 3
1002
- </ span > < span style ="color:#c0c5ce; "> };
1003
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> dir = (ws_pos - eye_pos).</ span > < span style ="color:#96b5b4; "> normalize</ span > < span style ="color:#c0c5ce; "> ();
1004
- </ span > < span style ="color:#b48ead; "> let</ span > < span style ="color:#c0c5ce; "> color = </ span > < span style ="color:#96b5b4; "> sky</ span > < span style ="color:#c0c5ce; "> (dir, sun_pos); </ span > < span style ="color:#65737e; "> // evaluate Preetham sky model
1005
- </ span > < span style ="color:#c0c5ce; "> output.</ span > < span style ="color:#96b5b4; "> store</ span > < span style ="color:#c0c5ce; "> (color.</ span > < span style ="color:#96b5b4; "> extend</ span > < span style ="color:#c0c5ce; "> (</ span > < span style ="color:#d08770; "> 0.0</ span > < span style ="color:#c0c5ce; "> ))
1006
- }
1007
- </ span > </ code > </ pre >
1008
- < p > < em > Discussions:
1009
- < a href ="https://reddit.com/r/rust/comments/jg056t/introducing_rustgpu_v01 "> /r/rust</ a > ,
1010
- < a href ="https://news.ycombinator.com/item?id=24858172 "> Hacker News</ a > ,
1011
- < a href ="https://twitter.com/repi/status/1319274584915365888 "> Twitter</ a > </ em > </ p >
1012
1012
< h2 id ="popular-workgroup-issues-in-github "> Popular Workgroup Issues in Github < a class ="anchor " href ="#popular-workgroup-issues-in-github " aria-hidden ="true "> #</ a >
1013
1013
</ h2 >
1014
1014
<!-- Up to 10 links to interesting issues -->
0 commit comments