Home Digital Sketchbooks

Sketchbook: Retrotation / Zephir62 / Matt Olick

polycounter lvl 12
Offline / Send Message
Zephir62 polycounter lvl 12
currently seeking contract / employment~

doing daily doodles

TQPHJv4.png
b7n5coZ.jpg
JUy7WEp.jpg

Replies

  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    0OZLGBojpg

    While I seek a job with a studio, I've decided to start a project using PBR shaders and UE4 to create an airship battle game. More details to come~

  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    bjs7bQI.png

    First attempt at clouds ~ trying out plane-meshes next
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    Day #2 - volumetric clouds... a success! (music and sound design also produced by me)

    [ame]https://www.youtube.com/watch?v=ldn--0EVstE[/ame]
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    [ame]https://www.youtube.com/watch?v=dORFqY0IN-Q[/ame]

    dpTuZTo.png

    Day #4: Polish, adding lighting... cloud mesh is 200 polys. Next up, customizable scripted day/night cycle :D
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    LZ793r8.png

    Day #5 : learning more about lighting, orthographic second draft~
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    g3gl7Eq.png

    Day #6 : picking airship colors
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    IiquZRD.png
    inbetween revamping my resume and portfolio, been painting more on this orthographic.


    wFd9hlG.png
    I had an idea today, and I don't believe I've seen any complex voxel character rigs with PBR textures yet... wonder how this is gonna turn out! Planning on putting a windy scarf attached to his neck, made of voxel particles that pull toward a point in local space. When the character moves, the emitter can be rotated in worldspace to oppose the player's movement direction (and perhaps rotating to a specific direction during idle). Going to be putting this guy in tomorrow and setting up the rest of his textures~ wish me luck
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    3o85xuChT9oWBOOZvq.gif

    windy scarf and custom animations coming up next
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    uQ9SUVW.png
    well there goes today. Waiting on my free trial of 3DS Max to come in email from Autodesk

    tomorrow, 3D cannon balls using Substance Designer for textures and DDO for additional normal map adjustments (such as crater holes), placing the cannonball in front of the camera with animated smoldering FX via Cascade

    Still seeking job~~~
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    XiaNoWg.png

    improperly mapped bones causes scarf to whirl in a tornado. Bug, or feature?

    Updating project from 4.8.3 to 4.9, to fix solved broken wind -> cloth bug.
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    EDIT:
    off to make this hero a mount!
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    9JMEHPw.gif

    changed gravity from 0.7 to 1.5 to great effect, along with inverting the bend resistance (I was interpreting it backwards from the documentation)
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    8d3kqzV.png

    An art director is needed in Troveland! wish me luck~
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    Created a tutorial for Scanline Noise w/ Mouse Touch:

    https://www.shadertoy.com/view/ltjSDm
    // defining Blending functions
    #define Blend(base, blend, funcf) vec4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a))
    #define BlendOverlayf(base, blend) (base < 0.5 ? (1.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend)))
    #define BlendOverlay(base, blend) Blend(base, blend, BlendOverlayf)
    #define BlendAddf(base, blend) min(base + blend, 1.0)
    #define BlendAdd(base, blend) min(base + blend, vec4(1.0))


    // animated noise function
    float snoise(in vec2 co){
    return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
    }


    // distance calculation between two points
    float dist(vec2 p0, vec2 pf){
    return sqrt((pf.x-p0.x)*(pf.x-p0.x)+(pf.y-p0.y)*(pf.y-p0.y));
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////


    // defining extra variables

    const float speed = 10.00;

    vec2 offset = vec2(0.0, iGlobalTime) * speed;


    ////////////////////////////////////////////////////////////////////////////////////////////////////


    // FRAGMENT SHADER

    void mainImage( out vec4 color, in vec2 fragCoord )
    {
    // add some movement
    vec2 pixelCoord = fragCoord + offset;

    // basic uv sampling
    vec2 uv = floor(pixelCoord) * 2.0;

    // solid color for the background
    vec4 backcolor = vec4(0.22, 0.22, 0.22, 1.0);

    // generate scanlines from noise image, by stretching UV coordinates along Y-axis
    vec4 scanlines = texture2D(iChannel0, uv / iResolution.xy * vec2(0.0,1.0));

    // use an 'Overlay' function similar to Photoshop's, to blend the scanlines and backcolor together
    vec4 firstpass = BlendOverlay(backcolor, scanlines);

    /////////////////////////////


    // generate animated noise
    float n = snoise(vec2(pixelCoord.x*cos(iGlobalTime),pixelCoord.y*tan(iGlobalTime)));

    // blend animated noise with the firstpass, using 'Overlay' function defined at the beginning of shader-code
    vec4 secondpass = BlendOverlay(firstpass, vec4(n, n, n, 1.0));

    /////////////////////////////


    // calculate the distance between: the current pixel location, and the mouse position
    float d = dist(fragCoord.xy,iMouse.xy);

    // change the size of the gradient-distance over time, multiplied by
    d = d*(sin(iGlobalTime)+7.0)*0.003;

    // control the falloff of the gradient with a power/exponent, and multiply 'd' by the animated noise
    d = pow(d*n,0.5);

    // clamp the values of 'd', so that gradientgen cannot go below a 0.05 value
    d = min(d,1.0);

    // list the max,min gradient values, and linearly interpolate between the values using 'd' as a scale
    vec4 gradientgen = mix(vec4(0.1, 0.1, 0.1, 1.0), vec4(0.05, 0.05, 0.05, 1.0), d);

    // blend the second pass and the mouse-controlled gradient together
    vec4 thirdpass = BlendAdd(secondpass, gradientgen);

    // final output
    color = thirdpass;

    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    Revamped my portfolio and resume. Looks sweet now! www.mattolick.com/Resume_Matt_Olick.pdf

    Still seeking employment.

    Here is another GLSL shader, Sand Sparkling Irregularly in Sunlight (Incl. tutorial)
    [use mouse to move sun/focus]:

    https://www.shadertoy.com/view/llSXzc
    // defining Blending functions
    #define Blend(base, blend, funcf) vec4(funcf(base.r, blend.r), funcf(base.g, blend.g), funcf(base.b, blend.b), funcf(base.a, blend.a))
    #define BlendAddthird(base, blend) min(base + (blend*0.3), vec4(1.0))
    #define BlendAddtenth(base, blend) min(base + (blend*0.06), vec4(1.0))


    // distance calculation between two points on the Y-plane
    float dist(vec2 p0, vec2 pf){
    return sqrt((pf.y-p0.y)*(pf.y-p0.y));
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////


    // FRAGMENT SHADER

    void mainImage( out vec4 color, in vec2 fragCoord )
    {

    // solid color for the background
    vec4 sandcolor = vec4(0.9606, 0.6601, 0.1445, 1.0);

    // textured noise, greyscale at a low resolution 64x64 pixels
    vec4 sandtexture = texture2D(iChannel1, fragCoord / iResolution.xy);

    // specular noise, colored at a higher resolution 256x256 pixels
    vec4 sandspecular = texture2D(iChannel0, fragCoord / iResolution.xy);

    // make extra specular maps and push their UVs around, to create a jittered fade between chunks of overlapping RGB colors.
    vec2 plusuv = floor(fragCoord-sin(iMouse.yy*0.03));
    vec2 reverseuv = floor(fragCoord+cos(iMouse.yy*0.018));
    vec4 sandspecular2 = texture2D(iChannel0, reverseuv / iResolution.xy);
    vec4 sandspecular3 = texture2D(iChannel0, plusuv / iResolution.xy);

    // bump highlights on sand specular where RBG values meet, and cut out the rest
    sandspecular.xyz = sandspecular.xxx*sandspecular3.yyy*sandspecular2.zzz*vec3(2,2,2);

    // calculate the distance between: the current pixel location, and the mouse position
    float d = dist(fragCoord.xy,iMouse.xy);

    // reduce the scale to a fraction
    d = d*0.003;

    // control the falloff of the gradient with a power/exponent
    d = pow(d,0.6);

    // clamp the values of 'd', so that we cannot go below a 0 value
    d = min(d,1.0);

    // blend together the sand color with a low opacity on the sand texture
    vec4 sandbase = BlendAddtenth(sandcolor,sandtexture);

    // let's prep the glistening specular FX, by having it follow the diffuse sand texture
    vec4 darkensand = mix(sandtexture,vec4(0,0,0,0), d);

    // have the specular map be reduced by the diffuse texture (ingame: replace mouse cursor with player camera)
    vec4 gradientgen = mix(sandspecular, darkensand, d);

    // blend the diffuse texture and the mouse-controlled hypothetical-specular gradient together
    vec4 finalmix = BlendAddthird(sandbase, gradientgen);

    // final output
    color = finalmix;

    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////
  • Zephir62
    Offline / Send Message
    Zephir62 polycounter lvl 12
    forgot to post this:

    3oEduNUfltACtEt8ic.gif
  • Zephir62
  • Zephir62
Sign In or Register to comment.