Some days late again, but finally here comes the review of September.
Somehow September felt a lot shorter than August. But anyhow.
Parallelizing the Raytracer
One of the biggest issues I continued with is the parallelization of the raytracer. I started with implementing support classes for thread creation. Then I added more support classes, but for synchronization.
And then I could finally finished the first part of the real work, the new sampler. The sampler is the part in my program which decides which primary rays need to be sent, it is responsible for antaliasing and if I add correct depth of field or motion blur it is here. So the first stage was to at least get it implemented.
After a first try which resulted in a lot of artifacts, I found out, I needed to do more boring stuff. After I had finally linked the correct library and passed through some more values, I could try again. The distribution of threads was terrible, eight threads and they were all running on one CPU, the second one being mostly idle. Some more fixes and the program was parallelized, albeit still only utilizing 50% of the available power.
But before really starting to look for the problem, I set out to finally implement the allocation scheme I have written about before. Even if it is not the culprit, it makes sense to have the allocation available. After having written that one, I set out to make proper use of it in the raytracer. The first try had used one allocator per type of object, but then I quickly started to add a major change so I could have one allocator per object. After adding that I finally found out, where the main problem was in debug mode: the Standard C++ Library of MSVC is using a global lock.
Sweep Constructor
Another item I dragged over from August is the Sweep Constructor. I had an idea of how to combine the implementation of the Rotational Constructor and of the Sweep Constructor, the first issue was to have two selections interacting. That I got working, after quite some changes.
Then I actually found out, that I could use the same editor code for the profile and the path, if I just reworked it a bit. It took some time, but I managed to also implement that bit. And then I implemented the geometry handling function and used the function from a paper (Computation of Rotation Minimizing Frames) to get coordinate systems at the vertices of the path.
After some more changes, handling of the path was coming to an end. The last change was to add uv-mapping to the constructor. With that I finished the Sweep Constructor.
Draw On Plane-Modifier
And another one I started work on in August is the Draw On Plane-modifier. There were a number of changes I had made, but more still remained. So first I did the second half of the big rework of the modifier, I originally decided to not do because of marginal effects. How soon "marginal" changed into "major" is stunning, but to make the thing better it was necessary. The addition was to make it possible to split faces. There are still issues with the modifier, so I guess I will have to come back to it in the future.
When I tried to use the newly improved modifier I crashed the program multiple times in a row. I found out, it was a hard problem I have not yet solved. There was an easy solution, though, I just made it impossible that the condition leading to the crash would appear.
New Modifiers
Something strange also happened. In the past adding a new modifier was a dreadful amount of changes to be made. But now I seem to have such a big tool chest, that it has become easy to add simple modifiers. And so I implemented a modifier to mirror an object. It was totally easy and straight forward. The next day I added the next modifier, one to move boundary edges. That one was a bit more trouble, mainly because it uncovered a bad bug in the box constructor.
Game
This month not a lot of action on the game. I missed some Thursdays, but I hope I return to my regular schedule this month. But at least I had fixed some more bugs with the track generation. Then I started to add the slopes. And to actually use them I also started to add handling of potential energy.
Small Items

In the process to render an image for the small items of the month I managed to finally fix a stupid crash. Now I can finally change the shader model more than once.
But I also failed to do two images. I have created some more objects, but none of them was finished enough to show. I will try to finish them in October. So the model of this month is just the fork.
Schedule for October:
Development - Editor/Raytracer - New Stuff
- Finish the Skeleton handling.
- Add some simple form of hair.
- New operator for landscapes (short description)
- Rewrite 'Add Edges'-modifier to make it possible to cut a face along a fragmented edge
- Add moving constraints
- Add timelines for better animation support (description)
- Make the anivals exportable (description)
- Chamfer modifier
- Handle collisions of the cloth and the body
- Parallax mapping
- Add Depth of Field (description)
- Ward BRDFs
- Packet Tracing
- Parallel Tracing
- Speed up the OpenGL representation of polyhedron
Modeling
- Texture the character and the pieces of cloth.
- Add the skeleton to the character and the pieces of cloth.
- Model a tank top.
- Model some pants.
- Model some shoes.
- Model some skirt
- Model hair for character.
- Start on the second character.
- Continue on the ship.
- Continue on the Lab scene
- Finish Cat
- Start Bunny
Small Object - Modeling
Model four small or one medium sized object per month
Development - HTTPD
- Add the handling of compression.
- Do the benchmarks.
- Add connection to postgreSQL.
Development - Modeler and HTTPD
- Paper Doll System
Website
- Create Wallpapers
- Create Wallpaper page
So October has also passed and one day late I will try to do the review. Parallelizing the RaytracerI continued with the parallelization of the raytracer. The first thing I noticed was, that running the program in Code Analyst made it perform as expe
Tracked: Nov 02, 22:09