Dynamic Materials for Particle FX

I mentioned this technique in the flipbooks thread but I figured I should separate the conversation and post some info related to the subject. This is a pdf version of Keith’s talk at GDC he was kind enough to put together. The videos sadly are not attached but the written information is very useful and he also used the commenting tool in the pdf to add notes from the talk to explain the accompanying stills. I have also added some link from my site explaining Dot Product and a tutorial on a quick fire material and dynamic parameters inside of UDK. You’ll need to download the pdf to view the comments/narration Keith has made to the file.

FX of Uncharted 3

Dot Product

Fire Tut

Smoke Tut

Dynamic Parameters

Doug - thanks man!!! I missed the FX talk at GDC and have been dying to see those slides. They’ll tide me over until the video is up on the vault. Also spectacular tutorial videos. I haven’t had to use unreal in a while but the next time I do this is where I’ll start.

Awesome stuff - thanks for the article!
Especially like the particles that render to the deferred normals buffer - lovely idea and implementation.

Went through the fire tutorial before the weekend and I’m checking the smoke one now. They are describing similar techniques to what I do but there are plenty of gems that make me all giddy and excited. Like the gradient you used to control the distortion on the fire :nod: I haven’t gotten very far into the smoke one yet but that twist noise you are using, Man, I can already see how awesome that’s going to look… I can’t wait till I get home tonight to test this (what?! I’m blocked…:rolleyes:).

Thanks for reigniting my love for udk!

That sand work is amazing, really shows the benefit of having an FX programmer.

Never considered flow maps on particles (I do use uv distortion though), might have to try it out, did you use it a lot? Will fumble my way through creating that fluid velocity script, I have no easy method of creating them right now.

Very nice work! Thank you for sharing!

@Drew: I like to use UDK as a workbench for material tests. Since we have our own node based math material generator it’s a good place for me to do stuff at home and then perfect at work. We are lucky enough to have a lot of other math nodes that don’t exist in UDK. @Demno: That smoke shader can be used for atmosphere and lingering dust if you scale up your sprite and slow down time with the dynamic parameters hook in. Enjoy :D:

That is the most compelling argument I’ve heard in a long time for learning UDK along with whatever you have at work!

The way I look at it, having UDK in your toolbelt is just like being familiar with multiple modeling packages.

When I was in college, we used UDK and Maya. Here at Vicious we use Max and a proprietary engine. It’s all about learning the process and principles and being able to apply them in different softwares.

I agree. I’m working with a proprietary engine without a node based shader system and I’ve been using UDK materials to prototype different shader needs. Its been great for prototyping.

Cool stuff! Thanks for posting. Any reason folks are using gradient textures versus a texture coordinate with a component mask (R for horizontal gradient, G for vertical)? I can see making a texture memory (albeit minor) versus instructions (also minor) argument but still. Just curious.

Thanks again - really nice work. I saw the Eben Cook’s GDC presentation on the flood stuff (fluid sim > game mesh). You guys are doing some wicked stuff. Kudos.

[QUOTE=Airship;15366]Cool stuff! Thanks for posting. Any reason folks are using gradient textures versus a texture coordinate with a component mask (R for horizontal gradient, G for vertical)? I can see making a texture memory (albeit minor) versus instructions (also minor) argument but still. Just curious.
[/QUOTE]

We use texture coordinate masks whenever possible. Not only does it save on the texture memory, don’t forget that it saves on a texture look up.

Also, a horizontal texture coordinate gradient and a vertical tc gradient offset by 0.5 and combined in the shader creates radial gradients that can be used as mathematically perfect falloffs for lens flares or glows in effects, with no texture memory and no compression artifacts. All of our sun haze effects are buttery smooth and use no texture lookups. You can do diamond and box gradients this way also, which is limited use but cool…

You can even use Tex Coords to create procedural white noise like on a television.

Damn you guys - this is like a whole new juicy thread! I love it. Ways of repurposing UV coordinates for all kinds of crazy shenanigans.

This website has some other crazy examples of shader math done in web gl too:

http://www.iquilezles.org/apps/shadertoy/

A lot of it is too expensive for game shaders, but still some good inspiration.

Wyeth, that is the coolest shader trick I’ve heard of since… I don’t even know.
Absolutely brilliant! Thanks :):

cool thread, I like. one thing that you can do quite nicely is to combine UV based gradients and UV distortion. I’ve attached simple example - some setups might need some fiddling with coordinate setups, but with proper tiling, overlaying and mixing etc you can get some neat stuff out of it. animate the multiplier value for the distortion (either in the particles, using sine curves in the material etc) and you got yourself a nice bulge/pinch effect that properly shifts your texture coordinates. comes in handy on it’s own on explody particles or tiled and whatnot for surface effects like water and such.

[QUOTE=Demno;15381]Wyeth, that is the coolest shader trick I’ve heard of since… I don’t even know.
Absolutely brilliant! Thanks :):[/QUOTE]

Sure! And if you look at Florian’s attachment above, you can see the image of the shader network needed :cool:

Strobel, that procedural noise is very cool, I never thought to have such a highly tiled sine/cosine interaction like that. Will be making that into a material function for sure-

Been having fun playing with that white noise shader. What’s cool is if you make one of the texture coordinates really wide and then use a panner instead, you get some great scanline “rabbit ears” noise which looks really organic. Then you can make yourself a free mask using yet another use of the coordinate node to lerp it with the regular noise to get a scanline, then ceil that mask to get a sharp version of the scanline mask. Texture Coordinates are the best :D:

sorry to sound like a noob :stuck_out_tongue: but whats the Ceil node? not familiar with that one.