morgan Profile Banner
morgan Profile
morgan

@CasualEffects

21,298
Followers
2,992
Following
2,626
Media
23,532
Statuses

Roblox Chief Scientist U.Waterloo & McGill Prof. @morgan3d .bsky Known for NVIDIA, Unity, Graphics Codex, Markdeep, G3D, Skylanders, E Ink, Titan Quest, Williams

Ontario, Canada
Joined January 2012
Don't wanna be here? Send us removal request.
Pinned Tweet
@CasualEffects
morgan
3 years
The @Roblox metaverse connects 100s of millions of players in millions of games, with consistent personas. As Chief Scientist, I'm now leading computer-, data-, and social-science research to continue Roblox's innovation for coexperience, creativity, safety, and digital civility.
Tweet media one
Tweet media two
Tweet media three
157
80
2K
@CasualEffects
morgan
11 months
It wasn't until I'd *taught* algorithms a few times that I finally understood why sorting is in the CS curriculum. Unfortunately, most curricula don't explain this! It is NOT because sorting is an important algorithm to learn to implement...
@ryanrwinchester
Ryan Winchester
11 months
As a 41 year-old software developer do you know how many times I've had to manually implement QuickSort? Zero. Maybe we should test for more useful skills like taking a slow SQL query and optimizing it.
220
291
4K
91
1K
7K
@CasualEffects
morgan
3 years
52
675
4K
@CasualEffects
morgan
5 years
Human latency
Tweet media one
48
2K
4K
@CasualEffects
morgan
11 months
By using different sort algorithms as a running example, we can cover ideas such as: - Asymptotic analysis - Space vs. time tradeoffs - Best case vs. worst case vs. expected case behavior - Functional vs. imperative implementations - Explicit stack vs. recursive implementations
Tweet media one
5
120
2K
@CasualEffects
morgan
11 months
We teach sorting in algorithms classes because it is a simple and easy to motivate EXAMPLE of different algorithms for accomplishing the same task. The solution isn't the point in the classroom. The problem is the point...
5
130
2K
@CasualEffects
morgan
11 months
In conclusion, the point of the sorting lectures you had in college was the lessons you learned along the way, not the sorting. I'm really sorry we didn't tell you that at the time!
Tweet media one
Tweet media two
23
106
1K
@CasualEffects
morgan
3 years
I'm excited to announce in partnership with the @NVIDIA Deep Learning Institute that the Graphics Codex is now a free online computer graphics rendering and ray tracing textbook at The programming projects run everywhere and are accelerated on RTX GPUs.
Tweet media one
17
435
1K
@CasualEffects
morgan
11 months
- Stable vs. unstable - Adversarial cases - Concurrency As a bonus, we can also point out that if you give your algorithm a cool name like "QuickSort", then generations of programmers will naively assume that it is the fastest sorting algorithm and use it...
7
30
1K
@CasualEffects
morgan
10 months
Note that Roblox uses the Right Handed, Y=Up 3D category. It matches the intuition you probably have from learning coordinates when graphing in school, follows my favorite textbooks, and plays nice with cross products: X × Y = Z; Y × Z = X; Z × X = Y.
Tweet media one
32
388
1K
@CasualEffects
morgan
11 months
As a professor, scientist, programmer, game developer, etc. what sorting algorithm do I use? WHATEVER SORT IS IN MY STANDARD LIBRARY ...
Tweet media one
6
27
1K
@CasualEffects
morgan
6 years
just changed my programming life. Suddenly regexps aren't write-only expressions...
Tweet media one
12
403
1K
@CasualEffects
morgan
3 years
I'm now Director of Hyperscale Graphics Systems research at NVIDIA! And my team is hiring PhD interns and senior scientist/engineer positions right now (thread):
Tweet media one
Tweet media two
81
80
1K
@CasualEffects
morgan
11 months
I'm amazed that the debugging experience circa 2000 in C++ with Visual Studio or CodeWarrior (or even xgdb) was more sophisticated than now with Python, JavaScript, and various GPU languages. We're really back to working with "printf" a lot instead of visual debugging.
64
54
1K
@CasualEffects
morgan
11 months
It isn't even because programmers will need to know the tradeoffs between different sorting algorithms to choose one (99% of the time)...
1
7
1K
@CasualEffects
morgan
3 years
It's my last day at @nvidia , a great company made by great people. Thanks for an amazing 12 years of collaboration accelerating ray tracing, AI, raster VFX, XR, esports, perceptual, and datacenter graphics. I look forward to everything the green team creates next! #76B900
Tweet media one
Tweet media two
Tweet media three
Tweet media four
77
27
949
@CasualEffects
morgan
11 months
Very, very, very occasionally, sorting performance or behavior matters so much for a specific application that I need think about it for a total of five minutes. And then I use: the radix sort THAT IS IN MY STANDARD LIBRARY. ...
7
17
954
@CasualEffects
morgan
5 years
Slides and transcript for "Ray Tracing a Procedural Planet", with links to all of the code. An easy and inspirational introduction to procedural landscape generation.
Tweet media one
Tweet media two
9
243
828
@CasualEffects
morgan
11 months
Unfortunately, what we've also done by using this convenient example of sorting and its many possible solutions is created generations of programmers who mistakenly think that sorting is an important open problem or something that matters for performance very often.
Tweet media one
5
22
868
@CasualEffects
morgan
6 years
Buy The Graphics Codex for only $10. Hundreds of detailed entries, a full book on rendering physically-based lighting and materials, and coding projects to learn computer graphics from scratch on Windows, Linux, or Mac.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
35
187
724
@CasualEffects
morgan
8 years
Introducing the Graphics Codex Programming Projects. 11 labs to teach yourself 3D graphics.
Tweet media one
12
220
659
@CasualEffects
morgan
3 years
Ivan Sutherland cofounded one of the most important 3D graphics companies, received a Turing award, and contributed fundamental work on hardware accelerated graphics, CAD, HCI, and VR. One of his contributions less well known outside of academia is...
Tweet media one
Tweet media two
Tweet media three
5
206
738
@CasualEffects
morgan
11 months
That said, heap sort in C is my favorite sort, just because it has a wicked cool implementation. But this is like Rubik's Cube or my favorite ice cream: it is neat, I like it, and it has zero to do with actual software development. ...
5
14
742
@CasualEffects
morgan
1 year
Just released on #Roblox : AI Material Generator! Create full PBR materials directly from text prompts. You can control variations, iterate, and change the scale.
Tweet media one
17
93
724
@CasualEffects
morgan
9 years
I just released Markdeep http://t.co/Iqk5YDMaQd. It is like Markdown on steroids, with client-side viewing. http://t.co/DciqIIkQT8
Tweet media one
14
395
622
@CasualEffects
morgan
3 years
I'm sharing my shadertoy ray tracing experiment framework, which I'd unintentionally kept private all this time! It includes extensible abstractions, FXAA, reflections, environment map, shadows, and minimalist physically-based materials.
Tweet media one
Tweet media two
6
122
645
@CasualEffects
morgan
2 years
Have to say, decades in the games industry have made me somewhat skeptical of the potential of "no code" programming.
65
52
643
@CasualEffects
morgan
2 years
Impressed with deep neural networks as the new hotness? Here's John von Neumann in 1956:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
13
125
636
@CasualEffects
morgan
5 years
You'd think game engine programming is all hot-shot graphics optimization, but really it is: - Motion vectors are wrong again - Alpha test is broken - Shader errors are off by one line - The hash table destructor takes that much time?!? - Ha ha, look at this physics bug.
33
75
590
@CasualEffects
morgan
2 years
I'm in my third decade of programming, and am astonished to keep finding that the most portable, write-once-run-everywhere language in 2022 is still...well-written C or C++ code.
27
48
599
@CasualEffects
morgan
6 years
Full source code and precompiled Windows binary demo for "Combining Analytic Direct Illumination and Stochastic Shadows" I3D'18 best paper ( @eric_heitz , @self_shadow , and @CasualEffects collaboration)
7
156
514
@CasualEffects
morgan
11 months
Talking to @KreekCraft today about streaming on #Roblox and the empowering creators on our platform.
Tweet media one
22
25
484
@CasualEffects
morgan
5 years
At GDC'19 I'll present a new high-performance ray traced global illumination solution for games using RTX: Developed by NVIDIA, McGill University, and the Université de Montréal.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
22
91
470
@CasualEffects
morgan
5 years
5 hours in and I've hit the dreaded "bring out the real-life crate of spheres" point in debugging the renderer...
Tweet media one
17
52
459
@CasualEffects
morgan
4 years
My new video conference background at NVIDIA.
Tweet media one
23
16
464
@CasualEffects
morgan
4 years
The RTXGI SDK we described at SIGGRAPH is now publicly available. RTXGI accelerates ray tracing on all DirectX Ray Tracing GPUs at runtime and streamlines artist workflows. Full dynamic GI for your game without noise, UV maps, or manual probe placement.
Tweet media one
Tweet media two
12
163
448
@CasualEffects
morgan
6 years
@swainrob @erkaman2 A great sequence for learning rendering for 3D graphics is: 0. Calculus and C++ programming (1 year, prereq) 1. Rendering in One Weekend 1, 2, 3 (5 days) 2. Graphics Codex (3 weeks) 2. RTR4 + Vulkan or DX12 & PBRT (years) Time estimates are coding time for the projects.
12
81
419
@CasualEffects
morgan
3 years
7
54
443
@CasualEffects
morgan
5 years
Ray tracing isn't just about reflections and RTX. Here are just a few things you can do with 100k rays/frame on CPU or GPU compute shaders...on GTX GPUs, non-NVIDIA GPUs, and even CPUs.
Tweet media one
11
115
407
@CasualEffects
morgan
4 years
The Graphics Codex programming projects now run on Jetson Nano . That means you can get a cute computer with a real NVIDIA GPU for US$99 and learn C++ and 3D programming on it! This is great for hobbyists, homeschooled teens, and low-cost teaching labs.
Tweet media one
Tweet media two
Tweet media three
9
112
413
@CasualEffects
morgan
5 years
Chapter 15 of Computer Graphics: Principles and Practice is free online: This is a deep dive (64 pages with code!) on the differences and enough information to implement each in software from scratch.
Tweet media one
4
123
413
@CasualEffects
morgan
9 years
I have ASCII art in design docs and code comments like this; seeing them rendered correctly by Markdeep is magic! http://t.co/41bIFVgt6n
Tweet media one
Tweet media two
12
252
398
@CasualEffects
morgan
8 months
Roblox is free for developers. The IDE, the code editor, the version control system, the 3D engine, the servers, the matchmaking server, the translation service, the moderation service, Android, iOS, Windows, macOS, PS4, PS5, Xbox, and Quest.
23
27
426
@CasualEffects
morgan
5 years
NVIDIA Dynamic Diffuse Global Illumination (DDGI) GDC talk now free in the GDC vault. Here's the link without the registration wall:
Tweet media one
7
133
408
@CasualEffects
morgan
5 years
Final build of my 64x64 space dogfighting #lowrezjam game now online at: Future hobby development continuing, but may surpass the jam's resolution limits.
16
89
379
@CasualEffects
morgan
2 years
This month Roblox Studio's music catalog will receive 100,000 new licensed songs, plus 100,000 new licensed sound effects from APM, Monstercat, Pro Sound Effects, Nettwerk Music Group, Position Music, and others that are free for creators to use on the platform.
21
31
373
@CasualEffects
morgan
8 months
Wait until the ML research community learns about the Dreams renderer, as they work their way from SDF rendering to volume rendering to point rendering....
@TweetEdMiller
Edward Miller
8 months
👀
Tweet media one
5
41
210
11
35
392
@CasualEffects
morgan
4 years
Windows 10 puts a fake python/3 executable in the path, ahead of the actual python. This breaks scripts and has caused me problems on nearly every cross-platform project I work on. The fake executable redirects to the Windows store:
25
138
347
@CasualEffects
morgan
4 years
Whoa....
6
93
367
@CasualEffects
morgan
3 years
Preprint of our new @UWaterloo graphics research paper, McGuire & Mara, MMPX Style-Preserving Pixel Art Magnification, 2021 Paper: Demo:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
17
102
362
@CasualEffects
morgan
2 years
A Dataset and Explorer for 3D Signed Distance Functions, JCGT'22 @yongyuanxi / @AndrewGlassner / @casualeffects Normalized, optimized, & categorized analytic SDFs + sample point sets. Perf. benchmarks, NeRF/DeepSDF-style AI without error from meshes, etc.
Tweet media one
Tweet media two
Tweet media three
5
84
364
@CasualEffects
morgan
8 years
100% procedural low-poly landscape generator as a solution to the Geometry Design project:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
2
97
329
@CasualEffects
morgan
7 years
TOP BURN A #pico8 1k jam: a full 3D game in 1024 characters.
8
126
318
@CasualEffects
morgan
5 years
Intro to computer graphics summarized in one slide deck from our review lecture: See for the full explanations.
Tweet media one
Tweet media two
Tweet media three
4
66
335
@CasualEffects
morgan
4 years
@AmazingThew Something life changing I learned early at NVIDIA is that "putting something in hardware" (creating an application-specific integrated circuit, ASIC) usually does not make a program faster. (thread):
5
91
327
@CasualEffects
morgan
5 years
Best explanation I've seen yet of this relative color phenomena. I had to take it into Photoshop to trust the image...it is correct.
7
80
316
@CasualEffects
morgan
6 years
Ryan Brooks "octahedral impostors" gives shockingly good LOD and prefiltering, at least for cartoony trees. I think this is a very important direction for combating aliasing as well producing scalability.
Tweet media one
2
89
305
@CasualEffects
morgan
5 years
The quadplay✜ fantasy console is now free & open source. Play, download, and create games at
Tweet media one
12
109
308
@CasualEffects
morgan
5 years
My nano+quadplay fantasy console now analyzes your source code and draws a state machine for your game in the IDE.
Tweet media one
5
43
291
@CasualEffects
morgan
5 years
Dreams on PS4 might be the most positive development ever in gaming. The vibe of anything is possible, creativity, and new worlds to discover is something I haven't felt since the early beta of Minecraft, and before that not since childhood gaming when everything was new.
6
42
288
@CasualEffects
morgan
4 years
A small change to your ray tracer's random number sampler can eliminate most noise from large area lights.
Tweet media one
4
78
305
@CasualEffects
morgan
7 years
Done with the tiny planet shader! Implicit surface land and sea, with a ray-marched cloud density function.
Tweet media one
5
70
283
@CasualEffects
morgan
5 years
Indirect lighting in God of War (2018)
Tweet media one
4
59
284
@CasualEffects
morgan
5 years
How I read a graphics research paper:
5
81
304
@CasualEffects
morgan
8 years
SIGGRAPH'16 Real-Time Transparency Talk video: (physically-based rendering gets hardcore!)
Tweet media one
6
113
279
@CasualEffects
morgan
5 years
I updated my Tiny Planet shader in preparation for a ProcGen talk this week:
Tweet media one
8
43
289
@CasualEffects
morgan
3 years
New work with @yongyuanxi , @JoeyLitalien , @FidlerSanja , @DerekRenderling , @_AlecJacobson , Kangxue Yin, Karsten Kreis, & Charles Loop: Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes, 2021
Tweet media one
4
74
289
@CasualEffects
morgan
3 years
Hands down gorgeous...but as a recovering rendering nerd, I'm just blown away that the power lines don't alias and the road texture doesn't repeat.
@NVIDIAGeForceFR
NVIDIA GeForce FR
3 years
Gameplay de Forza Horizon 5 👀
14
68
539
18
11
285
@CasualEffects
morgan
6 years
I just discovered that W only comes after Z in the alphabet if you're a 3D graphics programmer. To everyone else, the sequence "x, y, z, w" sounds really weird.
11
37
277
@CasualEffects
morgan
6 years
Welcome to ray tracing and the new hybrid future of real-time graphics. Games will now keep the amazing performance of rasterization methods and add the quality of ray tracing. With DXR, GPU ray tracing just became mainstream.
10
123
273
@CasualEffects
morgan
6 years
I've been coding for VR for almost two decades, and I still find this stupidly funny as a programmer in-joke every time that I type it: for (int eye = 0; eye < 2; ++eye) { ... }
11
44
264
@CasualEffects
morgan
5 years
Now available: Majercik et al, Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields, JCGT 2019 A noise-free, robust, and efficient dynamic irradiance approximation targeting global illumination for games.
Tweet media one
3
93
279
@CasualEffects
morgan
6 years
Shaved yak game jam: 1. Create a new fantasy console 2. New language & compiler 3. New documentation system for the console 4. Make engine 5. Assets 6. Write short, elegant game
12
52
248
@CasualEffects
morgan
2 years
Wow, Blender got really good in the past decade, huh?
22
1
276
@CasualEffects
morgan
4 years
NVIDIA is a great company to work at.
15
9
264
@CasualEffects
morgan
7 years
I've gone too far...minimal flight game in 243 characters + 6 sprites for #pico8 .
17
56
245
@CasualEffects
morgan
7 years
My GDC talk on light field probes is now online: Full paper & code:
Tweet media one
6
98
257
@CasualEffects
morgan
3 years
It is relatively easy to write a compiler. It is challenging and requires about 5x as much code to write a compiler that gives useful error messages, because you structure it differently when you need to retain state and history. This applies to most tools programming as well!
11
34
262
@CasualEffects
morgan
5 years
You can have a great software career without a computer science *degree*. But that *knowledge* is essential at high levels of system building and you need to gain it somehow, if not at a university. CS isn't elitist academic credentialing. It is practical science and engineering:
6
39
260
@CasualEffects
morgan
4 years
I just wrote a line of Python that generates a line of JavaScript that produces a line of HTML that embeds a JavaScript program that compiles a Python program and runs it in a browser...without irony.
Tweet media one
18
38
257
@CasualEffects
morgan
5 years
At #SIGGRAPH 2019, @Peter_shirley , @_cwyman_ , and I are teaming up to teach a unified Intro to Real-Time Ray Tracing course. If you're a game or hobby programmer with no ray tracing experience, we'll teach you parallel ray tracing in 3 hours. Can't wait? See the replies...
Tweet media one
4
62
259
@CasualEffects
morgan
8 years
How to pronounce technical terms in graphics in English: e.g., skip the "s" in Fresnel!
Tweet media one
40
110
254
@CasualEffects
morgan
3 years
This is one case of a general set of really handy math tricks. I'll explain what's going on at an intuitive level in this thread and give the other tricks. Transformation matrices compose by multiplication: applying transform B to A to vector B is B * A * v. ...
@mmalex
𝖒𝖒𝖆𝖑𝖊𝖝
3 years
TIL (from , who is not on twitter afaik) if you interpolate camera matrices in log space, the center of rotation is preserved. this is awesome for smoothing camera paths and I cant believe I didnt do this before. may this tweet make you less dumb than me
7
20
209
6
67
260
@CasualEffects
morgan
5 years
Today is my last as a professor at Williams College, after 12 terrific years teaching CS, game design, and film & media studies in the purple valley. I've migrated my research and open source to and will be moving course materials soon.
9
31
256
@CasualEffects
morgan
6 years
Super fast perceptual color difference for 8-bit sRGB
Tweet media one
5
44
250
@CasualEffects
morgan
3 years
Or, you could make a table with three legs.
@Rainmaker1973
Massimo
3 years
NOROCK is a table which provides a solution to table instability through a mechanical self-stabilization system [video: ] [more: ]
11
59
437
17
17
250
@CasualEffects
morgan
4 years
Krita has become a very good free, open source paint program on Windows, Linux, and Mac:
Tweet media one
5
35
249
@CasualEffects
morgan
6 years
Maybe it's time you got up to speed on ray tracing. If you don't know where to start, don't worry, we've got you covered! Here are three books to take you from zero to the speed of light:
Tweet media one
4
64
241
@CasualEffects
morgan
7 years
Presentation slides and reference code for Light Field Probes I3D'17 now online:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
5
111
249
@CasualEffects
morgan
4 years
This is not video of a tennis match (notice that the background is static and the players cast no shadows). It is synthesized video of character sprites that are controlled by players, creating a near-photorealistic game [...of Pong 😀].
@_akhaliq
AK
4 years
Vid2Player: Controllable Video Sprites that Behave and Appear like Professional Tennis Players pdf: abs: project page:
40
555
2K
6
69
248
@CasualEffects
morgan
2 years
I'm excited to share the news of Roblox’s acquisition of Byfron, leader in anti-cheat tech. Our latest move to make Roblox the best platform for our community through industry-leading technology for our creators. Welcome, @ByfronTech !
20
21
248
@CasualEffects
morgan
6 years
As a graphics geek, I always enjoy the AO greeble kitbash version of movies at least as much as the final frames. e.g., Blade Runner 2049, SW:TFA, Inception, Wonder Woman
Tweet media one
Tweet media two
Tweet media three
Tweet media four
4
36
232
@CasualEffects
morgan
3 years
Working on Roblox has radically changed my mind about "no code"/"low code" programming. I still feel that traditional programming is the right approach for most software development and language and tools improvements are the best way to accelerate it, but...
6
39
244
@CasualEffects
morgan
3 years
I use 7 main ray generation shaders across projects from video game rendering to light field displays. @zandermajercik and I will release these as public domain in Ray Tracing Gems 2 for everyone to use. Thanks to @acmarrs , @Peter_shirley , and @IngoWald for editing!
Tweet media one
Tweet media two
3
27
251
@CasualEffects
morgan
1 year
@JedDevs @MaximumADHD @Quenty @grilme99 We've come a long way, baby! [My 2005 test place on the left, 2023 Winds of Fortune on the right]
Tweet media one
Tweet media two
3
26
246
@CasualEffects
morgan
5 years
If most of your attempts don't fail, then you aren't trying hard enough. Good artists/writers/engineers/scientists/etc. don't just have good ideas. They also iterate through the mediocre ones very quickly to get them out of the way.
5
57
230
@CasualEffects
morgan
5 years
@tom_forsyth Ah, the dreaded "if loop"
5
2
222
@CasualEffects
morgan
6 years
Denoising is exciting so many of us in graphics research because it is the key to rendering film quality visuals in real time. Denoising = 1000x speedup for path tracing Path tracing = 10x AAA game visual quality, at 1/100x artist & code cost
4
59
231