diff --git a/app/portfolio/project-blame/page.tsx b/app/portfolio/project-blame/page.tsx new file mode 100644 index 0000000..f655376 --- /dev/null +++ b/app/portfolio/project-blame/page.tsx @@ -0,0 +1,15 @@ +import Blame from '@/components/portfolio-components/project-blame'; +import { ST } from 'next/dist/shared/lib/utils'; + +export const metadata = { + title: 'Project Blame | Dineth Meegoda', + description: 'Procedurally Built Sci-Fi Scene.', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/portfolio/stylized-beach/page.tsx b/app/portfolio/stylized-beach/page.tsx new file mode 100644 index 0000000..8cbf5a3 --- /dev/null +++ b/app/portfolio/stylized-beach/page.tsx @@ -0,0 +1,15 @@ +import StylizedBeach from '@/components/portfolio-components/stylized-beach'; +import { ST } from 'next/dist/shared/lib/utils'; + +export const metadata = { + title: 'Sunset Beach | Dineth Meegoda', + description: '3D Interactive Scene of Beach with Toon Shading.', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/projects/fluid-sim-engine/page.tsx b/app/projects/fluid-sim-engine/page.tsx new file mode 100644 index 0000000..0102fc5 --- /dev/null +++ b/app/projects/fluid-sim-engine/page.tsx @@ -0,0 +1,15 @@ +import FluidSim from '@/components/project-components/fluid-sim-engine'; + +export const metadata = { + title: 'Fluid Sim | Dineth Meegoda', + description: + 'Engine built with C++ and OpenGL to allow for realtime interactive fluid simulation.', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/projects/griddle/page.tsx b/app/projects/griddle/page.tsx new file mode 100644 index 0000000..73d0825 --- /dev/null +++ b/app/projects/griddle/page.tsx @@ -0,0 +1,14 @@ +import Griddle from '@/components/project-components/griddle'; + +export const metadata = { + title: 'Houdini Legoifier | Dineth Meegoda', + description: 'Houdini Tool to turn any Mesh into Lego!', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/projects/houdini-lego-tool/page.tsx b/app/projects/houdini-lego-tool/page.tsx new file mode 100644 index 0000000..fa2d027 --- /dev/null +++ b/app/projects/houdini-lego-tool/page.tsx @@ -0,0 +1,14 @@ +import Legoifier from '@/components/project-components/houdini-lego-tool'; + +export const metadata = { + title: 'Houdini Legoifier | Dineth Meegoda', + description: 'Houdini Tool to turn any Mesh into Lego!', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/projects/maya-crowd-sim/page.tsx b/app/projects/maya-crowd-sim/page.tsx new file mode 100644 index 0000000..6211f27 --- /dev/null +++ b/app/projects/maya-crowd-sim/page.tsx @@ -0,0 +1,15 @@ +import CrowdSim from '@/components/project-components/maya-crowd-sim'; + +export const metadata = { + title: 'Maya Crowd Sim | Dineth Meegoda', + description: + 'Maya Interactive Crowd Simulation Tool with accompanying OpenGL Engine.', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/app/projects/vr-grappler/page.tsx b/app/projects/vr-grappler/page.tsx new file mode 100644 index 0000000..f13cfe9 --- /dev/null +++ b/app/projects/vr-grappler/page.tsx @@ -0,0 +1,14 @@ +import Grappler from '@/components/project-components/vr-grappler'; + +export const metadata = { + title: 'VR Grappler | Dineth Meegoda', + description: 'VR Physics based Grapple Gun Game', +}; + +export default function Projects() { + return ( +
+ +
+ ); +} diff --git a/components/Demo.tsx b/components/Demo.tsx index e206464..689d7c2 100644 --- a/components/Demo.tsx +++ b/components/Demo.tsx @@ -4,6 +4,7 @@ import { CSSProperties } from 'react'; const skills = [ { skill: 'C++' }, + { skill: 'Python' }, { skill: 'Unreal Engine' }, { skill: 'OpenGL' }, { skill: 'Unity' }, @@ -11,12 +12,12 @@ const skills = [ { skill: 'Houdini' }, { skill: 'VEX' }, { skill: 'Autodesk Maya' }, - { skill: 'Python' }, { skill: 'ZBrush' }, { skill: 'WebGL' }, { skill: 'Substance Painter' }, { skill: 'React' }, { skill: 'Substance Designer' }, + { skill: 'Perforce' }, { skill: 'Next.js' }, { skill: 'Premiere Pro' }, { skill: 'Tailwind CSS' }, diff --git a/components/HeroSection.tsx b/components/HeroSection.tsx index 0b215d7..9f91465 100644 --- a/components/HeroSection.tsx +++ b/components/HeroSection.tsx @@ -26,7 +26,7 @@ const HeroSection = () => { Hey, I'm Dineth!

- I'm a junior at the + I'm a senior at the {' '} University of Pennsylvania{' '} @@ -39,7 +39,7 @@ const HeroSection = () => { , a selective interdisplinary program between Computer Science and Fine Arts. I'm also a teaching assistant for Penn's - Interactive Computer Graphics Class and currently the Events Chair + Procedural Computer Graphics Class and currently the Vice President of Penn's{' '} ACM SIGGRAPH @@ -54,7 +54,7 @@ const HeroSection = () => { {/*Div that contains buttons*/}

diff --git a/components/PortfolioSection.tsx b/components/PortfolioSection.tsx index 1c51779..dd3c02d 100644 --- a/components/PortfolioSection.tsx +++ b/components/PortfolioSection.tsx @@ -10,6 +10,18 @@ const projects = [ image: '/portfolio-images/sushi-house/sushi-house-title.png', tags: ['Unreal ', 'Substance ', 'Maya'], }, + { + name: 'Sunset Beach', + link: '/portfolio/stylized-beach', + image: '/portfolio-images/stylized-beach/stylized-beach-title.png', + tags: ['Unity ', 'HLSL ', 'Maya'], + }, + { + name: 'Project: Blame', + link: '/portfolio/project-blame', + image: '/portfolio-images/project-blame/project-blame-title.png', + tags: ['Substance Designer', 'Blender'], + }, { name: 'Saul Goodman', link: '/portfolio/saul-goodman', diff --git a/components/ProjectsSection.tsx b/components/ProjectsSection.tsx index a6f9511..67b417d 100644 --- a/components/ProjectsSection.tsx +++ b/components/ProjectsSection.tsx @@ -12,12 +12,46 @@ const projects = [ 'A tool built for Unity that procedurally creates real-time mesh cuts on models.', tags: ['C# ', 'Unity ', 'Oculus'], }, + { + name: 'Real-Time Fluid Sim Engine', + link: '/projects/fluid-sim-engine', + image: '/projects-images/fluid-sim-engine/fluid-sim-engine-title.png', + description: 'A Parallelizable Physics Particle Based Engine.', + tags: ['C++ ', 'GLSL', 'OpenGL'], + }, + { + name: 'Maya Crowd Sim Plugin & Engine', + link: '/projects/maya-crowd-sim', + image: '/projects-images/maya-crowd-sim/maya-crowd-sim-title.png', + description: 'A tool built for Maya along with a OpenGL Crowd Sim Engine.', + tags: ['C++ ', 'Python ', 'Maya'], + }, + { + name: 'Legoifier Tool', + link: '/projects/houdini-lego-tool', + image: '/projects-images/houdini-lego-tool/houdini-lego-tool-title.png', + description: 'A houdini tool that transforms any mesh to LEGO.', + tags: ['Houdini ', 'VEX '], + }, + { + name: 'VR Grappler', + link: '/projects/vr-grappler', + image: '/projects-images/vr-grappler/vr-grappler-title.png', + description: 'A physics-based prototype based on real-time swinging.', + tags: ['Unity ', 'OpenXR ', 'C#'], + }, + { + name: 'USD Griddle', + link: '/projects/griddle', + image: '/projects-images/griddle/griddle-title.png', + description: 'A web-based USD Database for 3D Artists.', + tags: ['USD ', 'Python ', 'FastAPI'], + }, { name: 'Mini Minecraft', link: '/projects/mini-minecraft', image: '/projects-images/mini-minecraft/mini-minecraft-title.png', - description: - 'Version of Minecraft with multithreading implemented with a custom game engine.', + description: 'Multithreaded Voxel Based Engine.', tags: ['C++', 'OpenGL', 'GLSL'], }, { @@ -25,7 +59,7 @@ const projects = [ link: '/projects/pathtracer', image: '/projects-images/path-tracer/path-tracer-title.png', description: - 'Monte-Carlo Pathtracer with scene creation, multisampling, and materials.', + 'Monte-Carlo Pathtracer with MIS, Scene Creation, and Materials.', tags: ['GLSL', 'OpenGL', 'C++'], }, { @@ -41,7 +75,7 @@ const projects = [ link: '/projects/realtime-renderer', image: '/projects-images/realtime-renderer/realtime-renderer-title.png', description: - 'Real-time Rendering Engine implementing PBR materials, textures, and HDRIs.', + 'Real-time Rendering Engine implementing PBR surfaces, reflections, and HDRIs.', tags: ['GLSL', 'OpenGL'], }, { @@ -49,7 +83,7 @@ const projects = [ link: '/projects/mini-maya', image: '/projects-images/mini-maya/mini-maya-title.png', description: - '3D Modelling Program that implements subdivision and mesh skinning with basic skeletons.', + '3D Modelling Program that implements subdivision, skinning, and USD exports.', tags: ['C++', 'OpenGL', 'Qt'], }, { diff --git a/components/portfolio-components/project-blame.tsx b/components/portfolio-components/project-blame.tsx new file mode 100644 index 0000000..9a49b31 --- /dev/null +++ b/components/portfolio-components/project-blame.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import Image from 'next/image'; + +const Blame = () => { + return ( +
+
+

+ {' '} + A procedurally built Sci-Fi scene based on the manga anthology BLAME. +

+

+ {' '} + I worked on this with{' '} + + + Thomas Shaw + + {' '} + and{' '} + + + Rain Yan + + + . I contributed procedural materials within Substance Designer and + integrated them within Blender along with project ideation. +

+

+ Still working on the breakdown but here's a overview video and a{' '} + + + Github README + + + . +

+
+ +

+ Brief Video Overview of the project +

+
+ +
+
+ ); +}; + +export default Blame; diff --git a/components/portfolio-components/stylized-beach.tsx b/components/portfolio-components/stylized-beach.tsx new file mode 100644 index 0000000..db9de6e --- /dev/null +++ b/components/portfolio-components/stylized-beach.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import Image from 'next/image'; + +const StylizedBeach = () => { + return ( +
+
+

+ {' '} + An Interactive Unity Scene created solely by me to explore real-time + stylized shading techniques. I used HLSL, Substance Designer, Maya, + and ZBrush to create the final look. +

+

+ Still working on the breakdown but, here's a{' '} + + + Github README + + + . +

+ +
+
+ ); +}; + +export default StylizedBeach; diff --git a/components/project-components/fluid-sim-engine.tsx b/components/project-components/fluid-sim-engine.tsx new file mode 100644 index 0000000..ffd4914 --- /dev/null +++ b/components/project-components/fluid-sim-engine.tsx @@ -0,0 +1,69 @@ +import React from 'react'; +import Image from 'next/image'; + +const FluidSim = () => { + return ( +
+
+

+ {' '} + A lagrangian fluid simulation engine that works interactively in + realtime. It's made with C++ and OpenGL with parallelizable algorithms + to allow for optimization with compute shaders. +

+

+ {' '} + Everything was solely developed by me. However, I had a lot of + algorithmic inspiration from Sebastian Lague's{' '} + + + video + + + . His video goes over the process within Unity and C#, so I wanted to + achieve a similar effect within my own engine in C++ and GLSL. +

+

+ Still working on the breakdown but here's a overview video (from + 2:44) and a{' '} + + + Github Repo + + + . +

+
+ +

+ Brief Video Overview of the project +

+
+ +
+
+ ); +}; + +export default FluidSim; diff --git a/components/project-components/griddle.tsx b/components/project-components/griddle.tsx new file mode 100644 index 0000000..f1b241b --- /dev/null +++ b/components/project-components/griddle.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import Image from 'next/image'; + +const Griddle = () => { + return ( +
+
+

+ {' '} + A Web Based Asset Database Application for 3D Artists. It's built + around the OpenUSD (Open Universal Scene Description) framework and + leverages asset opinions, layers, and inherits. +

+

+ Still working on the breakdown but, here's a{' '} + + + Github Repo + + + . +

+

+ I worked on this project alongside my classmates in a Production + Pipelines course and you can view all contributors and contributions + in the Github Repository. I contributed the backend code and search + functions in Python as well as some of the front end in + React/TypeScript. +

+ +
+
+ ); +}; + +export default Griddle; diff --git a/components/project-components/houdini-lego-tool.tsx b/components/project-components/houdini-lego-tool.tsx new file mode 100644 index 0000000..5306abf --- /dev/null +++ b/components/project-components/houdini-lego-tool.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import Image from 'next/image'; + +const Legoifier = () => { + return ( +
+
+

+ {' '} + A Houdini tool that transforms any mesh into Lego's! Allows for brick + customization such as slope threshold, plate coverage, and brick + resolution. +

+

+ Still working on the breakdown but, here's a{' '} + + + Github Repo + + + . +

+ +
+
+ ); +}; + +export default Legoifier; diff --git a/components/project-components/maya-crowd-sim.tsx b/components/project-components/maya-crowd-sim.tsx new file mode 100644 index 0000000..f2503cd --- /dev/null +++ b/components/project-components/maya-crowd-sim.tsx @@ -0,0 +1,77 @@ +import React from 'react'; +import Image from 'next/image'; + +const CrowdSim = () => { + return ( +
+
+

+ {' '} + A tool for Maya that instances a supplied character, obstacles, and + inflow(s)/outflow(s) to create a crowd simulation. The simulation + remains interactive and allows for manipulation of the obstacles and + parameters to trigger a recompute. In addition to the plugin, there is + an interactive OpenGL engine that allows the crowds to be interacted + with. +

+

+ {' '} + I worked on this with{' '} + + + Thomas Shaw + + {' '} + taking inspiration from this paper by{' '} + + + NVIDIA + + + . I contributed mainly to the Engine Obstacle & Scene setup, + visibility graph calculation, Maya Tool interface in PyQt, and Some + Maya Plugin Setup & integration. +

+

+ Still working on the breakdown but here's a overview video and a{' '} + + + Github Repo + + + . +

+
+ +

+ Brief Video Overview of the project +

+
+ +
+
+ ); +}; + +export default CrowdSim; diff --git a/components/project-components/vr-grappler.tsx b/components/project-components/vr-grappler.tsx new file mode 100644 index 0000000..0548b6d --- /dev/null +++ b/components/project-components/vr-grappler.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import Image from 'next/image'; + +const Grappler = () => { + return ( +
+
+

+ {' '} + A VR Game prototype which enables the player to swing around with + dual-wield grapple guns! It's a physics based game developed with + OpenXR and Unity and I'm excited to develop it further. +

+

+ Still working on the breakdown but, here's a{' '} + + + Github Repo + + + . +

+ +
+
+ ); +}; + +export default Grappler; diff --git a/public/portfolio-images/project-blame/project-blame-title.png b/public/portfolio-images/project-blame/project-blame-title.png new file mode 100644 index 0000000..7c854c3 Binary files /dev/null and b/public/portfolio-images/project-blame/project-blame-title.png differ diff --git a/public/portfolio-images/stylized-beach/stylized-beach-title.png b/public/portfolio-images/stylized-beach/stylized-beach-title.png new file mode 100644 index 0000000..2a46af2 Binary files /dev/null and b/public/portfolio-images/stylized-beach/stylized-beach-title.png differ diff --git a/public/projects-images/fluid-sim-engine/fluid-sim-engine-title.png b/public/projects-images/fluid-sim-engine/fluid-sim-engine-title.png new file mode 100644 index 0000000..0eabe74 Binary files /dev/null and b/public/projects-images/fluid-sim-engine/fluid-sim-engine-title.png differ diff --git a/public/projects-images/griddle/griddle-title.png b/public/projects-images/griddle/griddle-title.png new file mode 100644 index 0000000..a611e34 Binary files /dev/null and b/public/projects-images/griddle/griddle-title.png differ diff --git a/public/projects-images/houdini-lego-tool/houdini-lego-tool-title.png b/public/projects-images/houdini-lego-tool/houdini-lego-tool-title.png new file mode 100644 index 0000000..0329d92 Binary files /dev/null and b/public/projects-images/houdini-lego-tool/houdini-lego-tool-title.png differ diff --git a/public/projects-images/maya-crowd-sim/maya-crowd-sim-title.png b/public/projects-images/maya-crowd-sim/maya-crowd-sim-title.png new file mode 100644 index 0000000..4ddb1b9 Binary files /dev/null and b/public/projects-images/maya-crowd-sim/maya-crowd-sim-title.png differ diff --git a/public/projects-images/vr-grappler/vr-grappler-title.png b/public/projects-images/vr-grappler/vr-grappler-title.png new file mode 100644 index 0000000..c321bae Binary files /dev/null and b/public/projects-images/vr-grappler/vr-grappler-title.png differ