For this project, I looked to recreate the character toon-shading effect used in Genshin. I used Klee, an iconic character, as my base model to work from. Thanks to Rachel who allowed me to explore the project in Unreal Engine instead :)
Achieved through reading PBR info from channels of the lightmap and compute using BlinnPhong
![image](https://private-user-images.githubusercontent.com/50472308/280822717-66243f02-053b-4efc-af42-7c75dfd3d034.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgzNDIwOTYsIm5iZiI6MTcxODM0MTc5NiwicGF0aCI6Ii81MDQ3MjMwOC8yODA4MjI3MTctNjYyNDNmMDItMDUzYi00ZWZjLWFmNDItN2M3NWRmZDNkMDM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE0VDA1MDk1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY0YmFjNjA2MmFiMDVkYjdhMWM0ZjNhZTQyMzk3MTI0MDY1YmE0NjE4ZDdiZDAxYTg4ZGU3NTgxNTA0YTFiNmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.q53nySqz2D4l9yO0evMfqspai80e_Cq-PiNk9miZLXU)
![image](https://private-user-images.githubusercontent.com/50472308/280852608-b679efc7-a01c-4afa-9903-5deec1cdd398.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgzNDIwOTYsIm5iZiI6MTcxODM0MTc5NiwicGF0aCI6Ii81MDQ3MjMwOC8yODA4NTI2MDgtYjY3OWVmYzctYTAxYy00YWZhLTk5MDMtNWRlZWMxY2RkMzk4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE0VDA1MDk1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE3ZTBhMTlhZmU3YmViNTlkY2Q4Y2M4OTE0ZjY2YTZmZWMwYTkwYzAxMDUyYTVlOTY4ZjNiOWU3Nzk5NmQ1MDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.wzfhv7rPpYInlFQPXm7OTKHK3eyr86d_-r64Kc4v1BA)
MetalMap used:
World-Aligned Shadow Texture Mapping
New:
SDF-based Shadow Calculation
![image](https://private-user-images.githubusercontent.com/50472308/280908226-b1cd237c-c71f-49c2-b3a5-9c2d4dc49e62.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgzNDIwOTYsIm5iZiI6MTcxODM0MTc5NiwicGF0aCI6Ii81MDQ3MjMwOC8yODA5MDgyMjYtYjFjZDIzN2MtYzcxZi00OWMyLWIzYTUtOWMyZDRkYzQ5ZTYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE0VDA1MDk1NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiOTE0ZmQ0NmJhN2MzZGVhOTA4ZGFmNzE2NTA5NTFmZDAxMjQ0MWMwZTliNjY0ZDBhZTg4MzYyY2RiYjYzZDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ae5FI0fsK0DHHVa_4TXLdcleUzymlotYt7OkvnsMGkE)
Lerping Artist-Controlled Light and Shadow Colors
Using Noise to Offset Outline Based on Time For a Windy Effect on Hair
Threshold at 1/10:
Threshold at 1/20:
Threshold at 1/29:
I used some marketplace assets that closely resembled Genshin Impact's modeling styles with the architecture mirroring the city where the character was from: "Mondstadt". Then I added my own lighting setup and post processes effect to it.
Here is one of my final hero render:
For the interactivity part, I wanted to showcase the shader performing at different lighting scenarios: another one at dawn, and another very stylized one. I implemented functions that would quick unload/load different lighting components & post process materials to achieve this. Here are the results on YouTube: YouTube Demo