**Developing New Tech**
Planning ==== With Artist + Programmer (+ Art Lead + Programming Lead) 1. Look 1. Concept art 2. Example images/videos from other games 3. Photos from the real world 4. Conversation: "Like this, but ..." 2. Budget 1. How much run time (CPU/GPU)? 2. How much data (CPU/GPU)? 3. Preprocessing? Level load? Background ==== How have others done anything similar 1. Papers 1. For rendering: I3D, HPG, JCGT, SIGGRAPH 2. Focus on conferences with real-time focus 3. Gems, ShaderX, etc. books 2. Presentations 1. GDC (some free in Vault, check for slides elsewhere) 2. SIGGRAPH courses 3. NVIDIA GTC 3. Blogs 1. Google 2. Game Developer (but doesn't always get technical enough) 3. Game developer's twitter 4. Graphics weekly 4. Is there anything that looks right, but is too slow 1. Film Production 2. Physics Simulation Prototype ==== 1. *Fast* iteration, fake assets 1. Small test map or sandbox app 1. Many developers build a sandbox app outside game engine 2. I used to use one that auto-reloaded any shader file or image file change, w/ sliders for shader parameters. It could load static models but not animation 3. For shader only, I've even used shadertoy 2. OK to test on plane, cube, sphere 3. Test optimization (if necessary) 1. Approximate, bake into texture, leave stuff out 2. Will do final optimization later, but need to have some confidence the final version will be able to achieve the look you want (especially if approximating or dropping some parts) 2. Mock up effect, share with artists 1. Feedback: is this going in the right direction 2. It won't look final, try to look past that. Implement in Game ==== Programming step 1. Leave control to artist 1. Textures with as plausible as possible default 2. Parameters 1. With plausible defaults 2. And limits on values 2. Reparameterize texture parameters * Should be 0-1 3. Make a preprocessing stage on import or load if necessary
Tune ==== Art step 1. See if desired look is achievable 2. How hard to achieve? 3. Loop back with programmer for feedback & tuning Optimize ==== 1. Once final, make a pass to optimize perf & memory 1. Bake in some parameter values 1. Preprocess computation into textures Technical Artist workflow ==== 1. Some studios have tech artists who write shaders & scripts or blueprints 2. Tech artist through prototype or implement, may still need programmer to optimize Examples ==== 1. Civilization V water 1. Near and far shots of sun on water 2. Desire to avoid aliasing in other solutions 3. Existing tech with scrolling layers of texture 4. Prototype in OpenGL/GLSL sandbox 5. Implement into D3D/HLSL engine 6. Artist tuning 7. Second round for sun position, water surface look 8. [Paper on the techinque](https://www.umbc.edu/~olano/papers/lean) 8. [Live web demo](https://www.selfshadow.com/sandbox/gloss.html) of a similar technique 2. Arcane Showdown fog of war 1. Google image & video examples from artist 2. Quick prototype in [shadertoy](https://www.shadertoy.com/view/MsyfWz) 3. Iterate prototype with artist 4. Implement in game 5. Iterate look in game with artist 6. Gameplay [image](https://imag.malavida.com/mvimgbig/download-fs/arcane-showdown-29221-1.jpg) & [video](https://youtu.be/l4lsDbppnf8) 3. [Blog series by Sébastien Legarde](https://seblagarde.wordpress.com/2012/12/10/observe-rainy-world/). Development of rain effects for DONTNOD's Remember Me (2012).