diff --git a/assets/media/SkyBoxGraph.png b/assets/media/SkyBoxGraph.png new file mode 100644 index 0000000..8ddb7ba Binary files /dev/null and b/assets/media/SkyBoxGraph.png differ diff --git a/content/project/grass-project/index.md b/content/project/grass-project/index.md index 17f88b9..8586e90 100644 --- a/content/project/grass-project/index.md +++ b/content/project/grass-project/index.md @@ -19,7 +19,6 @@ Rendering grass is a topic that has always intrigued me. In the past, I've exper First, a compute shader procedurally generates shells along the normal of the base mesh. Each generated vertex contains normal, UV coordinates, position, and height data. (the height data is normalized so that the highest shell has a height of 1 and the lowest shell has a height of 0) This data is then passed to the vertex and fragment shader where we offset the masking textures, discard pixels, and generate color data. A pixel is discarded if the height of its shell exceeds the value sampled in the masking texture. This creates a tapering effect (since higher shells will have more pixels discarded), effectively simulating a grass blade. For my mask, I used a texture generated in Substance Designer. {{< figure src="grass-height.png" caption="Grass Masking Texture" numbered="true" data-zoomable=true >}} -[![Alternative Text](grass-height.png)](grass-height.png) The fragment shader is also responsible for displacing the grass wherever the ball moves. diff --git a/content/project/morsel-munchers/index.md b/content/project/morsel-munchers/index.md index 7f50e41..0c71b0e 100644 --- a/content/project/morsel-munchers/index.md +++ b/content/project/morsel-munchers/index.md @@ -21,3 +21,5 @@ In this project I worked on: - Creating shaders and materials: custom skybox shader, heat zone shader, peg color switch shader, and paddle shader. - Integrating art assets into the scene +{{< figure src="SkyBoxGraph.png" caption="Shader Graph for Skybox" numbered="true" data-zoomable=true >}} +