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