8.17.2010

A concept is born

Today an idea got stuck in my head. You know, the sort that won't let you be still until it's realized. It's not that original or anything, but to do a proper 64k release like that... Well let's just say I finally have something to work towards - and this always helped me a lot with previous projects.

8.06.2010

Whoops

Well Assembly is here and meanwhile the development was halted due to a number of things, mostly to do with work and me realizing a few issues with the old engine. This made me reconsider rushing into the design of a new one without thoroughly thinking things through first. We'll get there though, if not this year then the next!

6.01.2010

Materials

We decided to move on and start implementing new systems instead of getting the texgen perfect.
The system that will be the heart of the engine is the material system, so I'm starting with this. I'm cutting out all the unused things based on my previous engine, we never used most of it anyways.

The renderstate set I'm using will be fairly simple: the full set of alpha blend, blend operators, alpha testing (I might trade this for a shader implemented solution, but using the renderstate feels like a better choice for 64ks) and cull modes.

I still need to figure out a good solution to one of the biggest design flaws in our old engine, hopefully the next post will be a description of the problem and the solution.

5.21.2010

Work delays

Didn't really have time this week to work on the project - was too busy with work. I hope to remedy this over the weekend by fixing the texgen interface.
I did look a bit further ahead into the more complicated aspects of bezier splines, but that research might be a dead end. More on this when I get to animation.

5.16.2010

Interface fail

Today I hit the first red light design-wise. The graph like operator interface is a mess compared to operator stacking. However opstacking would make a mess of the generator code, just like last time.
I'll try a hybrid approach, hopefully that'll work.

5.13.2010

Import

Finally I have some form of completely working functionality with the first import function finished. No UI or anything like that for now, I just load a file on init and store it again on deinit, but it seems to work. Further testing is needed tho.
I decided to globalize the identification of resources by using GUIDs, the concept works great for the texture filters. Our old engine suffered from lots of project merging problems due to the lack of a system like this.

5.11.2010

Export

Progress has been slow over the weekend, but I finally came up with a system that can possibly fix all our previous problems with multiple people working on the same project at once. The exporter works and seemingly exports good data, now all I need to do is import it back.

5.06.2010

Make some noise!

I now have a working perlin noise and a catmull-rom interpolated simple noise filter finished without needing to expand the code by a single line. Everything still fits into PS2.0 too, so all is going as planned. I'm a bit behind on the storage code due to a damned headache today tho :\


5.05.2010

Filtering

Productive day. Got most of the texgen working, the Friday deadline seems quite achievable. The performance of the generator is quite amazing. Switching to 16 bit float textures made all the difference in quality, and the proper framework code now allows for real-time texture manipulation.
The noise based filters are still missing, I'll implement those tomorrow along with the remaining functions like save and load.


Image generation starts soon

Didn't have as much time as I wanted lately so progress could have been a lot better, but the texture generator is almost fully functional. Operators can be added from the dynamic filter pool, can be connected and disconnected at will and their parameters can be adjusted. What remains are some minor ui tweaks (for example to see the preview of a different operator you're currently editing), the filter editor, and save/load. Oh and of course the ever growing basic filter pool, which will hopefully be the easy part.
I want a working texgen by friday.

5.01.2010

Wiggle your big toe

Finally a quite complicated GUI element, the side scrollbar is in working order. This means that every content display system that needs to be panned (text input, lists, operator views etc) can now be viewed properly. As The Bride said: "Hard part's over" :)

4.29.2010

Gradual progress

Tested the generator system for the tool, which will now seamlessly handle changes in the resource tree while the user is working on it, not like the old one that used a complicated and error prone recursive algorithm to do the same.
Added a valuebar widget to the GUI sys, and started working on the texture generator windows. Texture preview works and the basics are there for the texture parameter window - which is assembled on the fly from the parameters of the texture filter.
I think the texture generator will be completely functional sometime late next week.

4.27.2010

Revealed

My oldest partner-in-crime now knows of the project. Welcome aboard :)

Missing GUI elements

Before I can truly work on the ui for the tool I still have a list of widgets to implement, which should be fairly easy compared to the textbox:

*Value/text input fields
*Valuebars
*Itemlists
*Scrollbars
*Drop-down menus

4.26.2010

Black Triangle

This test proves the texgen renderer core functions perfectly. It's not much to look at, but consider it a Black Triangle.


Now all I need is a user interface, which will be made up of:
*The texture filter editor
*A texture page list to organize stuff
*A preview window to see what's going on
*A parameter window to tweak things
*And of course the operator graph view to connect the filters

4.25.2010

Texgen basics

Managed to think the texture generator through.
I'm dropping operator stacking for this one, a graph based interface might get more messy but is easier to implement - not to mention the lack of special cases like NOP operators and the like.

The basic texture effect comes down to a simplified version of my old design: one pixel shader (ps2.0 for size and compatibility reasons), a fixed number of passes with this shader plus optional noise data. Everything I have in mind should be possible to implement with this, except for the very special cases (image loading and text render), which will still have to be done on the cpu, but d3dx will help out on both accounts.
I'll hopefully manage to implement texture-graph templates this time around, but that one is a low priority target at the moment.

4.24.2010

Groundwork

Designing the resource framework now, with shaders being the first try with it. This is the second "code a lot without seeing anything" session during this project.
The new framework will allow for automatic optimal exports for any resource, meaning that if I want to export for example a model, only the stuff required to generate it will be saved.
The new resource code will also make consistency checking a lot easier. No more crashing because of deleted texture operators.

Syntax Highlighting

4.22.2010

Textbox

Work is going well on the textbox for the shader editor. This is probably the single most complicated thing I'll write before I get to the modelling part. Editing, copypaste, cursor movement, undo/redo will work just like they do in visual studio so it's comfortable. I'll even try to implement some sort of syntax highlighting.
This should be done by the end of the week and I'll be starting work on the texgen after that.

4.18.2010

Project Roadmap

I think I should do a roadmap of the project to realize the scope of it.
Since this is going to be a 64k intro tool, I'll need lots of generative content creation assets:

-GPU based texture generator
   -Requires:
      *The shader handling system in the 3D engine
      *A shader editor in the tool (with syntax highlighting)
      *The texture generator framework to work with shaders
      *The user interface

-Material editor
   -Requires:
      *Finished Material System
      *User interface

-A basic mesh editor
   -Requires:
      *3D Display in the tool
      *Mesh system
      *Lots of mesh generators and modifiers
      *User interface

-Keyframer
   -Requires:
      *Spline system
      *Scene graph system
      *User interface

-Timeline
   -Requires:
      *Simple event system
      *User interface

Colors

Black and white just won't do for the interface, so the lack of a graphician on the project compelled me to reach out to alternate sources.
Hopefully it won't burn anyone's eyes out or I might have to recruit a pro for the UI job.

4.17.2010

Let there be text

Managed not to make a mess of things until now, everything is being kept simple. Smart UI rendering, text display and UI windows are working now.
At this rate I can start coding the actual tool with the new framework within a week.

4.14.2010

Push it

Mouse movement handling is done, finally a system that might work seamlessly with the UI system.
And thus simple, working buttons have arrived! :)

4.13.2010

Scratch

So I'm starting from scratch, only thing I'm keeping from the old codebase is a mutilated dynamic array class.
After a few hours of coding I have a DirectX window and the base of the UI display framework. Feels a lot cleaner than the old one for now, but we'll see.
Time to start messing with window messages.

Here we go again

Well it has come to this again:
time to click NEW PROJECT...

Only difference this time is that I feel like I know what I'm doing. So why not document the effort.