Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 22 May 2004
Offline Last Active Jun 03 2016 11:05 AM

Posts I've Made

In Topic: What will change with HDR monitor ?

20 December 2015 - 06:01 AM

I have a BenQ BL3201PT 32" UHD display that supports 10bit color channels on Windows desktop. In nVidia control panel settings, it shows up as a output color depth 10bpc in addition to 8pbc. Here is a screenshot of the control panel setting (googled from the web, that one has even 12bpc option it looks like)


As mentioned above, agree that simply having 10bpc over 8bpc doesn't mean much, unless the actual color space that the monitor can output would increase. This BenQ does not support the Rec.2020 colorspace (or even close), since I don't see any difference in anything with 10bpc vs 8bpc, i.e. 8bpc does not produce banding, nor does 10bpc mode produce any more brightness/luminance/colors/(dynamic) contrast. The TomsHardware test confirms that the display covers only 71.84% of Adobe RGB 1998 color space (and Rec.2020 is way larger than Adobe RGB 1998), and the 10bpc mode is implemented with FRC (frame rate control), so the "supports 10bpc" label on a display is not worth much alone.


Looking forward to seeing a display first hand that would support the full Rec.2020 space. Anyone knows if such displays are actually available for purchase yet?

In Topic: Optimizing OpenGL FPS

19 November 2015 - 03:23 AM

I've used OpenGL a very little bit on the three main os, but never that much to run into such FPS differences.

Nvidia on Linux should be as fast as on Windows, X-Plane for ex. runs 20% faster with my GTX770 on Ubuntu.


This is called proof by example.


Game systems are complex. Yours or X-Plane's cases may not stress the same usage scenarios as Alien Isolation does. It could be difference in performance in a feature that has an easy marketed label attachable to it ("oh, it's geometry shaders that are slower", or "oh, tessellation is this much slower") which can be easy to attribute to layman terms, or it might as well not, and it could just be about some internal API call access patterns that a specific engine or a new fancy rendering technique might need to use.


What is causing the actual slowdown in this specific case, your guess is as good as anyone else's, and the only way to know is if you could ask the first-hand developers who have access to the code and have profiled the game on multiple platforms.

In Topic: Extracting basis vectors from a quaternion

09 November 2015 - 12:02 PM

Code snippets like the above should definitely come with a comment disambiguating the used conventions. Inherently a quaternion (nor a matrix) does not have forward, right or up vectors, but it is the semantic conventions that give such meanings. What is 'Up' in one engine can be 'Forward' in the conventions of another engine. Quickly glancing, in the conventions used by the above snippet, the function ComputeRightVector is the image of (1,0,0) or +X vector when transformed (=conjugated) by the quaternion, and ComputeUpVector is the image of (0,1,0)/+Y vector, and ComputeForwardVector is the image of (0,0,1)/+Z vector transformed by the quaternion. The coordinate system is assumed to be left-handed. Were those the assumed conventions?

In Topic: Sort unit vectors clockwise

27 September 2015 - 03:13 PM

Split vectors in two halves, those with y < 0, and those with y > 0. Then first make the vectors with y < 0 always precede those with y > 0, and if the vectors have the same sign, then do the dot product. That is, something like

bool compare(a,b)
    if (a.y*b.y <= 0) // If a and b have different signs on their y coordinate?
       return a.y < b.y || (a.y == b.y && a.x < b.x); // Then the one pointing down comes before. If both have y = 0, then test x coord.
       return a.x*b.y - a.y*b.x < 0; // Same y signs, establish ordering with a perpdot b.

I did not test this code in practice, but I know I use something like this in a recent project, though I don't have the source at hand now to verify. In particular, be sure to test the case when both vectors have y = 0 and only x coordinates differ.

In Topic: Perfect aabb frustum intersection test

27 September 2015 - 02:52 PM

Like discussed already, there is an important distinction to be made between Frustum-AABB intersection test versus a Frustum-AABB culling test. In the first problem, we want to accurately determine whether the two objects intersect. In the second, we want to quickly find (and reject) AABBs that are certainly outside the Frustum, but don't necessarily care if there are some false positives that pass the sieve (since whatever purpose the culling is for, later stages of the pipeline will handle the few undetected cases).


The code presented by Aressera in comment 5 is the commonly presented fast culling test. If you need a precise Frustum-AABB intersection test instead of a culling test, see a precise SAT test, for example in MathGeoLib here: https://github.com/juj/MathGeoLib/blob/master/src/Algorithm/SAT.h#L26 . The difference between the full SAT and the culling test is that the full SAT test tests the cross products of each pair of face normals of the two objects in question, which is enough to quarantee no false positives from occurring.