Latest Comments

§ Paul Watt®   said on :


Thanks for pointing out the file link was no longer working.
I re-uploaded the version I use in my alchemy library. I don’t remember how the file differs from the original, but this one is based on the concepts in this article, including all of the functions.

You can refer to my alchemy library if you would like to see how a library like this can be used.


§ Paul Watt®   said on :


Thanks for identifying those typos. The < is part of the formatting that I typed in incorrectly, so it didn’t display the ‘<’. You identified the proper fix.

From looking at the code, I think it assumes a 24-bit color bitmap. That is the first thing that I would verify.

Otherwise, maybe you could send me a sample image.

§ Paul Watt®   said on :

the “type*=nullptr” code is setting a default value to the template “type” parameter equal to “nullptr”

It would probably been clearer if I had written like this:

::type* = nullptr>

§ Pete   said on :

This taught me a lot about Modern C++ template programming.
The link to the type_list.h file is not working. Please update it.
Thanks, Pete

§ eiselekd said on :

I wonder what the “type*=nullptr” syntax in the template parameter means. Is meaning has the “*"…

§ sivabalan   said on :

Hi, What is ‘&1t;’ at line 6, 7 of RenderProjection function. I am using ‘<’ instead of that.
at line 3 of BilinearSample function, int(u) is incorrect. I am using int(y) instead.
I am getting a weird little planet (looks like having two little planets merged in the opposite direction, with a different color.
Thanks for the support

§ narasingM   said on :

good work on the detail. But lacks a complete working example for someone to fully comprehend without referring to other material. Hope you can add.

§ Paulo said on :


Very nice article. Thanks.

§ Paul Watt®   said on :

I apologize about the link.
I will edit this post to point to the latest stuff found on GitHub.


§ Tim said on :

Love the blog, found this entry most interesting. One of the things that drives me nuts is the assumptions about copy rights; to wit; on youtube is a copy of Robert Johnson’s classic “32-20 Blues", its a “tribute” type video with the audio overlaid with some deep south pictures and so on. The guy who put the video together mentions something about a copy right (I forget the attribution) even though the song passed into the public domain years ago. One should never make assertions about things they know NOTHING ABOUT!


§ Ameya V Singh said on :

The download link is broken.
From where can I download the sources mentioned in this article.


§ Paul Watt®   said on :

Thanks for the clarification. I’ll modify my text.

§ serkan said on :


Thank you for the article.

In the “Does it have a name?” part, lvalue expressions that doesn’t have name were described as follows;

“Examples of lvalue expressions that do not have names are string literals and function call expressions that return an rvalue reference.”

Function call expressions that return a rvalue reference are xvalue, lvalue expressions must be function call expressions that return an lvalue, not rvalue.

§ Alien426 said on :

No, it is not fixed.

It used to be a copy of the binary conversion with just the radix changed from 2 to 16.

Now you it reads:
237 / 16 224 D16 (13) (160)
224 / 16 13 E16 (14) (161)

You just put in the numbers from your (hex to dec) comment.

§ Paul Watt®   said on :

Thanks for clarifying, I understand what you were indicating.
It’s now corrected.

Thank you again.

§ Alien426 said on :

The result is correct. The calculation is not. Please fix it.

§ Paul Watt®   said on :

Thanks for double-checking my work.

However, 0xED is the correct conversion for 237 from decimal to hexadecimal. A quick way to verify this is to convert 0xED back to decimal:

0xE(14) * 16 + 0xD(13) * 1 = 224 + 13 = 237

The quotient (answer to the division) is the value that we want to fill in the place-value spot during number conversion.
The remainder is what is left and carries over to the next lower place-value column.

§ Paul Watt®   said on :

k_pi_inverse is 1/pi:


§ Alien426 said on :

The conversion of decimal 237 to hexadecimal is incorrect.

It should be:
237 / 16 = 14, remainder 13 -> 0xD
14 / 16 = 0, remainder 14 -> 0xE

§ Mathieu   said on :

What value should k_pi_inverse be?

Contact / Help. ©2019 by Paul Watt; Charon adapted from work by daroz. CMS / cheap web hosting.
Design & icons by N.Design Studio. Skin by Tender Feelings / Skin Faktory.