I just saw that my last post was already one year ago! Well.. time is flying =) Here are some of my lastest projects:

Eddy Flux: A game based on gravity made for “Master Praktikum Physics Interaction” (Feb 2016)

We used C++ AMP to compute upto 8 million particles on a Geforce GTX 980 with about 40-50 fps. After this class we decided to drop AMP support because it interfered with the DXDevice while rendering in another thread.

But anways heres the result of the realtime simulation:

Currenlty we are enhancing the renderer of our HelixEngine while I’m working on my bachelors thesis on automatic shader permutation selection. Also we just recently got a new domain for the engine: helix.graphics

Sponza

Sponza

The domain just links to our Twitter site for now, but we hope to setup a info website some time ‘soon’. In the meantime please follow us on @HelixEngine or @singul4rity or @revo2445

In june we also participated at SemesterGameJame and made a short horror game called ‘Blackout’ in just 42h of straight coding. The objective is to get the lights working again but you can only see during flashes of the thunderstorm outside.

Blackout

cya next year =)

Paper preview

Paper preview

 

Earlier this year, me and my fellow students Magdalena and Steffen wrote paper about the Fast Inverse Square Root algorithm (aka 0x5f3759df) with a focus on low level performance using ARM assembly. In the paper we did a comparison between the original C algorithm, the ARM functions (vrsqrte and vrsqrts) and our own NEON implementation. It turned out that our NEON implementation was slightly slower than the built-in functions but had fewer errors. The second part of the paper was about finding a optimal MagicNumber for a given metric, the result was a program called Sigma which is able to find better error correcting MagicNumbers than the original constant 0x5f3759df. We tested and measured our code on a BeagleBoard-xM with a ARM Cortex A8 running at 1Ghz and 512 MB DDR 2 RAM, check out the results in the paper and the included log file in the misc folder. Sadly the paper and source code comments are in German, if you have any questions leave a comment or post in the forums.

Download the complete source code (including the DS-5 asm project) and paper here: ARMFastInvSqrt.zip

The complete source code as well as the paper are licensed under the GPL.

Sigma code snippet

Sigma code snippet

Due to a maintenance of the power facilities performed by our provider and data center StratoAG we will be unavailable for a small period of time during the maintenance window below.

Date: 27th Oct 2014 (27.10.2014)
Time: between 2:30 PM and 4:30 PM (between 14:30 and 16:30)

More information will be available here.

 

Update: The maintenance ended successfully.

A quick update regarding the forum maintenance.

We’ve finished the forum maintenance without problems or anything that has hold us back and everything seems to work.

 

If you find bugs, missing or broken things please report them to us in the forum.

The forum will be down for a hours due to maintenance work during the 20th Sept of 2014.

You may experience “403 – Permission denied” errors from our server while trying to access our forum. In total the downtime should not be longer than a few hours. In emergency case we’ll install a backup and make a new appointment for the maintenance.

Thank you for your understanding dear visitors.

From today Singul4rity has a brand new flat and responsive theme on.
 
It is a lightweight and highly responsive theme (called Flat) for Wordpess blogs. Works very well on desktop computers and has a great responsive mobile version for phones, tablets, etc…
 
Below is a URL to a screenshot of the responsive version on a mobile.
SiNGUL4RiTY Responsive

After some struggle with the thread affinity of Qt objects (QTcpSockets) I got some help at Stackoverflow resulting in this example code below. Check it out if you ran into a problem like:

QSocketNotifier: socket notifiers cannot be disabled from another thread ASSERT failure in QCoreApplication::sendEvent: “Cannot send events to objects owned by a different thread….

The complete sourcecode can be found here: https://bitbucket.org/razor8/infectedmasterserver.git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void TcpServer::incomingConnection(int socketDescriptor){
	if(thread_pool.size() < max_connections){
		QThread *thread = new QThread();
		Client *client = new Client(socketDescriptor,this,auto_disconnect);
		client->moveToThread(thread);
		connect(thread, SIGNAL(started()), client, SLOT(run()));
		thread->start();
		connect(client,SIGNAL(disconnected(Client*)),this,SLOT(remove_client(Client*)));
		WRITELOCK(thread_pool.insert(client,thread));
	}
}
 
void TcpServer::remove_client(Client *client){
    disconnect(client,SIGNAL(disconnected(Client*)),this,SLOT(remove_client(Client*)));
	lock.lockForWrite();    
	QMap<client *,QThread*>::iterator itr = thread_pool.find(client);
	if(itr != thread_pool.end()){
        itr.value()->quit();
        itr.value()->wait();
        delete itr.value();
		thread_pool.erase(itr);
	}
	lock.unlock();
	delete client;
}</client>