• Create Account

# Zaoshi Kaba

Member Since 04 Nov 2012
Online Last Active Today, 08:52 AM

### In Topic: Final year project ideas

23 August 2016 - 02:22 PM

My Bachelor's thesis was frustum culling. I implemented single-threaded brute force culling and optimized it using AVX instructions and cache. It goes over 400,000,000 culls / second.

For Master's thesis I had an idea for occlusion culling. Later I found out that such method already exists and it is called coverage buffer occlusion culling. I still went with it. Used Intel's Software Culling as a base and replaced depth buffer rasterization with coverage buffer. On a side note it was only 1% better, but average FPS has significantly lower deviation.

You could also try to go for various shading algorithms. For example try to create shader for realistic human skin or animal fur. Maybe give a try at area lights (https://labs.unity.com/article/real-time-polygonal-light-shading-linearly-transformed-cosines). Maybe beat a dead horse and create Yet Another Planet Renderer™, possibly with full vegetation and simulation to show how planet evolves as time goes on (plants growing, dying, spreading, river erosion, deserts growing / disappearing, etc.).

### In Topic: Bullet Physics - Weird collision

22 August 2016 - 08:56 AM

How do you apply physics transformation to your graphical object?

### In Topic: Quick Way To Invert Matrix

05 August 2016 - 05:18 AM

For advanced users: There are other ways in which the determinant is connected to the inverse. One I learned about recently is that the gradient of the determinant (as a function of n^2 variables) is the transpose of the inverse times the determinant squared, or something like that. It turns you can use that fact together with automatic differentiation to compute the inverse in a really whacky way.

If you transpose rotation matrix you get inverse rotation matrix. Ofc it cannot contain translation / scaling / etc.

### In Topic: When you realize how dumb a bug is...

18 July 2016 - 01:53 PM

Today, at work I wrote code equivalent to this and spent over an hour debugging why username was randomly becoming empty. FML

```// LPCWSTR username
}