## Tuesday, March 24, 2015

### dhewm3 1.3.1.1304 x86_64 binaries 2015-03-23

Off topic, but I couldn't find them anywhere, so I stepped up and made them.
Stick 'em in your DOOM3 directory, and enjoy. This will not work with the BFG Edition.

These are built from this version of dhewm3, I didn't modify the source code at all. The licensing info is in COPYING.txt, it's GPL3 + some extra terms. The licenses of the libraries are in LICENSES.txt. The DOOM3 data is still very much copyright, I recommend you read the dhewm3 Readme for links to where to buy DOOM3 so you can put these binaries to use.

Following are the steps I took...

#### Mac OS X

After installing XCode, CMake and MacPorts, I ran...

xcode-select --install
sudo port -v selfupdate

sudo port install openal-soft libsdl-framework
git clone git@github.com:dhewm/dhewm3.git
cd dhewm3/neo
cmake -GXcode
xcodebuild -configuration Release


#### Ubuntu 14.04 x86_64

sudo apt-get install libogg-dev libopenal-dev \
libsdl1.2-dev libvorbis-dev libcurl4-gnutls-dev
git clone git@github.com:dhewm/dhewm3.git
cd dhewm3/neo
cmake .
make -j8


#### Windows

I tried compiling the dependencies myself, but it's fraught with peril. Just download the official dhewm3-libs in a Zip file and extract them into the directory you run these commands. Importantly they must be run from a shell that does not have sh in it's path.

 git clone git@github.com:dhewm/dhewm3.git cd dhewm3/neo cmake -G"MinGW Makefiles" -DDHEWM3LIBS=../../dhewm3-libs-master/x86_64-w64-mingw32/ . make -j8 

Phew.

## Wednesday, September 17, 2014

### Tardis, Now with Ambient Occlusion

Thought I should throw some Ambient Occlusion its way, because it makes such a huge difference. I also modified the way the geometry is created, it's just one corner of the Tardis now, mirrored around the X and Z axis with abs(). This allowed me to use less objects, allowing me to use more objects! So now all of the windows have the panes on them, and I added some of the little bars around the roof light. I'm thinking the next step is to improve the time vortex, describing it as "basic" is being needlessly polite. Here's the link.

### Another Dr Who Themed Shader Experiment

Here's another ShaderToy, this time based off of the time coordinates as seen in Doctor Who (2005) S7E13 - "The Name of the Doctor". While the picture does justice to the line drawing algorithm I created for the task (I was offline at the time), to really appreciate it you need to see it moving. This one maintains a constant framerate on my Nexus5, so should work pretty well on WebGL devices with at least that much power.

## Wednesday, September 10, 2014

So I decided I'd create this shader to keep him company. Then a nice chap called Andre told me I could use his awesome sound shader (sound shaders a black magic to me, which makes Andre's accomplishment all the more impressive) as background music. Took me about 5 hours of effort, which included "figuring out how this raymarching biz works". The lighting is a bit off but I figure light is supposed to be funny in the time vortex. Also I'm not aware of a way to do ambient occlusion in a raymarching fragment shader.

## Friday, January 17, 2014

### Starting to Look Impressive - Crytek Sponza

You're not really showing off your real-time rendering code unless you're showing the Crytek Sponza. Sadly no GI... yet.

I've added *basic* LOD support, and added the all important colour bricks. Lighting bricks are the next brick in line. There are still some odd ray errors, and the colour does odd things when it's really thin (which at the moment, is always). Here's the commit.

## Monday, January 13, 2014

### Same Screenshot, Less Glitches, Bonus Numbers

This camera location was very carefully selected for it's absence of graphical errors. An error that is believed to be both a ray error and an allocation error is visible if the camera moves a couple of centimetres to the right, and moving any further away moves into a higher LOD level — mip mapping isn't implemented yet, so it disappears. On the bright side, it disappears! No more garbage where there should be an empty mip-level.

Here in Australia it's summer time, which is a *bad* time for GPU computing if one does not possess air-conditioning. As the result of an incident, the program now uses the very nice NVLM on Nvidia cards, and the not quite as nice ADL on AMD cards to query the GPU temperature. The windows version of the NVLM code has not been tested - it has however been proven correct. If your drivers are new-ish, it should just work, or not, and the "or not" has been tested and does behave nicely. The AMD ADL stuff *should* work... at least I've tested it not working, and it not works as intended.

The OpenCL renderer has been removed pending me getting my hands on something with more modern OpenCL support. It lives on in the repo history. The Stargate model comes from here.

## Thursday, December 12, 2013

### OpenCL up to Speed, and 4K Voxelisation Has Been Attained

As you can see there are still plenty of graphical errors, but I have finally cracked that magical 1024 voxel dimension limits I have had for all this time. 2k isn't that impressive these days, so I jumped straight to 4k, which is needed to see pretty much all of the little patterns on the inside and outside edges of the Stargate. Amusingly, that 16 fold increase in detail didn't noticeably impact performance at all, at least on the rendering side of things (brick creation on the other hand...). Also the OpenCL renderer has been brought up to speed, and currently works at least as well as the OpenGL renderer. Sadly the same can not be for OpenCL's performance, which is really quite poor, at least on my GTX680 it appears to be roughly a quarter of the frame rate of the GLSL version. The Stargate model comes from here. Source code for the current progress as always is available from GitHub.