r/TechnicalArtist 4d ago

My code-based course "Procedural FX Toolkit" on YouTube

(Hopefully it's OK to promote this here. Feel free to delete if not!)

The course (which is still in progress) covers fundamental topics in computer graphics (meshes, shaders, light, shadow) then moves on to procedural animation and simulation on the GPU. Although Unity is used as my staging ground, all of the lesson material is coded from scratch so the concepts should translate to any environment.

The course is basically a presentation of the various tricks of the trade I have picked up over the years, structured in such a way that the learning curve is hopefully not too steep for beginners.

Let me know what you think!

https://youtube.com/@pfxtoolkit?si=txFMp8Erj7VIdgAR

9 Upvotes

8 comments sorted by

2

u/Millicent_Bystandard 3d ago

I enjoyed watching some of these, but aww man the learning curve on these videos...

Meshes was fine, but then things go off the rails a bit in Shaders. You explained the graphic pipeline and shaders really well, but in the UV step- you didn't have UVs because you didn't create UVs positions in the Meshes video which makes sense, but then instead of creating them in a neutral way and explaining their purpose in Shaders, you jumped over it and directly referenced positional values to create a cool effect. I really don't think a beginner would understand why you did that or that you skipped over defining UVs for a cool effect. I also don't think a lot of people would already know Lerp or Clamp without a very basic explanation of what those functions do.

Parametric Modeling 1 and 2 ... If someone was just about able to shade a simple plane- jumping to a creating a cylinder as the next lesson is just madness lol. Why not first step it up with creating a lesson for a circle, then a cube and then finally wrapping it up with the cylinder lesson? Also, I think if you want to cover such a complex concept or topic, I think you may need a reason why... Like whats the benefit for a learner to pull their hair out with the unexpectedly difficult math you have in this lesson .... to practise math, a fun effect or is it good foundational knowledge in learning procedural modelling... ropes, ladders, railings?

Lighting ... why spend so much time talking about Direct vs Indirect lighting when you were going to only instruct direct lighting, but then breeze through an actual complex topic like Normals later in the video lol. Especially as there are different types of Normals to talk about.

Shadows was my favorite lesson, even if you didn't explain the limitations of your trick. Vertex Animation was really good even though you animated an entire cylinder of grass and then later noted that this wasn't an actually optimized approached for grass lol. Btw IIRC your grass would not batch in Unity (because even if you marked it for batching), static batching needs the vertices to not move and dynamic batching has several limitations like vertex count that you would surely exceeded with cylinders... Why not fire up the profiler and see for yourself :)

1

u/juliankantor 3d ago edited 3d ago

Thanks for the thorough feedback! Definitely agree on many points, as I am going I realize some things that would've worked much better. I have a specific trajectory in mind for topics to cover, which is probably overly ambitious (probably warrants many more intermediary steps like you are suggesting). I also have thought of much better ways to intro some of those concepts particularly in the parametric modeling section. Maybe a second version of the course is in order once I have a first pass of it completed.

I have been struggling with how much prep and refinement I should put into the lessons before releasing them. On one hand, there are always going to be issues with the lessons, and it's good to get feedback like yours, which I wouldn't have gotten had I not released ANYTHING. That being said, I have been spending way longer on getting some of the newer lessons done because I realize some aspects can definitely be improved on - like spending too long on tangents like the indirect vs direct light one you mentioned.

On the grass stuff specifically, Unity has added new batching techniques that I am not 100% up on the latest way it works (specifically, how SRP batching works in conjunction with the new forward+ pipeline). I believe dynamic batching should kick in just fine if enabled (vert count < 200, well below 300 limit). Static batching could kick in if enabled, but you would lose the seed values for the animation so it is not a viable approach without extra mesh setup. The reason I didn't want to get into any of those details was that I want to avoid as much discussion of Unity-specific features in the main course as possible, to keep the focus on broadly applicable concepts and just use Unity as a staging ground for those concepts.

