|Development history and the result|
It all began with a six month internship in a computer
game development company in Spring 2002. One of the developers asked for
my help to integrate vertex and pixel shader effects into their own proprietary
3D game engine - an offer I did not want to refuse, of course.
The first presentable result was a small demo application showing some
effects like diffuse and specular lighting and a nice specular bump mapping.
It was just a single window with a rendering view based on the DirectX
8.1 API. Different meshes could be loaded and combined with the predefined
Being part of a diploma thesis, the development process of SolidShaderTool proceeded under certain rules and specifications which are essential for scientific workmanship.
The software implementation should be realised with the help of C++ and MFC, so the specifications and characteristics of object oriented analysis and design were obeyed during the phase of conception. Furthermore, the use of a standardized descriptive language like UML was inevitable.
While studying the relevant technical literature, I found an interesting
chapter about design patterns. Starting the iterative analysis and design
process, it became obvious that the "model-view-controller"
pattern perfectly fitted for a possible structure of SolidShaderTool.
Although I encountered various problems during the development process and had to accept more compromises I thought of before, the result is far on top of anything you may expect from a "normal" single-person diploma thesis.
All relevant parts of the shader effect design were considered from the import of structured mesh data, materials and textures defined in 3D Studio MAX™ to the final output in an interactive rendering view. An important feature provided is the flexibility to handle and combine an unlimited number of meshes and subsets embedded in the imported scene and user customized or predefined shader effects.
So the user is able to focus on the development of the shader instructions while keeping the flexibility and possibility to control all environment parameters and settings.