C++ language DirectX 11 HLSL Gerstner Waves. A 4x4 grid plane with 32 triangles is tessellated in the geometry shader using triangle subdivision. A triangle strip is created by iterating left to right, and bottom up. The output grid has 1,152 triangles, each vertice is then passed onto the water simulation function in the geometry shader. The water simulation is my implementation of GPUGems: Effective Water Simulation from Physical Models. I choose to simulate deep water waves in this demo. The TBN matrix generated from the simulation is passed on to the pixel shader where it is used for lighting.
DirectX 11 HLSL water caustics. My implementation of GPUGems: Rendering Water Caustics. Multiple cos waves with different octaves are combined. Differentiating the summed wave gives partial derivates that form the gradient of the wave surface. Using the gradient and the distance from the ocean floor to the wave surface I sample caustic texture A, then phase shift the waves and repeat the process with caustic texture B, then modulate the results.
C++ language DirectX/HLSL windows executable. Windows 3D world
personal project with procedurally generated terrain, crates, and
entities. Adjustable camera coordinate system that attaches to
currently active entity. Entities contain axis-aligned spherical
bounding box alpha-blended for visualization.
Run the .exe
file inside the un-zipped folder. Press w,a,s,d or
up,down,left,right, arrow keys to move the character,
pageup/pagedown to tilt up and down, move the mouse wheel to zoom
in and out, tab switches characters (camera attachment), right
click switches between fullscreen and windowed mode
C++ language OpenGL/GLEW/. DXBall 3D game. first-person camera and/or orbital camera rotation about board origin. Player controls a paddle at the bottom and deflects a single ball, hitting different colored blocks on the top of the screen without having the ball fall below the screen. Clearing all the blocks results in completing the game. Run the .exe file inside the un-zipped folder
C language OpenGL/GLEW/GLSL particle effects. keyboard keys 'M' switch between Fire and Confetti particle effects, 'A' show/hides the cartesian basis vectors. Up, left, right, down keys move camera around the cartesian basis vectors. Confetti cannon uses only vertex shader to compute position as function of time: x1=x0+vt+at^2. Fire particles blend texture with color in fragment shader, vertex shader contracts x,z components as y increases as a function of time and sets color to (r,r-yInverse,z) Run the .exe file inside the un-zipped folder
Gouraud shading, WebGL borderlands model rendered with textures and a revolving point light source whose local space is in a cylindrical coordinate system that rotates around the cartisian y-axis through an incrementing theta. Click and drag with the mouse on the canvas to rotate the model. Use the mouse wheel to zoom in and out.
Graphics Engine I wrote without OpenGL or DirectX API's. "World Engine" transforms models from model space to world space to view space. Then in projection space it does clipping, using window width/height, and culling, using triangle winding order, it then does the homogenous divide then to viewport space with the viewport being the screen and finally transforms it into screen space. Displaying the engine with a BuzzLightYear model, exported to a .obj file format, parsed by the engine.