- Видео 9
- Просмотров 113 691
Arsiliath
Добавлен 22 мар 2019
GPU Compute Shader Work Groups
Thank you:
Scott: ImpossibleScott
Landon: landon.vfx
Thanks also to RobotFunk for catching a bug in the video.
Music: ruclips.net/video/x3umEBHGgho/видео.html
Scott: ImpossibleScott
Landon: landon.vfx
Thanks also to RobotFunk for catching a bug in the video.
Music: ruclips.net/video/x3umEBHGgho/видео.html
Просмотров: 6 798
Видео
01 Introduction to Cyclic Cellular Automata
Просмотров 3,3 тыс.2 года назад
Part of a class I teach on compute shaders. Sign up here: arsiliath.gumroad.com/ I forget what track the intro music is, but if you know please let me know. www.math.ucdavis.edu/~gravner/papers/cca.pdf originally found via softologyblog.wordpress.com/2013/08/29/cyclic-cellular-automata/
Tutorial: Disabling Unity 2021 HDRP defaults like sky, bloom, brightness, exposure
Просмотров 5 тыс.3 года назад
In HDRP, there are a lot of defaults that can be a bit confusing how to remove. Here's a quick tutorial on how to get back down to a very basic scene.
[OLD] Tutorial: Disabling Unity 2019 HDRP defaults like bloom, brightness, exposure
Просмотров 3,2 тыс.4 года назад
New video for unity 2020 here: ruclips.net/video/3-cgjUzU0DA/видео.html
Intro to Compute Shaders
Просмотров 44 тыс.4 года назад
Part of a class I teach on compute shaders. Sign up here: arsiliath.gumroad.com/ Twitter: arsiliath
Reaction Diffusion: A Visual Explanation
Просмотров 14 тыс.5 лет назад
A simple, visual explanation of Gray Scott reaction diffusion. arsiliath
Tutorial: Subsurface Scattering in Unity 2019 (HDRP SSS)
Просмотров 29 тыс.5 лет назад
psychobiotik How to get the built-in SSS working in HDRP. More info: github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/Subsurface-Scattering
Tutorial: Intro to Unity VFX Graph
Просмотров 8 тыс.5 лет назад
IMPORTANT For Unity 2019 please use this approach: imgur.com/a/fMudl1L instead of the "sequential grid" approach in the video. Quick tutorial on how to make a basic effect using curl noise, single burst spawn, and some basic remaps. To get it to look like the video at the beginning, just put it inside of a glass sphere, using glass from the Measured Materials library.
Pagac Points
Daugherty Plains
i did everything, but the sky is still blue, like flat blue, i tried to set a "gradient sky" with "black;black;black" as colors but nop...sky still blue :/ any idea/help ? (in my scene its grey, but in game its blue i dont understand :'(
Alright, so i fixed it, just in case anyone have the same probleme one day, dont forget to check if in the rubric "environment" of your CAMERA, the skybox is either on "sky" AND you have put some overide on the sky ( like "Gradient sky") to make it black, OR if the "sky type" of the camera is on "color and > "black". My camera was set on skymode > color> blue for some reasons ^^'
Such a great explanation, thank you!
formula at 4:08 contains a mistake : dispatchX x dispatchY x dispatchY. the Y is repeated two times, it should instead be dispatchX x dispatchY x dispatchZ. Question : Nvidia GPUs have thousands of warps. But each warp contains a maximum of 32 threads. So, wouldn't a numthread of 16x16x1 exceed that number?
Too abstract lol!!!
nice tutorial!
Big thanks for this clear explanation!
So what is the limit of threads. is choosing a high value like 64,64,1 or higher possible?
Yeah that's something I'd like to know as well, but if his suggestion of "Warps" is correct you take your Cuda Core's Count i.e. 2060 super has 2176 Cuda Cores and divide this by 32 to get the Warp Size aka 68 unique cores.
You have to look at limits when acquiring GPU device. I don't remember the name of this one, they're long to keep in mind, but it's last. Each limit has guaranteed value in spec of GPU and every vendor should respect it. So, 256 is guaranteed value. It means that 256,1,1, or 1,1,256, or 16,4,4 are valid values. Google GPU LIMITS keywords for answer how to ask GPU about this.
This is great and incredibly informative, but why would we use more than 1 Dispatch if it's going to get distributed in the GPU?
You dispatch once per kernel call. If you want to dispatch multiple kernels or one kernel multiple times, then you would do multiple dispatches. When you dispatch a grid, you choose the number of work groups and the work group dimensions.
@@arsiliath Oh haha! That's just the same video this comment is on! I am just confused because at 4:28 you show a Dispatch of (1, 1, 1), saying it uses much more of the hardware and that it's better, but then proceed to use a Dispatch of (4, 4, 4) and numthreads of (4, 4, 4). Why use multiple dispatches for this one texture?
@@dev_reimu What is your understanding of what "Dispatch" means? It might be helpful to articulate your understanding of dispatch (grid size), and also of num threads (work group size) etc, and make sure that you understand what's happening.
Nice video thanks dude, can you also add some code samples of compute shader, for me it's best learning also viewing a lot of examples
Thank you! For examples please see my course: arsiliath.gumroad.com/l/compute-shaders
This video is exactly what I needed! Slight nitpick though, is that the music is rather loud compared to your voice, and there is a lot of static as well. The good news is this isn't too hard to fix! The static is rather homogeneous so it should be easy to remove with something basic like Audacity
Amazing video! Thank you for breaking down such a complex topic and making it so much more understandable. Liked and Subscribed. I’m interested in the Compute Shader course you have on Gumroad. Is that still current? I know it’s only a few years old but I though I would check before purchasing.
Hi - yes! The course now has students using the current versions of Unity and it is still working. The Unity compute shader API has not changed much, if at all, since the course was created.
@@arsiliath Great! Thank you much!!
Great video, clear and concise explanation on a topic that is not covered that much, congratulations!
Nice video! :) Do you know of any way to query warp / wave size at runtime with vulkan for example? I've found it makes quite the difference whether or not a workgroup fits within the internal thread block - and you loose out on some performance if you just use the smallest possible workroup size for all devices. For instance: my laptop has intel internal graphics, and supposedly 8x8 workgroups work better there. But my desktop pc with a gtx 1080 ti has much larger warps and technically could go for 32x32 as far as i know. would be really cool if you could point me to any resources regarding this - i can't seem to find much in the vulkan specs (only things regarding maximum thread counts per workgroup)
Unfortunately I'm not sure. I suppose one hack would be to programmatically try a few different sizes and then see which leads to highest fps. Sometimes CUDA documentation is more robust, so if you look there and then try to find the corresponding thing in whatever framework you are using, sometimes that can be a good angle.
This is a great explanation, and i would love to see more if these!
Thank you!
Awesome video! Earned a new like and subscribe.
Thank you!
Loved your informative videos. Been subscribed ever since. Please continue this kind of content. Hoping for more frequent updates! Much love!
Thank you! Really heart warming to hear this.
The tutorial is amazing, but how (at 1:10) is that GREEN? This is baffling to me
i did not understand the part (laplacian(point)) in the formula, could you explain a little bit?
this is an amazing lesson on SSS, you've been very helpful, thanks bro!
But who'd do any of this in C#?
If you want to process a large batch of rendertextures it's a very obvious choice. Doing this on the CPU would be very taxing.
Extremely good tutorial. Simple examples that springboard a lot of complexity derived from it.
thank you
About halfway through the video I let out a long "AAAaaaahhhh...". Then it clicked, after writing several half-working compute shaders, watching many videos on them, reading guides, it wasn't until your examples that it suddenly made complete sense. This is both what I love and hate about programming; it feels impenetrable and extremely complex until it's suddenly the most natural thing in the world and you're embarrassed that you didn't get it before. That's what my electronics teacher told me when he was teaching the binary system; "you need to be stupid enough to understand this". I had the same feeling here, I over-complicated it until you succinctly and simply explained it to me. Thank you so much!
Thank you so much for that tutorial. For me as someone who just tries to start with compute shader it really helped me to understand the logic.
This is amazing. Thanks for sharing! I start understanding the PDE algorithm.
I slept to this video, calmest voice ever. I didn't understand anything yet, I'll attempt to do that when I'm awake. Please make more videos like this where you explain programming stuff calmly. Thank you.
I keep coming back to this video, hoping for more.
Hi - All the videos are available as part of the compute shader class here: notochord.xyz/compute-shader-class.html
These are so neat, and I really appreciate the fact that you included an explanation. By any chance, have you ever simulated systems with more than two chemical species?
Thank you! I haven't tried more than two chemicals, but here are some interesting approaches you may be interested in: ruclips.net/video/Q2w8dpemwt0/видео.html ruclips.net/video/9jHLS1qkCIU/видео.html ruclips.net/video/9PGtwthgynw/видео.html
Say I have a bunch of particles where I want to do physics simulations off of. I understand in the shader I could pass some known values to and the particle's id into the shader. However, what about returning the values computed from the shader (position / velocity)? if these are happening in parallel, how do I get this data back outside of the GPU?
Depends on the shader framework, but usually there is a way to get data from a GPU buffer and put it into a CPU array. More here: notochord.xyz/compute-shader-class.html
We need more stuff like this
Hi - All the videos are available as part of the compute shader class here: notochord.xyz/compute-shader-class.html
This is surprisingly good, especially for a beginner like me. The teaching style is very different from most youtube videos or udemy courses, but it works so well with a topic like this. I was even more impressed when I saw you take inspiration from biology for your shaders, as I'm a biologist myself. Unfortunately, I can't afford the course, but I will follow your channel closely. Thanks for this amazing tutorial.
Hey thanks! If you want to join the discord about all this stuff, feel free to DM me on twitter @arsiliath.
Super excellent, made a lot of sense! Thank you! :)
cool, very very cool. (The coding train should come here ) I'd like to attend to your classes if you offer a new course, tell me please (I'm subscribed to your newsletter, but I missed last course annoucement) congrats
I'm doing new cohorts every 3-6 months now. More info here: notochord.xyz/compute-shader-class.html
FYP GPU compute shader implementation: ruclips.net/video/xqfjL3vvk2k/видео.html and tutorial: maciejmatyka.blogspot.com/2022/01/compute-shaders-in-open-frameworks.html
Very nice professor Matyka! Thanks for sharing
thanks for your video. What do I do if my data size is larger than the amount of available threads?
You can dispatch multiple groups, so the GPU will just process them in turn if the grid that you dispatch has more threads than can be processed in one go. More here: notochord.xyz/compute-shader-class.html
This is by far the best explanation of this topic that I have seen. The visual examples really help to understand how the index works.
That's so intuitive.
Excited for this new series of tutorials!
Thank you! Could not figure out how to remove the clouds... thank you so much!
😍😍😍😍😍❤❤❤❤❤❤❤
Cool. Coreteks brought me here. God bless.
What are workgroup and invocation in workgroup.Are invocation referred to cell?So in each work group given cell will perform same computation and different workgroup cells will do different work?that is how is it arranged?
thats real enough for me. very volumetric thick look to it.
Thank you very much for that explanation, seriously though the explanation with the grid cells explains everything thank you very much
It's actually good but just not intuitive. It makes sense, that the HDR intensity has to be used, but I didn't get it by just playing around with it - therefore this is a helpful tutorial! Thanks
"Pisutiun" lmao
Great stuff!
What a great channel! I feel like this channel would explode if you put a little bit more energy into the voiceover, but I love your videos nonetheless!
Thank you for the feedback!
@@arsiliath No idea if you want this channel to explode like Mr. Frippertronics wants, but I prefer the calm tone. I can't stand artificial excitement, clickbait titles, bouncing around in the chair, the latest slang, and generally trying to appeal to TikTok fans. Keep doing what you are doing, IMO.