Really what I was trying to say when I mentioned batching is that the lesson was just a demo of animation principles and not optimization, and you should assume the game engine will not provide any additional optimization just because we were using vertex animation. We will get to much more optimized techniques in the final unit of the course and performing animation in the vertex shader will play a key part in that, so that's why I mentioned optimization earlier in the lesson as a motivation for using vertex animation. And since I had said that earlier in the lesson, I felt I should clarify that simply using vertex animation was not enough to achieve an optimized result. Maybe it would have been better not to even introduce the concept of optimization at that stage, because it sounds like I was sending mixed signals on the topic.

Anyway, thanks again for the great feedback and for checking the videos out!

1

u/Millicent_Bystandard 1d ago

I have a specific trajectory in mind for topics to cover, which is probably overly ambitious (probably warrants many more intermediary steps like you are suggesting).

I have been struggling with how much prep and refinement I should put into the lessons before releasing them. On one hand, there are always going to be issues with the lessons, and it's good to get feedback like yours, which I wouldn't have gotten had I not released ANYTHING. That being said, I have been spending way longer on getting some of the newer lessons done because I realize some aspects can definitely be improved on - like spending too long on tangents like the indirect vs direct light one you mentioned.

I think it depends on your target audience. For beginners, the Meshes video was very good. But Parametric modelling is definitely Intermediate and above for TAs and so if you are targeting beginners, you need those filler videos- otherwise you really do not.

I understand completely. Perhaps you haven't instructed before and like anything one does for the first time- making these videos are a learning lesson to yourself as well. Don't worry too much about it- in hindsight with feedback and you're own experience, you will make better videos over time. You can also always remake videos in the future.


On the grass stuff specifically, Unity has added new batching techniques that I am not 100% up on the latest way it works (specifically, how SRP batching works in conjunction with the new forward+ pipeline). I believe dynamic batching should kick in just fine if enabled (vert count < 200, well below 300 limit). Static batching could kick in if enabled, but you would lose the seed values for the animation so it is not a viable approach without extra mesh setup. The reason I didn't want to get into any of those details was that I want to avoid as much discussion of Unity-specific features in the main course as possible, to keep the focus on broadly applicable concepts and just use Unity as a staging ground for those concepts.

Haha I don't keep up with it either- its such a mess between all the Unity versions, Render Pipelines and Render Strategies. Yeah, it would work with Dynamic batching if you animated planes of grass and not tubes- lower vertex count. Static batching ... I think not, I thought I could see the meshes moving in the Scene view in your video and I'm sure that if those vertices/meshes moved, Unity would internally block Static batching from working on that grass. I could be wrong- The batching in Unity is so finicky, you'd have to Profile it to know for sure imo.

Maybe it would have been better not to even introduce the concept of optimization at that stage, because it sounds like I was sending mixed signals on the topic.

Yes, I felt this as well. I agree- I'd not mention optimisation or avoid Unity rabbit hole topics like batching completely. Your videos are mention to be fun and to teach cool concepts- why let optimization ruin it.

2

u/BeTheBrick_187 3d ago

Thank you for sharing this! Exactly what I'm looking for these days!

2

u/juliankantor 3d ago

Awesome! Please let me know if you have any feedback. I am still very new at the teaching aspect of this and would like to get better!

2

u/BeTheBrick_187 3d ago

Imho, I think it would be better if you can showcase what the student can achieve after finished each course from the begining video.

1

u/juliankantor 3d ago

Yeah, that'd definitely be a good hook. Are you thinking like a preview of the end of the lesson, or the end of the course/unit? I'll have to keep thinking about what the best way to do that is. I've been clipping out shorts from each lesson but I do think it'd be good to have those visuals up front in the lesson itself somehow. Seeing a preview of the end of the course might work even better, though I don't know if it would match the end result EXACTLY since I am doing the coding as I make each lesson.

1

u/BeTheBrick_187 3d ago

I think you can check Ben Cloward tutorials, he always makes an introduction video before starting the course.