It’s August of 2023 now, pretty much one year since I started my job in July as an Associate Technical Artist at Polyarc Games! I am now 24 years old and more knowledgeable about shaders, Blueprints, working on a team, and Unreal Engine than I was a year ago…

I’ve got some topics I want to delve deeper into and specialize in, so I want to start a log of my Tech Art Learning journey! It will be helpful to look back on as well as refer to when providing resources to others. I see a lot of amazing tech artists and can’t help but wonder how they got their knowledge base and skills to such a proficient level.

I want to share my learning process publicly. “Learning in public”, as the founders of Glasp call it.

Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.

Some of the amazing tech artists out there include:

  • Asher Zhu
  • Freya Holmer
  • Inigo Quilez
  • Ghislain Girardot
  • Chris Zuko

Tech art is a black box in a lot of ways and it can be difficult to know where to start to proficiency in complex programs that combine geometry, art, and programming. Tech art is all about passing and modifying information through different channels and magically creating a visual output through the manipulation of that information.

These are my current learning goals:

  1. To be highly proficient and have an intuitive understanding of geometry, esp. in 3 dimensions. I know this will aid in any other learning endeavors. The universe and game engines are built from geometrical concepts!
  2. Know the ins and outs of Niagara, Unreal Engine’s VFX system. Especially for simulation and optimization of vfx.
  3. Proficient with HLSL and shader related code.
  4. Learn the basics of creating and executable and setting up Game Engine tools.
  5. Intermediate or higher proficiency with Blender, esp. in regards to tech artist heavy processes. (Rigging, UV mapping, vertex paint, custom flow map/texture creation, etc.)
  6. Understanding the steps of the rendering pipeline to a point where I can utilize tools like RenderDoc more effectively and break down rendering presentations/papers for learning purposes.

For Niagara, right now I am making my way through the content examples in UE5:

I haven’t been able to find any mind-blowing resources for learning this material. So my best bet is to go through everything one by one and break it down until I fully understand it. This way I can understand how everything works at a base level and make my way to more intermediate Niagara simulation content that is available online from tech artists.

Notes are a great way to solidify info and make it easy to transfer info to flashcards or look back

1.3:

  • Only Particle scripts are run on GPU
  • System and Emitter scripts are limited to CPU operations (cannot sample textures, cannot do distance field operations, etc.)

1.4

Understanding the Vortex Velocity module: https://youtu.be/LiCYRpYffko?t=1007

After watching the section of the video, I took a look at the module in the node graph and walked through each step. I attempted to understand each section, but if I got stuck on one thing too long, I made a mental note and moved on. If I found something I understood but took me a bit to piece together, I saved it to come back to again later.

Cross Product Explanation: https://www.youtube.com/watch?v=h0NJK4mEIJU
Be careful when working with adding velocity in update! Multiply by deltatime depending on which script the module is being used in. This makes sure the physics matches the framerate. (See 1.1 to understand why)

Found a great talk on programmable VFX with Niagara: https://www.youtube.com/watch?v=mNPYdfRVPtM&t=510s

Recreating scratch modules from the video to teach myself what’s going on.
  • Particles.velocity attribute is in cm/s
  • At the end of the day, this all compiles into HLSL!
  • Design Philosophy: Everything is exposed, organized by namespaces, and parameter maps (particle payload)
  • Any value inline can be converted into an HLSL expression. Can use HLSL functions like Rand(), etc.
  • Dynamic inputs are built just like modules
A useful dynamic input to remember to create a 0-1 gradient in values over a defined distance
  • Events – payloads (as structs) can be sent by emitters
@34:21 in video
  • NOTE: Look into Houdini –> Unreal plugin for raw data transfer
Systems is where emitter sequencing can happen! Using a sequencer asset.

1.5

  • Stack context is referring to the namespace – what section of the stack we are in. (Particle Spawn, Particle Update, Render, etc.)
  • You can think of a particle as a packet of information with a bunch of variables in it.
  • The variables in the particle payload persist from frame to frame, while Transient variables are only local to a given stack context.
A useful dynamic input to remember to create a 0-1 gradient in values over a defined distance

I will continue to update as I make my way through the material with notes and key insights!

Tech Art Diaries 02

In this post, I’ll be continuing with my Niagara deep dive and going through the content examples in UE5! Also! I got promoted from Associate Tech Artist to just Tech Artist! ✨ I found another great Niagara Overview talk from Wyeth Johnson: https://www.youtube.com/watch?v=bX6tdCdOEVA Most of the good stuff is at the end after16:38, going through…

Continue Reading

Tech Art Diaries 01

It’s August of 2023 now, pretty much one year since I started my job in July as an Associate Technical Artist at Polyarc Games! I am now 24 years old and more knowledgeable about shaders, Blueprints, working on a team, and Unreal Engine than I was a year ago… I’ve got some topics I want…

Continue Reading