top of page

Extending DirectX11 engine

During a graphics programming course, I extended an existing forward render engine from DAE. This included adding shadow mapping, animations, skybox, character controller, shaders…


Added extensions:

Character Controller:

Made with PhysX, this makes moving a character easy in the map when encountering slopes, steps...

Master Shader:

A shader with support to add various maps: albedo, specular, normal, cubemap reflection with Fresnel fall off , opacity...

Text Object:

Text can be rendered to the near plane by giving: the font, text, position in screen space, color.

Animations:

Meshes can hold multiple animations. you can control what animation is playing, how fast... The shader moves vertices to correct position.

Sky Box:

Render a cubemap to the far plane of the camera.

Terrain:

Create a mesh from a texture and create the collision with PhysX.

Shadow Mapping:

Place a light in the scene and it will capture the depth from its position and rotation. The depth is saved in a render-target and used in other shaders to calculate the shadows.

Particles:

Emitters hold a set of values and then spawn particles. Particles are updated on the CPU.

Post Processing:

A series of full screen quads manipulating the previous result and pushing it to the next post processing effect.


Game:

Shaders:

The shading technique I used is cel shading to get a stylized look. Grass, leaves and the fur of the beast move to get a dynamic environment. It makes the world feel less static. The shadow map gives the same shadow intensity as the cell shading. So, going in and out of shadows works great with the character.


Grass:

The size of each plane determines the amount of grass the geometry shader makes. the grass move based on a noise texture and samples are based on world position. The white lines are stylized wind waves and are calculated the same way. Based on the normal of the ground plane the grass gets a small color variation (see first gif).


Trees:

The leaves move based on a noise texture and their world position. A gradient controls the movement intensity for each vertex. The closer to the trunk the less it moves. Theoretically you can have different techniques for each channel in your gradient texture. Vertical, horizontal, flapping... This technique is used in Fire watch.


Fur:

The fur is generated on black polys, they have wind animation and can be affected real time. Some of the properties are length, stiffness, color...

The 'rocky' body parts use a combination of vertex lighting and cel shading while the body only uses cel shading.


Cloud:

The clouds are cell shaded and have vertices movement to get the puffy look.

101 views0 comments

Recent Posts

See All

KIN

bottom of page