diff --git a/INSTRUCTION.md b/INSTRUCTION.md new file mode 100644 index 0000000..c9c012d --- /dev/null +++ b/INSTRUCTION.md @@ -0,0 +1,26 @@ +# lab06-proceduralFace + +Let's practice parameterization! We'll be starting with an oh-so-beautiful gingerbread man face that looks like this: +![image](https://github.com/user-attachments/assets/4707eb0a-b25e-4eda-84e3-3bb336981781) + +## Setup +Start by forking [this shadertoy](https://www.shadertoy.com/view/XftyR8) + +## Task 1 +In the faceSDF function, add a new float parameter called SUPRISE a value between 0 and 1. Copying the way EYE_SEPARATION is used, modify the face such that the gingerbread face looks more or less surprised based on the value of SURPRISE. SURPRISE = 0 should be not very surprised, and SUPRISE = 1.0 should look very surprised. Note that the face shouldn't look broken for any value in that range! +Changing this parameter should change at least 3 geometic attributes of the face and more than one facial feature (just eyebrows are NOT SUFFICIENT). + +![image](https://github.com/user-attachments/assets/76d63b1b-f3af-456a-8031-8b8da0abe125) + +## Task 2 +Your own parameter! Create a new attribute of your choice that maps to a procedural face characteristic in the domain of [0,1]. It SHOULD NOT be a literal attribute, eg. eye-separation or mouth size, but instead a more qualitative, subjective quality that you tie to specific geometic parameters using your design sense. Have fun! + +## Extra Credit +In the faceSDF function, create a new float parameter called SADNESS. Follow the same guidelines as outlined in Task 1. + +## Submission +- Create a pull request to this repository +- In the README, include the names of both your team members +- In the README, create a link to your shader toy solutions +- Make sure your shadertoy is set to UNLISTED or PUBLIC (so we can see them!) + diff --git a/README.md b/README.md index c9c012d..50516d7 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,13 @@ # lab06-proceduralFace -Let's practice parameterization! We'll be starting with an oh-so-beautiful gingerbread man face that looks like this: -![image](https://github.com/user-attachments/assets/4707eb0a-b25e-4eda-84e3-3bb336981781) +In this lab I practice parameterization by making emotion parameters for a procedural gingerbread man face in [this](https://www.shadertoy.com/view/t3BBDV) shadertoy project. -## Setup -Start by forking [this shadertoy](https://www.shadertoy.com/view/XftyR8) - -## Task 1 -In the faceSDF function, add a new float parameter called SUPRISE a value between 0 and 1. Copying the way EYE_SEPARATION is used, modify the face such that the gingerbread face looks more or less surprised based on the value of SURPRISE. SURPRISE = 0 should be not very surprised, and SUPRISE = 1.0 should look very surprised. Note that the face shouldn't look broken for any value in that range! -Changing this parameter should change at least 3 geometic attributes of the face and more than one facial feature (just eyebrows are NOT SUFFICIENT). - -![image](https://github.com/user-attachments/assets/76d63b1b-f3af-456a-8031-8b8da0abe125) - -## Task 2 -Your own parameter! Create a new attribute of your choice that maps to a procedural face characteristic in the domain of [0,1]. It SHOULD NOT be a literal attribute, eg. eye-separation or mouth size, but instead a more qualitative, subjective quality that you tie to specific geometic parameters using your design sense. Have fun! - -## Extra Credit -In the faceSDF function, create a new float parameter called SADNESS. Follow the same guidelines as outlined in Task 1. - -## Submission -- Create a pull request to this repository -- In the README, include the names of both your team members -- In the README, create a link to your shader toy solutions -- Make sure your shadertoy is set to UNLISTED or PUBLIC (so we can see them!) +I add two parameters called SURPRISE and ANGER that can take values from 0 to 1 and modify the face based on how extreme the emotion is. Here are some of the results! +|![](images/surprise0anger0.png)|![](images/surprise1anger0.png)|![](images/surprise2anger0.png)| +|:--:|:--:|:--:| +| *Surprise: 0, Anger: 0* | *Surprise: 0.5, Anger: 0* | *Surprise: 1, Anger: 0* | +|![](images/surprise0anger1.png)|![](images/surprise1anger1.png)|![](images/surprise2anger1.png)| +| *Surprise: 0, Anger: 0.5* | *Surprise: 0.5, Anger: 0.5* | *Surprise: 1, Anger: 0.5* | +|![](images/surprise0anger2.png)|![](images/surprise1anger2.png)|![](images/surprise2anger2.png)| +| *Surprise: 0, Anger: 1* | *Surprise: 0.5, Anger: 1* | *Surprise: 1, Anger: 1* | diff --git a/images/surprise0anger0.png b/images/surprise0anger0.png new file mode 100644 index 0000000..34f7333 Binary files /dev/null and b/images/surprise0anger0.png differ diff --git a/images/surprise0anger1.png b/images/surprise0anger1.png new file mode 100644 index 0000000..ba1009f Binary files /dev/null and b/images/surprise0anger1.png differ diff --git a/images/surprise0anger2.png b/images/surprise0anger2.png new file mode 100644 index 0000000..29f7315 Binary files /dev/null and b/images/surprise0anger2.png differ diff --git a/images/surprise1anger0.png b/images/surprise1anger0.png new file mode 100644 index 0000000..b7ddc40 Binary files /dev/null and b/images/surprise1anger0.png differ diff --git a/images/surprise1anger1.png b/images/surprise1anger1.png new file mode 100644 index 0000000..76c20d7 Binary files /dev/null and b/images/surprise1anger1.png differ diff --git a/images/surprise1anger2.png b/images/surprise1anger2.png new file mode 100644 index 0000000..a6f9795 Binary files /dev/null and b/images/surprise1anger2.png differ diff --git a/images/surprise2anger0.png b/images/surprise2anger0.png new file mode 100644 index 0000000..52da307 Binary files /dev/null and b/images/surprise2anger0.png differ diff --git a/images/surprise2anger1.png b/images/surprise2anger1.png new file mode 100644 index 0000000..a670789 Binary files /dev/null and b/images/surprise2anger1.png differ diff --git a/images/surprise2anger2.png b/images/surprise2anger2.png new file mode 100644 index 0000000..b49f236 Binary files /dev/null and b/images/surprise2anger2.png differ