Thursday, June 15, 2017

Fresh System Install

This is primarily for my own records, but I think it's also needed for programmers to detail their *exact* setup so people can play along at home. Not so important on Linux (because Linux is a programmers OS, that stuff works really well), but utterly essential on Windows, where this time around I counted over half a dozen different distributions of *mingw* alone. Here you will find, what is in my opinion, the "best practice" method of getting my cross platform dev environment going. If you're watching my Voxel Project at all, this combined with the located there, will tell you *exactly* how to set up your compilers, covering *every single step* required to make it work. I write this today, because the instructions I wrote last time are no longer working. Lets see how long it lasts this time.

All OS's

Ubuntu 16.04.02

Win32 Disk Imager - allows UEFI to work

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-381

# from Voxel Repo
sudo apt-get install a56 imagemagick git-core libglu1-mesa-dev libxi-dev ocl-icd-opencl-dev mingw-w64

sudo apt-get install clang vlc vim-gnome

# from GitHub
ssh-keygen -t rsa -b 4096 -C ""
ssh-copy-id username@oldhost

Windows 10

Windows 10 USB Install Tool

All OS's Step 2

git config --global
git config --global "your name"

Tuesday, March 24, 2015

dhewm3 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
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
cd dhewm3/neo
cmake .
make -j8


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
cd dhewm3/neo
cmake -G"MinGW Makefiles" -DDHEWM3LIBS=../../dhewm3-libs-master/x86_64-w64-mingw32/ .
make -j8


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

Shadertoy's Dalek was Lonely

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.