This project is ongoing.

Frog, 2025

Process Writeup

I started this project with the goal of recreating a frog from Sarenhale’s Frog Study, but in 3D. I aimed to explore modern NPR modeling techniques and custom shaders within Unity to replicate a digital painterly effect.

Sculpting (Blender)

I began by sculpting the frog in Blender, applying temporary vertex colors to make sure my proportions were correct. When retopologizing, I decided to keep my model pieces separate, as seen in some contemporary non-photorealistic 3D art. This, additionally, would aid rigging in the future.

I unwrapped the Frog and blocked the color shapes out on a custom texture. At this stage I care more about making the frog functional, not perfect.

Shaders (Unity)

I wanted to get the Frog inside Unity as quickly as possible, to begin experimenting with the shaders. I created a basic NPR (non-photo-realistic) toon-shader, focusing on grayscale values first.

Following the original painting, I added highlights and rimlights, but masked them to only affect the top half of the frog via a gradient.

Here I implemented a broad glossy-ness layer. This will be masked out later via custom textures.

Researching Advanced Painterly Shaders

I took a moment here to research how some modern advanced painterly shaders function, such as in this gorgeous concept demonstration by Pedro Antoine.

One way that Pedro Antoine, and others, approach painterly shaders is by creating a miniature billboard (a quad that is locked to face the camera) at every vertex of the model. That quad inherits the colors and normals, and thus lighting data, of its parent. When the quads are stacked it disrupts the traditional sleek rendering and silhouette of a 3D model to recreate that painterly affect.

This, with the addition of geometry nodes, is not very difficult to do in Blender. Unfortunately, Unity requires geometry shader calculations to be done in HLSL (as opposed to Shadergraph) or within the paid Amplify Shader Editor add-on. The purpose of this project is to learn as much as I can, so I lean against purchasing Amplify. While I am comfortable with HLSL and have touched on Blender’s geometry nodes before, I have not yet explored hand written HLSL geometry shaders. This will be an interesting and unexpected challenge.

Next steps:

  • Glossiness mask map

  • Custom object space normal map

  • Experiment with reflection probe for custom reflection colors

  • Rigging

  • Procedural hopping animation

This project is ongoing.