It was a 3D Engine based on Programmable pipeline / Shaders. I reimplemented some of the features from ver2.0 using shaders, made them feature complete and a lot of new things including but not limited to Per pixel Lighting, Shadows, Mirror, Physics, some more water effects etc. This version was the most feature complete. It could be used to make many types of 2d/3d games and I made few prototypes with this version including Freeze my Choc , Wi-Fi Positioning system, FPS prototype, etc.
This engine went through 3 minor revisions – Initial version 3.0 used both fixed function and shader based pipeline and by the last version 3.3 it was all based on shaders only. Over these 3 minor revisions, the engine went through major architecture changes and added a lot of different components.
With this version of the engine plan was to code everything myself without using any 3rd party libraries because I wanted to learn about all the aspects of game programming and wanted some experience in coding various components of a game engine. I did everything myself including physics, gameplay, ai, etc.
While working on the engine my goal was to make two tech demos. So all the features of the engine were aimed at making those demos possible in my engine.
- First Tech Demo – The first demo was supposed to be a little bit of everything. It would contain physics, AI, animation, collision, etc. But without any major stress on rendering or fancy shading. This demo was completed in early 2014. You can check it out below.
- Second Tech Demo – This demo will be mainly focused on rendering, but there will be other stuff too. By the time I finished the first demo, I realized it would be much better to do this one in DirectX 11 in next version of the engine. Some of the things were not possible or fast enough to do in Directx 9 and engine needed a major re-structure to support all the stuff I wanted to do the in this demo, so I thought it would be better to this demo in next version of the engine ver4.0 .
- Based on Directx 9 programmable pipeline.
- Support for dynamic lights (Ambient Light,Point Light, Directional Light and Spot Light) and BRDFs (Phong, Blinn-Phong, Lambertian, Cook Torrance, etc) using HLSL shaders (shader model 3.0).
- Support for 2D Sprite Animations.
- Shadow Mapping
- Environment Mapping using CubeMapping or Skyboxes.
- Environment Reflections using CubeMapping.
- Normal Mapping.
- Render To Texture and Texture Projection.
- Static and Dynamic Batching.
- Octree and Quad Tree support with polygon clipping ON/OFF.
- Hierarchical Frustom Culling.
- HeightMap Terrains (Supports batching and culling for speed)
- Water Rendering using Normal and Displacement Mapping.
- Support for Importing animated scenes from blender,3ds max,etc
- Character Animation (Indexed Skinning using HLSL and Software Skinning)
- Support for Animation Blending and easy data driver process for setting up blending options.
- Inverse Kinematics (upto 2 joints).
- Facial Animation System with ability to generate random faces. (supported using morphing)
- Lip Syncing
- Collision Detection with BroadPhase optimization using QuadTree/Oct Tree, AABBs, KD Tree etc
- Collision Detection supported for AABB, OABB, Spheres, Ellipsoids and Polygons.
- Collision Detection for Terrains.
- Collision Detection supported for all types of Game Objects (static, moving, animated, etc)
- Character Controller Physics for Humanoid Characters.
- Kinematics (With control over bouncing for different objects)
- Support for dynamically changing gravity.
- Path Finding
- Steering Behaviours
- Collision Avoidance
- First Person
- Airplane camera and player controller.
- Over the shoulder (resident evil, DevilMayCry type of camera)
- Third Person (3rd person rts kind of camera)
- Free Look
- Orbit Camera to check models etc
- Importing models / scene are supported using .X files together with textures and shaders from modeling packages. (Note – only few custom-made shaders are supported in this process)
- Animations for scene / characters / models can also be imported using X files.
- Almost all types of basic image formats are supported that are supported by D3DX library.
- 2D Map Editor build for couple of game prototypes. Capable of saving and loading levels including assets in an optimized way.
- Basic 3D Map Editor (Currently we can just place cubes and models). It Supports 4 viewports and basic operations like adding, deleting, saving ,etc
- Particle Editor