Visual Development
A Fateful Night
A Fateful Night, Concept Style A - Procreate, 2023
Ethan Richards
A Fateful Night, Concept Shot
A Fateful Night, Style A
A Fateful Night, Style A Development Videos
A Fateful Night, Concept Style B - Procreate, 2023
Ethan Richards
A Fateful Night, Style B
A Fateful Night, Style B Development Videos
Programs Used:
Maya: Modeling
Substance Painter: Color maps, shader masks, and baking Normal/AO maps.
Unreal Engine 5: Shader Development, Post Processing Development, Rendering
Creating Custom Shaders
Shader Stills
Integrates Mathematical Systems including:
Fractional Brownian Motion
Random Noise
Cellular Noise
Trigonometry
Shadertoy Adaptions for Visualization
Main Code
vec2 st = gl_FragCoord.xy/u_resolution.xy; st.x *= u_resolution.x/u_resolution.y; vec3 color = vec3(0.0); vec2 q = vec2(0.); q.x = fbm( st - 0.03*(u_time)); q.y = fbm( st + 0.05*(u_time)); vec2 r = vec2(0.); r.x = fbm(st*6.008 + 4. * noise(st) + q + vec2(8.3,2.8) + .1 * sin(u_time)); r.y = fbm(st*10.0 + 4. * noise(st) + q + vec2(8.3,2.8) + .1 * cos(u_time)); color += vec3(fbm(5.0 * st*fbm(r)), fbm(5.0 * st*fbm(q)), fbm(5.0 * st*fbm(r + q))); color -= vec3( 1.0 - distance(vec2(0,1), vec2(st.x, st.y))) * .1; color -= vec3( 1.0 - distance(vec2(1,0), vec2(st.x, st.y))) * .2; gl_FragColor = vec4(color,1.0);
Main Code
vec2 st = gl_FragCoord.xy/u_resolution; float stripes = .2 + sin(st.x * 3.14 * smoothstep(-5., 1., sin(st.x * 4.0 + fbm(st.xx * vec2(1000., 20.)) * 6.))); vec3 color = vec3(fbm(stripes * st.yy - .07), fbm(stripes * st.yy + .01), fbm(stripes * st.yy + .03)); st *= 5.0; float v = cellular(st) * .2; color += vec3(v) * vec3(.8,.8,1.0); gl_FragColor = vec4(color,1.0);
Procedural Ship Modeling
Tools Used:
Houdini
Substance Painter
Unreal Engine
Unreal Engine 5.2
Houdini Controller Settings For Above Ship
Demo
Example Ships
Robot Model
Unreal Engine 5.2
Tools Used:
Maya
Adobe Substance Painter
Unreal Engine 5.2