{"id":8,"date":"2023-01-13T17:30:19","date_gmt":"2023-01-13T17:30:19","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/bendodge\/?page_id=8"},"modified":"2023-01-14T23:21:50","modified_gmt":"2023-01-14T23:21:50","slug":"portfolio","status":"publish","type":"page","link":"https:\/\/blogs.oregonstate.edu\/bendodge\/portfolio\/","title":{"rendered":"Portfolio"},"content":{"rendered":"\n<p>Please see the below work samples highlighting my skills. Each progam was made using C++ and OpenGL with shaders written in GLSL.<\/p>\n\n\n\n<p class=\"has-text-align-center\" style=\"font-size:clamp(15.747px, 0.984rem + ((1vw - 3.2px) * 0.938), 24px);\"><strong>SHADERS<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1442 \/ 1080;\" width=\"1442\" controls src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6541\/files\/2023\/01\/Screen-Recording-2023-01-14-at-2.49.27-PM.mp4\"><\/video><\/figure>\n\n\n\n<p>This program uses per-fragment lighting and fragment shaders to model an erosion effect on a custom object I made in Blender. I added shadows to the scene using custom shaders in GLSL and animated the object moving to demonstrate the motion of the shadows. <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1420 \/ 1080;\" width=\"1420\" controls src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6541\/files\/2023\/01\/Screen-Recording-2023-01-14-at-1.52.33-PM.mp4\"><\/video><\/figure>\n\n\n\n<p>This program uses vertex and fragment shaders to distort the vertices and color of a sphere. The vertex shader is changing each coordinates position using sine functions and the fragment shader is altering the color of the sphere to draw ellipses on its surface. The scene is animated to constantly change the vertices in the vertex shaders and the size of each ellipse in the fragment shader. The fragment shader is also using a smooth step function to blend the edges of the elliptical areas. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\" style=\"font-size:clamp(15.747px, 0.984rem + ((1vw - 3.2px) * 0.938), 24px);\"><strong>GEOMETRIC MODELING<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1770 \/ 1080;\" width=\"1770\" controls src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6541\/files\/2023\/01\/Screen-Recording-2023-01-14-at-2.56.21-PM.mp4\"><\/video><\/figure>\n\n\n\n<p>This program animates a scene of a cartoon ghost using Catmull-Rom curves. The white dots are the coordinates for each point and the white lines linearly connect each point. I used the Catmull-Rom formula to smoothly connect the points and animated the them to move over time. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\" style=\"font-size:clamp(15.747px, 0.984rem + ((1vw - 3.2px) * 0.938), 24px);\"><strong>TEXTURE MAPPING<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1518 \/ 1080;\" width=\"1518\" controls src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6541\/files\/2023\/01\/Screen-Recording-2023-01-14-at-6.13.44-PM.mp4\"><\/video><\/figure>\n\n\n\n<p>This program wraps a 2D world map image around a sphere drawn in OpenGL and distorts the s and t coordinates of the texture. This is done by changing the object s coordinates as a tangent function of its t coordinates.   <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Please see the below work samples highlighting my skills. Each progam was made using C++ and OpenGL with shaders written in GLSL. SHADERS This program uses per-fragment lighting and fragment shaders to model an erosion effect on a custom object I made in Blender. I added shadows to the scene using custom shaders in GLSL [&hellip;]<\/p>\n","protected":false},"author":13227,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-8","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/pages\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/users\/13227"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":13,"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/pages\/8\/revisions\/58"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/bendodge\/wp-json\/wp\/v2\/media?parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}