diff --git a/_sources/blog/cpp.rst.txt b/_sources/blog/cpp.rst.txt index b563113..47beb4c 100644 --- a/_sources/blog/cpp.rst.txt +++ b/_sources/blog/cpp.rst.txt @@ -222,3 +222,528 @@ Constructors return 0; } +Exceptions +---------- + +.. code-block:: cpp + + #include + using namespace std; + + double division(int a, int b) + { + if (b == 0) + { + throw "Division by zero error!"; + } + return (a / b); + } + + int main() + { + try + { + division(10, 0); + } + catch (const char *msg) + { + cerr << msg << endl; + } + + return 0; + } + +For-Loop +-------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + for (int i = 0; i < 5; i++) + { + cout << i << endl; + } + + return 0; + } + +Functions +--------- + +.. code-block:: cpp + + #include + using namespace std; + + // Specify a method signature + int addNumbers(int num1, int num2); + + int main() + { + // NOTE: We declare the function first + int sum = addNumbers(4, 60); + cout << sum << endl; + + return 0; + } + + int addNumbers(int num1, int num2) + { + return num1 + num2; + } + +Get-Set +------- + +.. code-block:: cpp + + #include + #include + using namespace std; + + // Create the Book datatype + class Book + { + private: + string title; + string author; + + public: + // Define the class' constuctor function + // NOTE: This is like `def __init__()` in Python :D + Book(string title, string author) + { + this->setTitle(title); + this->setAuthor(author); + } + + string getTitle() + { + return this->title; + } + + void setTitle(string title) + { + this->title = title; + } + + string getAuthor(string author) + { + return this->author; + } + + void setAuthor(string author) + { + this->author = author; + } + + void readBook() + { + cout << "Reading " + this->title + " by " + this->author << endl; + } + }; + + int main() + { + // Construct the book1 object instance + Book book1("Harry Potter", "JK Rowling"); + + // Print out info from the book1 object instance + book1.readBook(); + cout << book1.getTitle() << endl; + + // Construct the book2 object instance + Book book2("Lord of the Rings", "JRR Tolkien"); + + // Print out info from the book2 object instance + book2.readBook(); + cout << book2.getTitle() << endl; + + return 0; + } + +If-Statements +------------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + // Define 2 booleans + bool isStudent = false; + bool isSmart = false; + + if (isStudent && isSmart) + { + cout << "You are a student" << endl; + } + else if (isStudent && !isSmart) + { + cout << "You are not a smart student" << endl; + } + else + { + cout << "You are not a student and not smart" << endl; + } + + // >, <, >=, <=, !=, == + if (1 > 3) + { + cout << "Number comparison was true" << endl; + } + + if ('a' > 'b') + { + cout << "Character comparison was true" << endl; + } + + string myString = "cat"; + if (myString.compare("cat") != 0) + { + cout << "string comparison was true" << endl; + } + + return 0; + } + +Inheritance +----------- + +.. code-block:: cpp + + #include + using namespace std; + + // Create a Chef datatype + class Chef + { + public: + string name; + int age; + + Chef(string name, int age) + { + this->name = name; + this->age = age; + } + + void makeChicken() + { + cout << "The chef makes chicken" << endl; + } + + void makeSalad() + { + cout << "The chef makes salad" << endl; + } + + void makeSpecialDish() + { + cout << "The chef makes a special dish" << endl; + } + }; + + // Create an ItalianChef datatype that is an extenion of the Chef datatype + class ItalianChef : public Chef + { + public: + string countryOfOrigin; + + // Extended class' constructor from Chef's class constructor + ItalianChef(string name, int age, string countryOfOrigin) : Chef(name, age) + { + this->countryOfOrigin = countryOfOrigin; + } + + void makePasta() + { + cout << "The chef makes pasta" << endl; + } + + // Override the Chef class' makeSpecialDish() + void makeSpecialDish() + { + cout << "The chef makes chicken parmesan" << endl; + } + }; + + int main() + { + // Example of the Chef class + Chef myChef("Gordon Ramsay", 50); + myChef.makeSpecialDish(); + + // Example of the extended ItalianChef class + ItalianChef myItalianChef("Massimo Bottura", 55, "Italy"); + myItalianChef.makeSpecialDish(); + cout << myItalianChef.age << endl; + + return 0; + } + +Numbers +------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + cout << 2 * 3 << endl; // Basic arithmetic: +, -, /, * + cout << 10 % 3 << endl; // Modulus operator: returns the remainder of 10 / 3 + cout << (1 + 2) * 3 << endl; // Order of operations + + /* + Division rules with ints and doubles: + f/f = f + i/i = i + i/f = f + f/i = f + */ + cout << 10 / 3.0 << endl; + + int num = 10; + num += 100; // +=, -=, /=, *= + cout << num << endl; + + // Example: variable incrementation + num++; + cout << num << endl; + + return 0; + } + +Pointers +-------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + /* + What pointers are: + - Exposes memory addresses + - Manipulates memory addresses + Why we use pointers: + - Memory addresses can change per-syetem + - Directly change data without copying it + */ + + // Print out an integer variable's memory address + int num = 10; + cout << &num << endl; + + // Store the integer variable's memory address into memory + int *pNum = # + cout << pNum << endl; // Print the memory adddress + cout << *pNum << endl; // Dereference the memory address to fetch its stored value + + return 0; + } + +Printing +-------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + cout << "Hello World!" << endl; + + return 0; + } + +Strings +------- + +.. code-block:: cpp + + #include + #include + using namespace std; + + int main() + { + string greetings = "Hello"; + // char indexes: 01234 + + cout << greetings.length() << endl; // Get string length + cout << greetings[0] << endl; // Get 1st character of string + cout << greetings.find("llo") << endl; // Find "llo"'s starting character position + cout << greetings.substr(2) << endl; // Get all characters, starting from the 2nd character of the string + cout << greetings.substr(1, 3) << endl; // Get 3 characters, starting from the 1st character of the string + + return 0; + } + +Switch-Statements +----------------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + char myGrade = 'A'; + switch (myGrade) + { + case 'A': + cout << "You pass" << endl; + break; + case 'B': + cout << "You fail" << endl; + break; + default: + cout << "Invalid grade" << endl; + } + + return 0; + } + +User Variables +-------------- + +.. code-block:: cpp + + #include + #include + using namespace std; + + int main() + { + string name; + cout << "Enter your name: "; + cin >> name; + cout << "Hello " << name << endl; + + int num1, num2; + cout << "Enter first number: "; + cin >> num1; + cout << "Enter second number: "; + cin >> num2; + cout << "Answer: " << num1 + num2 << endl; + + return 0; + } + +Variables +--------- + +.. code-block:: cpp + + #include + #include + using namespace std; + + int main() + { + /* + Traits: + - Case-sensitive + - May begin with letters + - Can include letters, numbers, or _ + Convention: + - First word lower-case, rest upper-case (camelCase) + - Example: myVariable + */ + + string name = "Mike"; // string of characters, not primitive + char testGrade = 'A'; // single 8-bit character + + // NOTE: You can make them unsigned by adding the "unsigned" prefix + short age0 = 10; // atleast 16-bit signed integer + int age1 = 20; // atleast 16-bits signed integer (not smaller than short) + long age2 = 30; // atleast 32-bits signed integer + long long age3 = 40; // atleast 64-bits signed integer + + float gpa0 = 2.5f; // single percision floating point + double gpa1 = 3.5l; // double-precision floating point + long double gpa2 = 3.5; // extended-precision floating point + + bool isTall; // 1-bit -> true/false + isTall = true; + + return 0; + } + +Vectors +------- + +.. code-block:: cpp + + #include + #include + #include + using namespace std; + + int main() + { + // Define a vector of strings + vector friends; + // Append 3 strings into the vector + friends.push_back("Oscar"); + friends.push_back("Angela"); + friends.push_back("Kevin"); + // Append "Jim" at the 2nd index of the vendor + friends.insert(friends.begin() + 1, "Jim"); + + // Print out the friend vector's first 3 members + cout << friends.at(0) << endl; + cout << friends.at(1) << endl; + cout << friends.at(2) << endl; + // Print out the friend vector's size + cout << friends.size() << endl; + + return 0; + } + +While-Loop +---------- + +.. code-block:: cpp + + #include + using namespace std; + + int main() + { + // Notify that this is a while loop + cout << "Executing while loop" << endl; + + // Do while loop + int index = 1; + while (index <= 5) + { + cout << index << endl; + index++; + } + + // Notify that this is a do-while loop + cout << "Executing do-while loop" << endl; + + do + { + cout << index << endl; + index++; + } while (index <= 5); + + return 0; + } + diff --git a/blog/cpp.html b/blog/cpp.html index 9e8ec11..9f0dc86 100644 --- a/blog/cpp.html +++ b/blog/cpp.html @@ -54,6 +54,21 @@
  • Classes
  • Constants
  • Constructors
  • +
  • Exceptions
  • +
  • For-Loop
  • +
  • Functions
  • +
  • Get-Set
  • +
  • If-Statements
  • +
  • Inheritance
  • +
  • Numbers
  • +
  • Pointers
  • +
  • Printing
  • +
  • Strings
  • +
  • Switch-Statements
  • +
  • User Variables
  • +
  • Variables
  • +
  • Vectors
  • +
  • While-Loop
  • Temporal Auto-Exposure with Hardware Blending
  • @@ -311,6 +326,516 @@

    Constructors book2.readBook(); cout << book2.title << endl; + return 0; +} + + + +
    +

    Exceptions

    +
    #include <iostream>
    +using namespace std;
    +
    +double division(int a, int b)
    +{
    +   if (b == 0)
    +   {
    +      throw "Division by zero error!";
    +   }
    +   return (a / b);
    +}
    +
    +int main()
    +{
    +   try
    +   {
    +      division(10, 0);
    +   }
    +   catch (const char *msg)
    +   {
    +      cerr << msg << endl;
    +   }
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    For-Loop

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   for (int i = 0; i < 5; i++)
    +   {
    +      cout << i << endl;
    +   }
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Functions

    +
    #include <iostream>
    +using namespace std;
    +
    +// Specify a method signature
    +int addNumbers(int num1, int num2);
    +
    +int main()
    +{
    +   // NOTE: We declare the function first
    +   int sum = addNumbers(4, 60);
    +   cout << sum << endl;
    +
    +   return 0;
    +}
    +
    +int addNumbers(int num1, int num2)
    +{
    +   return num1 + num2;
    +}
    +
    +
    +
    +
    +

    Get-Set

    +
    #include <iostream>
    +#include <string>
    +using namespace std;
    +
    +// Create the Book datatype
    +class Book
    +{
    +private:
    +   string title;
    +   string author;
    +
    +public:
    +   // Define the class' constuctor function
    +   // NOTE: This is like `def __init__()` in Python :D
    +   Book(string title, string author)
    +   {
    +      this->setTitle(title);
    +      this->setAuthor(author);
    +   }
    +
    +   string getTitle()
    +   {
    +      return this->title;
    +   }
    +
    +   void setTitle(string title)
    +   {
    +      this->title = title;
    +   }
    +
    +   string getAuthor(string author)
    +   {
    +      return this->author;
    +   }
    +
    +   void setAuthor(string author)
    +   {
    +      this->author = author;
    +   }
    +
    +   void readBook()
    +   {
    +      cout << "Reading " + this->title + " by " + this->author << endl;
    +   }
    +};
    +
    +int main()
    +{
    +   // Construct the book1 object instance
    +   Book book1("Harry Potter", "JK Rowling");
    +
    +   // Print out info from the book1 object instance
    +   book1.readBook();
    +   cout << book1.getTitle() << endl;
    +
    +   // Construct the book2 object instance
    +   Book book2("Lord of the Rings", "JRR Tolkien");
    +
    +   // Print out info from the book2 object instance
    +   book2.readBook();
    +   cout << book2.getTitle() << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    If-Statements

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   // Define 2 booleans
    +   bool isStudent = false;
    +   bool isSmart = false;
    +
    +   if (isStudent && isSmart)
    +   {
    +      cout << "You are a student" << endl;
    +   }
    +   else if (isStudent && !isSmart)
    +   {
    +      cout << "You are not a smart student" << endl;
    +   }
    +   else
    +   {
    +      cout << "You are not a student and not smart" << endl;
    +   }
    +
    +   // >, <, >=, <=, !=, ==
    +   if (1 > 3)
    +   {
    +      cout << "Number comparison was true" << endl;
    +   }
    +
    +   if ('a' > 'b')
    +   {
    +      cout << "Character comparison was true" << endl;
    +   }
    +
    +   string myString = "cat";
    +   if (myString.compare("cat") != 0)
    +   {
    +      cout << "string comparison was true" << endl;
    +   }
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Inheritance

    +
    #include <iostream>
    +using namespace std;
    +
    +// Create a Chef datatype
    +class Chef
    +{
    +public:
    +   string name;
    +   int age;
    +
    +   Chef(string name, int age)
    +   {
    +      this->name = name;
    +      this->age = age;
    +   }
    +
    +   void makeChicken()
    +   {
    +      cout << "The chef makes chicken" << endl;
    +   }
    +
    +   void makeSalad()
    +   {
    +      cout << "The chef makes salad" << endl;
    +   }
    +
    +   void makeSpecialDish()
    +   {
    +      cout << "The chef makes a special dish" << endl;
    +   }
    +};
    +
    +// Create an ItalianChef datatype that is an extenion of the Chef datatype
    +class ItalianChef : public Chef
    +{
    +public:
    +   string countryOfOrigin;
    +
    +   // Extended class' constructor from Chef's class constructor
    +   ItalianChef(string name, int age, string countryOfOrigin) : Chef(name, age)
    +   {
    +      this->countryOfOrigin = countryOfOrigin;
    +   }
    +
    +   void makePasta()
    +   {
    +      cout << "The chef makes pasta" << endl;
    +   }
    +
    +   // Override the Chef class' makeSpecialDish()
    +   void makeSpecialDish()
    +   {
    +      cout << "The chef makes chicken parmesan" << endl;
    +   }
    +};
    +
    +int main()
    +{
    +   // Example of the Chef class
    +   Chef myChef("Gordon Ramsay", 50);
    +   myChef.makeSpecialDish();
    +
    +   // Example of the extended ItalianChef class
    +   ItalianChef myItalianChef("Massimo Bottura", 55, "Italy");
    +   myItalianChef.makeSpecialDish();
    +   cout << myItalianChef.age << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Numbers

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   cout << 2 * 3 << endl;       // Basic arithmetic: +, -, /, *
    +   cout << 10 % 3 << endl;      // Modulus operator: returns the remainder of 10 / 3
    +   cout << (1 + 2) * 3 << endl; // Order of operations
    +
    +   /*
    +      Division rules with ints and doubles:
    +         f/f = f
    +         i/i = i
    +         i/f = f
    +         f/i = f
    +   */
    +   cout << 10 / 3.0 << endl;
    +
    +   int num = 10;
    +   num += 100; // +=, -=, /=, *=
    +   cout << num << endl;
    +
    +   // Example: variable incrementation
    +   num++;
    +   cout << num << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Pointers

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   /*
    +      What pointers are:
    +      - Exposes memory addresses
    +      - Manipulates memory addresses
    +      Why we use pointers:
    +      - Memory addresses can change per-syetem
    +      - Directly change data without copying it
    +   */
    +
    +   // Print out an integer variable's memory address
    +   int num = 10;
    +   cout << &num << endl;
    +
    +   // Store the integer variable's memory address into memory
    +   int *pNum = &num;
    +   cout << pNum << endl;  // Print the memory adddress
    +   cout << *pNum << endl; // Dereference the memory address to fetch its stored value
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Printing

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   cout << "Hello World!" << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Strings

    +
    #include <iostream>
    +#include <string>
    +using namespace std;
    +
    +int main()
    +{
    +   string greetings = "Hello";
    +   //    char indexes: 01234
    +
    +   cout << greetings.length() << endl;     // Get string length
    +   cout << greetings[0] << endl;           // Get 1st character of string
    +   cout << greetings.find("llo") << endl;  // Find "llo"'s starting character position
    +   cout << greetings.substr(2) << endl;    // Get all characters, starting from the 2nd character of the string
    +   cout << greetings.substr(1, 3) << endl; // Get 3 characters, starting from the 1st character of the string
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Switch-Statements

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   char myGrade = 'A';
    +   switch (myGrade)
    +   {
    +      case 'A':
    +            cout << "You pass" << endl;
    +            break;
    +      case 'B':
    +            cout << "You fail" << endl;
    +            break;
    +      default:
    +            cout << "Invalid grade" << endl;
    +   }
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    User Variables

    +
    #include <iostream>
    +#include <string>
    +using namespace std;
    +
    +int main()
    +{
    +   string name;
    +   cout << "Enter your name: ";
    +   cin >> name;
    +   cout << "Hello " << name << endl;
    +
    +   int num1, num2;
    +   cout << "Enter first number: ";
    +   cin >> num1;
    +   cout << "Enter second number: ";
    +   cin >> num2;
    +   cout << "Answer: " << num1 + num2 << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Variables

    +
    #include <iostream>
    +#include <string>
    +using namespace std;
    +
    +int main()
    +{
    +   /*
    +      Traits:
    +      - Case-sensitive
    +      - May begin with letters
    +      - Can include letters, numbers, or _
    +     Convention:
    +      - First word lower-case, rest upper-case (camelCase)
    +      - Example: myVariable
    +   */
    +
    +   string name = "Mike"; // string of characters, not primitive
    +   char testGrade = 'A'; // single 8-bit character
    +
    +   // NOTE: You can make them unsigned by adding the "unsigned" prefix
    +   short age0 = 10;     // atleast 16-bit signed integer
    +   int age1 = 20;       // atleast 16-bits signed integer (not smaller than short)
    +   long age2 = 30;      // atleast 32-bits signed integer
    +   long long age3 = 40; // atleast 64-bits signed integer
    +
    +   float gpa0 = 2.5f;      // single percision floating point
    +   double gpa1 = 3.5l;     // double-precision floating point
    +   long double gpa2 = 3.5; // extended-precision floating point
    +
    +   bool isTall; // 1-bit -> true/false
    +   isTall = true;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    Vectors

    +
    #include <iostream>
    +#include <string>
    +#include <vector>
    +using namespace std;
    +
    +int main()
    +{
    +   // Define a vector of strings
    +   vector<string> friends;
    +   // Append 3 strings into the vector
    +   friends.push_back("Oscar");
    +   friends.push_back("Angela");
    +   friends.push_back("Kevin");
    +   // Append "Jim" at the 2nd index of the vendor
    +   friends.insert(friends.begin() + 1, "Jim");
    +
    +   // Print out the friend vector's first 3 members
    +   cout << friends.at(0) << endl;
    +   cout << friends.at(1) << endl;
    +   cout << friends.at(2) << endl;
    +   // Print out the friend vector's size
    +   cout << friends.size() << endl;
    +
    +   return 0;
    +}
    +
    +
    +
    +
    +

    While-Loop

    +
    #include <iostream>
    +using namespace std;
    +
    +int main()
    +{
    +   // Notify that this is a while loop
    +   cout << "Executing while loop" << endl;
    +
    +   // Do while loop
    +   int index = 1;
    +   while (index <= 5)
    +   {
    +      cout << index << endl;
    +      index++;
    +   }
    +
    +   // Notify that this is a do-while loop
    +   cout << "Executing do-while loop" << endl;
    +
    +   do
    +   {
    +      cout << index << endl;
    +      index++;
    +   } while (index <= 5);
    +
        return 0;
     }
     
    diff --git a/index.html b/index.html index 23388ac..dd68ec3 100644 --- a/index.html +++ b/index.html @@ -103,6 +103,21 @@

    PapagandaClasses
  • Constants
  • Constructors
  • +
  • Exceptions
  • +
  • For-Loop
  • +
  • Functions
  • +
  • Get-Set
  • +
  • If-Statements
  • +
  • Inheritance
  • +
  • Numbers
  • +
  • Pointers
  • +
  • Printing
  • +
  • Strings
  • +
  • Switch-Statements
  • +
  • User Variables
  • +
  • Variables
  • +
  • Vectors
  • +
  • While-Loop
  • Temporal Auto-Exposure with Hardware Blending
  • diff --git a/searchindex.js b/searchindex.js index 04e1fa1..12f3328 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["blog/autoexposure", "blog/censustransform", "blog/chromaticity", "blog/cpp", "blog/gaussianblur", "blog/logdepth", "blog/loops", "blog/opticalflow", "blog/outerralogdepth", "blog/pythonengine", "blog/shadermodels", "blog/sobel", "blog/spherical", "index", "social/instagram", "social/project", "social/youtube"], "filenames": ["blog/autoexposure.rst", "blog/censustransform.rst", "blog/chromaticity.rst", "blog/cpp.rst", "blog/gaussianblur.rst", "blog/logdepth.rst", "blog/loops.rst", "blog/opticalflow.rst", "blog/outerralogdepth.rst", "blog/pythonengine.rst", "blog/shadermodels.rst", "blog/sobel.rst", "blog/spherical.rst", "index.rst", "social/instagram.rst", "social/project.rst", "social/youtube.rst"], "titles": ["Temporal Auto-Exposure with Hardware Blending", "Census Transform in HLSL", "Chromaticity in HLSL", "GiraffeAcademy\u2019s C++ Examples", "RasterGrid\u2019s Gaussian Blur in HLSL", "Logarithmic Depth Buffering in HLSL", "Turning a Nested 2D Loop into 1D", "Lucas-Kanade Optical Flow in HLSL", "Correcting Outerra\u2019s Logarithmic Depth Buffering", "A Pythonic 3D Engine in 1 Weekend", "Project Reality: Shader Model 3.0 Considerations", "Bilinear Sobel Filtering in HLSL", "Spherical Chromaticity in HLSL", "Papaganda", "Instagram", "Personal Content Creation Project", "YouTube"], "terms": {"some": [0, 7], "graphic": [0, 9, 10], "pipelin": [0, 9], "comput": [0, 7, 8, 12, 13], "like": [0, 3, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "textur": [0, 10, 11], "previou": 0, "averag": [0, 1], "bright": 0, "current": [0, 7], "pass": 0, "store": [0, 7, 9], "previous": 0, "gener": [0, 1, 7, 9], "smooth": [0, 9], "you": [0, 2, 5, 6, 7, 9, 10, 11], "can": [0, 2, 3, 5, 6, 9, 11, 12], "us": [0, 3, 7, 9, 13, 16], "accumul": 0, "sourc": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 16], "code": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12], "automat": [0, 8], "shader": [0, 4, 5, 8, 13, 15], "vertex": [0, 8, 9, 10], "struct": [0, 5, 7, 11], "app2v": [0, 5], "float4": [0, 1, 4, 5, 7, 11], "hpo": [0, 5, 8], "posit": [0, 5, 8, 10], "float2": [0, 1, 4, 6, 7, 11, 12], "tex0": 0, "texcoord0": [0, 5], "vs2p": [0, 5], "vs_quad": 0, "input": [0, 5, 13], "output": [0, 2, 4, 5, 8, 11, 13], "return": [0, 1, 2, 3, 4, 5, 7, 11, 12], "pixel": [0, 1, 4, 5, 10, 11], "autoexposur": 0, "http": [0, 5, 16], "knarkowicz": 0, "wordpress": 0, "com": [0, 5], "2016": 0, "01": 0, "09": 0, "float3": [0, 1, 2, 7, 12], "getautoexposur": 0, "color": [0, 1, 2, 5, 7, 10, 12], "tex": [0, 1, 4, 7, 11], "float": [0, 1, 2, 4, 5, 7, 8, 12], "lumaaverag": 0, "exp": [0, 4], "tex2dlod": [0, 4, 7], "samplelumatex": 0, "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "99": [0, 3], "r": [0, 1, 2], "ev100": 0, "log2": [0, 5, 7, 8], "100": [0, 13], "12": [0, 10, 16], "5": [0, 1, 3, 6, 7, 11, 14, 16], "_manualbia": 0, "option": 0, "manual": 0, "bia": 0, "1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 16], "2": [0, 1, 2, 3, 4, 6, 7, 10, 12, 13, 15, 16], "exp2": [0, 1], "ps_generateaverageluma": 0, "tex2d": [0, 1, 11], "samplecolortex": [0, 4], "luma": 0, "max": [0, 1, 7, 8], "g": [0, 1, 2], "b": [0, 1, 2, 7, 11], "outputcolor0": 0, "rgb": [0, 1, 2], "highest": 0, "out": [0, 3, 4], "red": [0, 2], "green": [0, 2], "blue": [0, 13], "compon": 0, "weight": [0, 4], "delai": 0, "1e": [0, 8], "3": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16], "_frametim": 0, "log": [0, 8], "satur": [0, 2, 7, 8, 10, 12], "_smoothingspe": 0, "ps_exposur": 0, "techniqu": 0, "pass0": 0, "render": [0, 9], "itself": 0, "note": [0, 3, 16], "do": [0, 5, 13, 14, 16], "have": [0, 2, 9, 10], "anoth": 0, "overwrit": 0, "generateaverageluma": 0, "blenden": 0, "true": 0, "blendop": 0, "add": [0, 2, 9], "srcblend": 0, "srcalpha": 0, "destblend": 0, "invsrcalpha": 0, "vertexshad": 0, "pixelshad": 0, "pass1": 0, "get": [0, 2, 4, 6, 7, 9], "from": [0, 1, 3, 6, 7, 9, 10, 15, 16], "shade": 0, "here": [0, 5], "applyautoexposur": 0, "The": [1, 3, 5, 7, 9, 10, 11], "i": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "filter": [1, 7, 13, 14], "repres": [1, 13], "": [1, 2, 5, 7, 9, 13, 16], "neighborhood": 1, "relationship": 1, "binari": 1, "string": [1, 3], "0000000": 1, "center": [1, 4, 11], "lesser": 1, "than": [1, 6, 9], "all": [1, 2, 12, 16], "its": 1, "neighbor": 1, "11111111": 1, "greater": 1, "equal": 1, "doe": 1, "depend": 1, "imag": [1, 2, 7], "actual": 1, "intens": [1, 4], "As": [1, 9], "result": 1, "robust": 1, "illumin": 1, "getgreyscal": 1, "getcensustransform": 1, "sampler": [1, 11], "sampleimag": [1, 11], "pixels": [1, 4, 7, 11], "outputcolor": [1, 4], "columntex": 1, "xyyi": [1, 7], "const": [1, 3, 4, 5, 6, 7, 8, 12], "int": [1, 3, 6, 7], "8": [1, 3, 6, 10, 11], "sampleneighbor": 1, "xy": [1, 6, 7, 12], "xz": [1, 7, 12], "4": [1, 3, 6, 7, 11], "xw": 1, "6": [1, 3, 6, 8], "7": [1, 5, 6], "centersampl": 1, "bit": [1, 10], "integ": [1, 3, 12], "comparison": 1, "step": [1, 2, 7], "ldexp": 1, "convert": [1, 5], "each": [1, 7, 10], "channel": [1, 2, 12, 16], "often": 2, "ani": [2, 10], "rang": [2, 10, 12], "For": [2, 10], "post": [2, 4, 5, 6, 7, 10, 12, 13], "minimum": 2, "maximum": 2, "colora": 2, "an": [2, 3, 5, 6, 7], "percentag": 2, "proport": 2, "overal": 2, "tabl": 2, "highlight": 2, "equat": 2, "formula": 2, "sum": 2, "certain": [2, 10], "mean": 2, "In": [2, 6, 10, 12], "therefor": 2, "rg": [2, 7, 13], "getrgbchromat": 2, "sumrgb": 2, "dot": [2, 7, 12], "c": [2, 11, 13], "xyz": [2, 5, 7, 12], "optim": [2, 4, 5], "instruct": 2, "dp3": 2, "undefin": 2, "behavior": 2, "happen": [2, 5], "when": [2, 10], "divid": [2, 8], "white": [2, 7, 12], "point": [2, 10], "divisor": 2, "includ": [3, 4, 16], "iostream": 3, "namespac": 3, "std": 3, "vehicl": 3, "public": 3, "virtual": 3, "void": 3, "move": 3, "getdescript": 3, "cout": 3, "ar": [3, 9, 10, 16], "transport": 3, "endl": 3, "bicycl": 3, "pedal": 3, "forward": 3, "plane": [3, 9], "fly": 3, "through": 3, "sky": 3, "main": [3, 6, 7, 13], "myplan": 3, "defin": 3, "luckynumb": 3, "15": 3, "16": 3, "23": 3, "42": 3, "index": 3, "set": [3, 7, 14, 16], "number": [3, 4, 10], "1st": 3, "member": 3, "90": 3, "print": 3, "2nd": 3, "numbergrid": 3, "row": 3, "column": 3, "14": 3, "doubl": 3, "creat": [3, 9], "book": 3, "datatyp": 3, "titl": 3, "author": [3, 16], "readbook": 3, "read": 3, "construct": 3, "book1": 3, "object": [3, 7, 9], "instanc": [3, 9], "harri": 3, "potter": 3, "jk": 3, "rowl": 3, "info": 3, "book2": 3, "lord": 3, "ring": 3, "jrr": 3, "tolkien": 3, "birth_year": 3, "1945": 3, "1988": 3, "t": [3, 7], "chang": [3, 7], "constuctor": 3, "function": [3, 7, 10], "def": 3, "__init__": 3, "python": [3, 13], "d": [3, 7, 11], "sampl": [4, 6, 11], "mani": 4, "between": [4, 7, 11, 12], "articl": 4, "did": 4, "vari": 4, "radii": 4, "solv": [4, 7], "getgaussianweight": 4, "sampleindex": 4, "sigma": 4, "pi": 4, "1415926535897932384626433832795f": 4, "rsqrt": [4, 7, 12], "getgaussianoffset": 4, "linearweight": 4, "offset1": 4, "offset2": 4, "weight1": 4, "weight2": 4, "getgaussianblur": 4, "lod": [4, 7], "first": [4, 9], "even": 4, "side": 4, "totalweight": 4, "linearoffset": 4, "normal": [4, 7, 9], "prevent": 4, "alter": 4, "project": [5, 13, 16], "realiti": [5, 13, 15, 16], "team": [5, 10], "implement": [5, 7, 8, 9, 10], "updat": [5, 10], "cover": [5, 7, 9], "our": [5, 8], "simpl": 5, "outerra": [5, 13], "ha": [5, 8], "2013": 5, "glsl": [5, 8], "simplifi": 5, "version": [5, 8], "uniform": [5, 9], "float4x4": 5, "_worldviewproj": 5, "worldviewproj": 5, "po": 5, "position0": 5, "ps2fb": 5, "linear": [5, 11], "blogspot": 5, "07": 5, "html": 5, "applylogarithmicdepth": 5, "farplan": [5, 8], "10000": [5, 8], "fcoef": [5, 8], "vs_logdepth": 5, "usual": 5, "transform": [5, 9, 13], "mul": [5, 7], "w": [5, 7, 8], "ps_logdepth": 5, "need": [5, 7, 16], "someth": 5, "must": [5, 8, 10, 14, 16], "semant": 5, "so": [5, 6, 7, 11], "gpu": [5, 6, 8, 9], "per": 5, "fragment": 5, "test": 5, "program": [6, 9], "might": 6, "window": 6, "howev": [6, 8, 9, 10], "more": [6, 10], "ineffici": 6, "exampl": [6, 10, 13], "how": [6, 9, 13], "3x3": 6, "offset": 6, "requir": [6, 7, 11], "data": [6, 7, 9, 10, 12], "calcul": [6, 7, 12], "windows": 6, "windowhalf": 6, "trunc": 6, "start": [6, 9], "neg": 6, "we": [6, 8, 9, 12], "process": [6, 7], "x": [6, 7, 12], "y": [6, 7, 12], "estim": 7, "motion": 7, "frame": 7, "essenti": 7, "detect": 7, "recognit": 7, "video": [7, 13], "compress": 7, "effect": 7, "pyramid": 7, "lk": 7, "consist": 7, "follow": [7, 9, 16], "build": 7, "mipmap": [7, 9], "encod": [7, 12], "chromat": [7, 13], "getsphericalrg": [7, 12], "gaussian": [7, 13], "blur": [7, 13], "initi": 7, "vector": 7, "smallest": 7, "largest": 7, "level": [7, 10], "propag": 7, "next": 7, "contain": 7, "mai": 7, "part": [7, 8], "compat": 7, "your": [7, 10], "setup": 7, "ihalfpi": [7, 12], "aco": [7, 12], "dotc": [7, 12], "p": [7, 12], "ab": [7, 12], "getlod": 7, "ix": [7, 11], "ddx": 7, "ii": [7, 11], "ddy": 7, "lx": 7, "ly": 7, "width": 7, "height": 7, "decodevector": 7, "images": 7, "encodevector": 7, "clamp": 7, "bilinear": [7, 13], "fetch": [7, 11], "A": [7, 11, 13], "a11": 7, "a12": 7, "b1": 7, "a21": 7, "a22": 7, "b2": 7, "ixii": 7, "ixit": 7, "iyit": 7, "texel": 7, "mask": 7, "getpixelpylk": 7, "maintex": 7, "sampler2d": 7, "samplei0": 7, "samplei1": 7, "variabl": 7, "ixix": 7, "iyii": 7, "pi2": 7, "tex2dsiz": 7, "texels": 7, "texellod": 7, "zw": 7, "un": 7, "xyxi": 7, "loop": [7, 13], "j": 7, "shift": 7, "sinco": 7, "spatial": 7, "gradient": 7, "n": 7, "ew": 7, "xxxy": 7, "zwww": 7, "e": 7, "tempor": [7, 13, 14, 16], "i0": 7, "i1": 7, "zzzw": 7, "IT": 7, "matrix": 7, "determin": 7, "float2x2": 7, "miss": 8, "major": [8, 12], "hlsl": [8, 13, 15], "multipli": 8, "end": 8, "becaus": 8, "homogen": 8, "space": [8, 9, 12], "z": 8, "spent": 9, "coder": 9, "seri": 9, "fundament": 9, "opengl": 9, "cpu": 9, "learn": 9, "about": [9, 14, 16], "taught": 9, "me": 9, "basic": 9, "geometri": 9, "camera": 9, "scene": 9, "phong": 9, "light": 9, "refactor": 9, "re": [9, 16], "buffer": [9, 12, 13], "adopt": 9, "best": [9, 15], "practic": 9, "gamma": 9, "correct": [9, 13], "load": 9, "extern": 9, "model": [9, 13], "vbo": 9, "unformat": 9, "alloc": 9, "memori": 9, "relat": [9, 16], "purpos": [9, 15], "other": [9, 14, 16], "being": 9, "second": 9, "polymorph": 9, "make": 9, "cube": 9, "face": 9, "replac": 9, "base": 9, "wa": 9, "difficult": 9, "sai": 9, "least": [9, 14, 16], "just": 9, "system": 9, "someon": 9, "who": 9, "want": 9, "found": 9, "enjoy": 9, "believ": 9, "reach": 9, "mass": 9, "also": 9, "defer": 9, "tangent": 9, "peopl": [9, 16], "alreadi": [9, 16], "experi": 9, "straight": 9, "craft": 9, "thank": 9, "support": 10, "gave": 10, "potenti": 10, "port": 10, "type": 10, "opo": 10, "ofog": 10, "size": 10, "opt": 10, "od": 10, "coordin": 10, "ot": 10, "avail": 10, "differ": [10, 14, 16], "precis": [10, 13], "unsign": 10, "appli": 10, "longer": 10, "fix": 10, "method": [10, 16], "around": 11, "getsobel": 11, "introduc": 12, "angl": 12, "pecis": 12, "drawback": 12, "possibl": [12, 14, 16], "valu": 12, "map": [12, 13], "right": [12, 16], "triangl": 12, "elimin": 12, "half": 12, "fit": 12, "entir": 12, "rg8": 12, "giraffeacademi": 13, "abstract": 13, "class": 13, "arrai": 13, "2d": 13, "cast": 13, "constant": 13, "constructor": 13, "auto": 13, "exposur": 13, "hardwar": 13, "blend": 13, "censu": 13, "what": [13, 14, 16], "rastergrid": 13, "logarithm": 13, "depth": 13, "turn": 13, "nest": 13, "1d": 13, "luca": 13, "kanad": 13, "optic": 13, "flow": 13, "algorithm": 13, "3d": 13, "engin": 13, "weekend": [13, 16], "tutori": 13, "skybox": 13, "environ": 13, "shadow": 13, "pcf": 13, "feedback": 13, "recommend": 13, "consider": 13, "regist": 13, "count": 13, "format": 13, "fog": 13, "sobel": 13, "spheric": 13, "loss": 13, "instagram": 13, "account": 13, "templat": 13, "person": 13, "tool": 13, "inform": 13, "bank": 13, "command": 13, "youtub": 13, "descript": 14, "creator": 14, "link": [14, 15, 16], "No": [14, 16], "crop": 14, "At": [14, 16], "sentenc": [14, 16], "content": 14, "onli": [14, 16], "hashtag": [14, 15, 16], "relev": [14, 16], "mix": [14, 16], "well": [14, 16], "known": [14, 16], "nich": [14, 16], "lorem": [14, 16], "ipsum": [14, 16], "dolor": [14, 16], "sit": [14, 16], "amet": [14, 16], "consectetur": [14, 16], "adipisc": [14, 16], "elit": [14, 16], "sed": [14, 16], "eiusmod": [14, 16], "incididunt": [14, 16], "ut": [14, 16], "labor": [14, 16], "et": [14, 16], "magna": [14, 16], "aliqua": [14, 16], "hashtag1": [14, 16], "hashtag2": [14, 16], "hashtag3": [14, 16], "davinci": 15, "resolv": 15, "edit": 15, "composit": 15, "ffmpeg": 15, "media": 15, "convers": 15, "ob": 15, "studio": 15, "desktop": 15, "record": [15, 16], "download": 15, "playlist": 15, "tag": 15, "categori": 15, "devlog": [15, 16], "gamedev": 15, "battlefield": 15, "projectr": 15, "pr": 15, "prbf2": 15, "realitymod": 15, "game": 15, "reshad": 15, "vfx": 15, "scienc": 15, "technologi": 15, "f": 15, "bv": 15, "ba": 15, "path": 15, "audio": [15, 16], "txt": 15, "file": 15, "list": 15, "contact": 16, "timecod": 16, "respect": 16, "across": 16, "similar": 16, "especi": 16, "thei": 16, "share": 16, "unnecessari": 16, "keyword": 16, "high": 16, "definit": 16, "thumbnail": 16, "associ": 16, "should": 16, "lower": 16, "case": 16, "left": 16, "most": 16, "specif": 16, "reus": 16, "appropri": 16, "schedul": 16, "00am": 16, "befor": 16, "fridai": 16, "saturdai": 16, "event": 16, "holidai": 16, "name": 16, "subject": 16, "00": 16, "product": 16, "placement": 16, "song": 16, "origin": 16, "rhoncu": 16, "urna": 16, "nequ": 16, "viverra": 16, "justo": 16, "nec": 16, "ultric": 16, "dui": 16, "sapien": 16, "disclaim": 16, "enim": 16, "eu": 16, "turpi": 16, "egesta": 16, "pretium": 16, "aenean": 16, "pharetra": 16, "standalon": 16, "trailer": 16, "youtu": 16, "vkyx41j6zba": 16, "ye": 16, "altern": 16, "blog": 16}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"tempor": 0, "auto": 0, "exposur": 0, "hardwar": 0, "blend": 0, "censu": 1, "transform": 1, "hlsl": [1, 2, 4, 5, 7, 11, 12], "chromat": [2, 12], "what": 2, "i": 2, "how": 2, "do": 2, "comput": 2, "100": 2, "blue": 2, "repres": 2, "giraffeacademi": 3, "": [3, 4, 8], "c": 3, "exampl": 3, "abstract": 3, "class": 3, "arrai": 3, "2d": [3, 6], "cast": 3, "constant": 3, "constructor": 3, "rastergrid": 4, "gaussian": 4, "blur": 4, "logarithm": [5, 8], "depth": [5, 8], "buffer": [5, 8], "turn": 6, "nest": 6, "loop": 6, "1d": 6, "luca": 7, "kanad": 7, "optic": 7, "flow": 7, "algorithm": 7, "correct": 8, "outerra": 8, "A": 9, "python": 9, "3d": 9, "engin": 9, "1": 9, "weekend": 9, "video": [9, 15, 16], "main": 9, "tutori": 9, "2": 9, "skybox": 9, "environ": 9, "map": 9, "3": [9, 10], "shadow": 9, "pcf": 9, "feedback": 9, "recommend": 9, "project": [10, 15], "realiti": 10, "shader": 10, "model": 10, "0": 10, "consider": 10, "output": 10, "regist": 10, "count": 10, "input": 10, "format": 10, "fog": 10, "bilinear": 11, "sobel": 11, "filter": 11, "spheric": 12, "precis": 12, "loss": 12, "rg": 12, "papaganda": 13, "graphic": 13, "program": 13, "blog": 13, "content": [13, 15], "creation": [13, 15], "guid": 13, "instagram": 14, "account": [14, 16], "requir": [14, 16], "post": 14, "templat": [14, 16], "upload": [14, 16], "imag": 14, "person": 15, "tool": 15, "inform": 15, "bank": 15, "youtub": [15, 16], "seri": 15, "us": 15, "command": 15, "yt": 15, "dlp": 15, "titl": 16, "descript": 16, "playlist": 16, "tag": 16, "categori": 16}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Temporal Auto-Exposure with Hardware Blending": [[0, "temporal-auto-exposure-with-hardware-blending"]], "Census Transform in HLSL": [[1, "census-transform-in-hlsl"]], "Chromaticity in HLSL": [[2, "chromaticity-in-hlsl"]], "\u201cWhat is Chromaticity?\u201d": [[2, "what-is-chromaticity"]], "\u201cHow Do I Compute 100% Blue?\u201d": [[2, "how-do-i-compute-100-blue"]], "What Chromaticities Represent": [[2, "what-chromaticities-represent"]], "GiraffeAcademy\u2019s C++ Examples": [[3, "giraffeacademy-s-c-examples"]], "Abstract Classes": [[3, "abstract-classes"]], "Arrays": [[3, "arrays"]], "Arrays (2D)": [[3, "arrays-2d"]], "Casting": [[3, "casting"]], "Classes": [[3, "classes"]], "Constants": [[3, "constants"]], "Constructors": [[3, "constructors"]], "RasterGrid\u2019s Gaussian Blur in HLSL": [[4, "rastergrid-s-gaussian-blur-in-hlsl"]], "Logarithmic Depth Buffering in HLSL": [[5, "logarithmic-depth-buffering-in-hlsl"]], "Turning a Nested 2D Loop into 1D": [[6, "turning-a-nested-2d-loop-into-1d"]], "Lucas-Kanade Optical Flow in HLSL": [[7, "lucas-kanade-optical-flow-in-hlsl"]], "Algorithm": [[7, "algorithm"]], "Correcting Outerra\u2019s Logarithmic Depth Buffering": [[8, "correcting-outerra-s-logarithmic-depth-buffering"]], "A Pythonic 3D Engine in 1 Weekend": [[9, "a-pythonic-3d-engine-in-1-weekend"]], "Video 1: Main Tutorial": [[9, "video-1-main-tutorial"]], "Video 2: SkyBox, Environment Mapping": [[9, "video-2-skybox-environment-mapping"]], "Video 3: Shadow Mapping, PCF": [[9, "video-3-shadow-mapping-pcf"]], "Feedback": [[9, "feedback"]], "Recommendation": [[9, "recommendation"]], "Project Reality: Shader Model 3.0 Considerations": [[10, "project-reality-shader-model-3-0-considerations"]], "Output Register Count": [[10, "output-register-count"]], "Input Register Format": [[10, "input-register-format"]], "Fogging": [[10, "fogging"]], "Bilinear Sobel Filtering in HLSL": [[11, "bilinear-sobel-filtering-in-hlsl"]], "Spherical Chromaticity in HLSL": [[12, "spherical-chromaticity-in-hlsl"]], "Precision Loss in RG Chromaticity": [[12, "precision-loss-in-rg-chromaticity"]], "Papaganda": [[13, "papaganda"]], "Graphics Programming Blog": [[13, null]], "Content Creation Guide": [[13, null]], "Instagram": [[14, "instagram"]], "Account": [[14, "account"], [16, "account"]], "Requirements": [[14, "requirements"], [14, "id1"], [16, "requirements"], [16, "id1"]], "Posts": [[14, "posts"]], "Templates": [[14, "templates"], [16, "templates"]], "Uploading Images": [[14, "uploading-images"]], "Personal Content Creation Project": [[15, "personal-content-creation-project"]], "Tools": [[15, "tools"]], "Information Bank": [[15, "information-bank"]], "Youtube Video Series": [[15, "youtube-video-series"]], "Useful Commands": [[15, "useful-commands"]], "yt-dlp": [[15, "id1"]], "YouTube": [[16, "youtube"]], "Videos": [[16, "videos"]], "Uploading Videos": [[16, "uploading-videos"]], "Title": [[16, "title"]], "Description": [[16, "description"]], "Playlist": [[16, "playlist"]], "Tags": [[16, "tags"]], "Category": [[16, "category"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["blog/autoexposure", "blog/censustransform", "blog/chromaticity", "blog/cpp", "blog/gaussianblur", "blog/logdepth", "blog/loops", "blog/opticalflow", "blog/outerralogdepth", "blog/pythonengine", "blog/shadermodels", "blog/sobel", "blog/spherical", "index", "social/instagram", "social/project", "social/youtube"], "filenames": ["blog/autoexposure.rst", "blog/censustransform.rst", "blog/chromaticity.rst", "blog/cpp.rst", "blog/gaussianblur.rst", "blog/logdepth.rst", "blog/loops.rst", "blog/opticalflow.rst", "blog/outerralogdepth.rst", "blog/pythonengine.rst", "blog/shadermodels.rst", "blog/sobel.rst", "blog/spherical.rst", "index.rst", "social/instagram.rst", "social/project.rst", "social/youtube.rst"], "titles": ["Temporal Auto-Exposure with Hardware Blending", "Census Transform in HLSL", "Chromaticity in HLSL", "GiraffeAcademy\u2019s C++ Examples", "RasterGrid\u2019s Gaussian Blur in HLSL", "Logarithmic Depth Buffering in HLSL", "Turning a Nested 2D Loop into 1D", "Lucas-Kanade Optical Flow in HLSL", "Correcting Outerra\u2019s Logarithmic Depth Buffering", "A Pythonic 3D Engine in 1 Weekend", "Project Reality: Shader Model 3.0 Considerations", "Bilinear Sobel Filtering in HLSL", "Spherical Chromaticity in HLSL", "Papaganda", "Instagram", "Personal Content Creation Project", "YouTube"], "terms": {"some": [0, 7], "graphic": [0, 9, 10], "pipelin": [0, 9], "comput": [0, 7, 8, 12, 13], "like": [0, 3, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], "textur": [0, 10, 11], "previou": 0, "averag": [0, 1], "bright": 0, "current": [0, 7], "pass": [0, 3], "store": [0, 3, 7, 9], "previous": 0, "gener": [0, 1, 7, 9], "smooth": [0, 9], "you": [0, 2, 3, 5, 6, 7, 9, 10, 11], "can": [0, 2, 3, 5, 6, 9, 11, 12], "us": [0, 3, 7, 9, 13, 16], "accumul": 0, "sourc": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 16], "code": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12], "automat": [0, 8], "shader": [0, 4, 5, 8, 13, 15], "vertex": [0, 8, 9, 10], "struct": [0, 5, 7, 11], "app2v": [0, 5], "float4": [0, 1, 4, 5, 7, 11], "hpo": [0, 5, 8], "posit": [0, 3, 5, 8, 10], "float2": [0, 1, 4, 6, 7, 11, 12], "tex0": 0, "texcoord0": [0, 5], "vs2p": [0, 5], "vs_quad": 0, "input": [0, 5, 13], "output": [0, 2, 4, 5, 8, 11, 13], "return": [0, 1, 2, 3, 4, 5, 7, 11, 12], "pixel": [0, 1, 4, 5, 10, 11], "autoexposur": 0, "http": [0, 5, 16], "knarkowicz": 0, "wordpress": 0, "com": [0, 5], "2016": 0, "01": 0, "09": 0, "float3": [0, 1, 2, 7, 12], "getautoexposur": 0, "color": [0, 1, 2, 5, 7, 10, 12], "tex": [0, 1, 4, 7, 11], "float": [0, 1, 2, 3, 4, 5, 7, 8, 12], "lumaaverag": 0, "exp": [0, 4], "tex2dlod": [0, 4, 7], "samplelumatex": 0, "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "99": [0, 3], "r": [0, 1, 2], "ev100": 0, "log2": [0, 5, 7, 8], "100": [0, 3, 13], "12": [0, 10, 16], "5": [0, 1, 3, 6, 7, 11, 14, 16], "_manualbia": 0, "option": 0, "manual": 0, "bia": 0, "1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 16], "2": [0, 1, 2, 3, 4, 6, 7, 10, 12, 13, 15, 16], "exp2": [0, 1], "ps_generateaverageluma": 0, "tex2d": [0, 1, 11], "samplecolortex": [0, 4], "luma": 0, "max": [0, 1, 7, 8], "g": [0, 1, 2], "b": [0, 1, 2, 3, 7, 11], "outputcolor0": 0, "rgb": [0, 1, 2], "highest": 0, "out": [0, 3, 4], "red": [0, 2], "green": [0, 2], "blue": [0, 13], "compon": 0, "weight": [0, 4], "delai": 0, "1e": [0, 8], "3": [0, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 16], "_frametim": 0, "log": [0, 8], "satur": [0, 2, 7, 8, 10, 12], "_smoothingspe": 0, "ps_exposur": 0, "techniqu": 0, "pass0": 0, "render": [0, 9], "itself": 0, "note": [0, 3, 16], "do": [0, 3, 5, 13, 14, 16], "have": [0, 2, 9, 10], "anoth": 0, "overwrit": 0, "generateaverageluma": 0, "blenden": 0, "true": [0, 3], "blendop": 0, "add": [0, 2, 9], "srcblend": 0, "srcalpha": 0, "destblend": 0, "invsrcalpha": 0, "vertexshad": 0, "pixelshad": 0, "pass1": 0, "get": [0, 2, 4, 6, 7, 9, 13], "from": [0, 1, 3, 6, 7, 9, 10, 15, 16], "shade": 0, "here": [0, 5], "applyautoexposur": 0, "The": [1, 3, 5, 7, 9, 10, 11], "i": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "filter": [1, 7, 13, 14], "repres": [1, 13], "": [1, 2, 5, 7, 9, 13, 16], "neighborhood": 1, "relationship": 1, "binari": 1, "string": [1, 13], "0000000": 1, "center": [1, 4, 11], "lesser": 1, "than": [1, 3, 6, 9], "all": [1, 2, 3, 12, 16], "its": [1, 3], "neighbor": 1, "11111111": 1, "greater": 1, "equal": 1, "doe": 1, "depend": 1, "imag": [1, 2, 7], "actual": 1, "intens": [1, 4], "As": [1, 9], "result": 1, "robust": 1, "illumin": 1, "getgreyscal": 1, "getcensustransform": 1, "sampler": [1, 11], "sampleimag": [1, 11], "pixels": [1, 4, 7, 11], "outputcolor": [1, 4], "columntex": 1, "xyyi": [1, 7], "const": [1, 3, 4, 5, 6, 7, 8, 12], "int": [1, 3, 6, 7], "8": [1, 3, 6, 10, 11], "sampleneighbor": 1, "xy": [1, 6, 7, 12], "xz": [1, 7, 12], "4": [1, 3, 6, 7, 11], "xw": 1, "6": [1, 3, 6, 8], "7": [1, 5, 6], "centersampl": 1, "bit": [1, 3, 10], "integ": [1, 3, 12], "comparison": [1, 3], "step": [1, 2, 7], "ldexp": 1, "convert": [1, 5], "each": [1, 7, 10], "channel": [1, 2, 12, 16], "often": 2, "ani": [2, 10], "rang": [2, 10, 12], "For": [2, 10, 13], "post": [2, 4, 5, 6, 7, 10, 12, 13], "minimum": 2, "maximum": 2, "colora": 2, "an": [2, 3, 5, 6, 7], "percentag": 2, "proport": 2, "overal": 2, "tabl": 2, "highlight": 2, "equat": 2, "formula": 2, "sum": [2, 3], "certain": [2, 10], "mean": 2, "In": [2, 6, 10, 12], "therefor": 2, "rg": [2, 7, 13], "getrgbchromat": 2, "sumrgb": 2, "dot": [2, 7, 12], "c": [2, 11, 13], "xyz": [2, 5, 7, 12], "optim": [2, 4, 5], "instruct": 2, "dp3": 2, "undefin": 2, "behavior": 2, "happen": [2, 5], "when": [2, 10], "divid": [2, 8], "white": [2, 7, 12], "point": [2, 3, 10], "divisor": 2, "includ": [3, 4, 16], "iostream": 3, "namespac": 3, "std": 3, "vehicl": 3, "public": 3, "virtual": 3, "void": 3, "move": 3, "getdescript": 3, "cout": 3, "ar": [3, 9, 10, 16], "transport": 3, "endl": 3, "bicycl": 3, "pedal": 3, "forward": 3, "plane": [3, 9], "fly": 3, "through": 3, "sky": 3, "main": [3, 6, 7, 13], "myplan": 3, "defin": 3, "luckynumb": 3, "15": 3, "16": 3, "23": 3, "42": 3, "index": 3, "1st": 3, "member": 3, "90": 3, "2nd": 3, "numbergrid": 3, "row": 3, "column": 3, "14": 3, "doubl": 3, "creat": [3, 9], "book": 3, "datatyp": 3, "titl": 3, "author": [3, 16], "readbook": 3, "read": 3, "construct": 3, "book1": 3, "object": [3, 7, 9], "instanc": [3, 9], "harri": 3, "potter": 3, "jk": 3, "rowl": 3, "info": 3, "book2": 3, "lord": 3, "ring": 3, "jrr": 3, "tolkien": 3, "birth_year": 3, "1945": 3, "1988": 3, "t": [3, 7], "chang": [3, 7], "constuctor": 3, "def": 3, "__init__": 3, "python": [3, 13], "d": [3, 7, 11], "divis": 3, "throw": 3, "zero": 3, "error": 3, "try": 3, "10": 3, "catch": 3, "char": 3, "msg": 3, "cerr": 3, "specifi": 3, "method": [3, 10, 16], "signatur": 3, "addnumb": 3, "num1": 3, "num2": 3, "we": [3, 6, 8, 9, 12], "declar": 3, "first": [3, 4, 9], "60": 3, "privat": 3, "settitl": 3, "setauthor": 3, "gettitl": 3, "getauthor": 3, "boolean": 3, "bool": 3, "isstud": 3, "fals": 3, "issmart": 3, "student": 3, "els": 3, "smart": 3, "wa": [3, 9], "charact": 3, "mystr": 3, "cat": 3, "compar": 3, "chef": 3, "name": [3, 16], "ag": 3, "makechicken": 3, "make": [3, 9], "chicken": 3, "makesalad": 3, "salad": 3, "makespecialdish": 3, "special": 3, "dish": 3, "italianchef": 3, "extenion": 3, "countryoforigin": 3, "extend": 3, "makepasta": 3, "pasta": 3, "overrid": 3, "parmesan": 3, "mychef": 3, "gordon": 3, "ramsai": 3, "50": 3, "myitalianchef": 3, "massimo": 3, "bottura": 3, "55": 3, "itali": 3, "basic": [3, 9], "arithmet": 3, "modulu": 3, "oper": 3, "remaind": 3, "order": 3, "rule": 3, "f": [3, 15], "num": 3, "increment": 3, "what": [3, 13, 14, 16], "expos": 3, "memori": [3, 9], "address": 3, "manipul": 3, "why": 3, "per": [3, 5], "syetem": 3, "directli": 3, "data": [3, 6, 7, 9, 10, 12], "without": 3, "copi": 3, "pnum": 3, "adddress": 3, "derefer": 3, "fetch": [3, 7, 11], "valu": [3, 12], "hello": 3, "world": 3, "greet": 3, "01234": 3, "length": 3, "find": 3, "llo": 3, "start": [3, 6, 9], "substr": 3, "mygrad": 3, "A": [3, 7, 11, 13], "case": [3, 16], "break": 3, "fail": 3, "default": 3, "invalid": 3, "grade": 3, "enter": 3, "your": [3, 7, 10], "cin": 3, "second": [3, 9], "answer": 3, "trait": 3, "sensit": 3, "mai": [3, 7], "begin": 3, "letter": 3, "_": 3, "convent": 3, "word": 3, "lower": [3, 16], "rest": 3, "upper": 3, "camelcas": 3, "myvari": 3, "mike": 3, "primit": 3, "testgrad": 3, "singl": 3, "them": 3, "unsign": [3, 10], "ad": 3, "prefix": 3, "short": 3, "age0": 3, "atleast": 3, "sign": 3, "age1": 3, "20": 3, "smaller": 3, "long": 3, "age2": 3, "30": 3, "32": 3, "age3": 3, "40": 3, "64": 3, "gpa0": 3, "5f": 3, "percis": 3, "gpa1": 3, "5l": 3, "precis": [3, 10, 13], "gpa2": 3, "istal": 3, "friend": 3, "append": 3, "push_back": 3, "oscar": 3, "angela": 3, "kevin": 3, "jim": 3, "vendor": 3, "insert": 3, "size": [3, 10], "notifi": 3, "execut": 3, "sampl": [4, 6, 11], "mani": 4, "between": [4, 7, 11, 12], "articl": 4, "did": 4, "vari": 4, "radii": 4, "solv": [4, 7], "getgaussianweight": 4, "sampleindex": 4, "sigma": 4, "pi": 4, "1415926535897932384626433832795f": 4, "rsqrt": [4, 7, 12], "getgaussianoffset": 4, "linearweight": 4, "offset1": 4, "offset2": 4, "weight1": 4, "weight2": 4, "getgaussianblur": 4, "lod": [4, 7], "even": 4, "number": [4, 10, 13], "side": 4, "totalweight": 4, "linearoffset": 4, "normal": [4, 7, 9], "prevent": 4, "alter": 4, "project": [5, 13, 16], "realiti": [5, 13, 15, 16], "team": [5, 10], "implement": [5, 7, 8, 9, 10], "updat": [5, 10], "cover": [5, 7, 9], "our": [5, 8], "simpl": 5, "outerra": [5, 13], "ha": [5, 8], "2013": 5, "glsl": [5, 8], "simplifi": 5, "version": [5, 8], "uniform": [5, 9], "float4x4": 5, "_worldviewproj": 5, "worldviewproj": 5, "po": 5, "position0": 5, "ps2fb": 5, "linear": [5, 11], "blogspot": 5, "07": 5, "html": 5, "applylogarithmicdepth": 5, "farplan": [5, 8], "10000": [5, 8], "fcoef": [5, 8], "vs_logdepth": 5, "usual": 5, "transform": [5, 9, 13], "mul": [5, 7], "w": [5, 7, 8], "ps_logdepth": 5, "need": [5, 7, 16], "someth": 5, "must": [5, 8, 10, 14, 16], "semant": 5, "so": [5, 6, 7, 11], "gpu": [5, 6, 8, 9], "fragment": 5, "test": 5, "program": [6, 9], "might": 6, "window": 6, "howev": [6, 8, 9, 10], "more": [6, 10], "ineffici": 6, "exampl": [6, 10, 13], "how": [6, 9, 13], "3x3": 6, "offset": 6, "requir": [6, 7, 11], "calcul": [6, 7, 12], "windows": 6, "windowhalf": 6, "trunc": 6, "neg": 6, "process": [6, 7], "x": [6, 7, 12], "y": [6, 7, 12], "estim": 7, "motion": 7, "frame": 7, "essenti": 7, "detect": 7, "recognit": 7, "video": [7, 13], "compress": 7, "effect": 7, "pyramid": 7, "lk": 7, "consist": 7, "follow": [7, 9, 16], "build": 7, "mipmap": [7, 9], "encod": [7, 12], "chromat": [7, 13], "getsphericalrg": [7, 12], "gaussian": [7, 13], "blur": [7, 13], "set": [7, 13, 14, 16], "initi": 7, "vector": [7, 13], "smallest": 7, "largest": 7, "level": [7, 10], "propag": 7, "next": 7, "contain": 7, "function": [7, 10, 13], "part": [7, 8], "compat": 7, "setup": 7, "ihalfpi": [7, 12], "aco": [7, 12], "dotc": [7, 12], "p": [7, 12], "ab": [7, 12], "getlod": 7, "ix": [7, 11], "ddx": 7, "ii": [7, 11], "ddy": 7, "lx": 7, "ly": 7, "width": 7, "height": 7, "decodevector": 7, "images": 7, "encodevector": 7, "clamp": 7, "bilinear": [7, 13], "a11": 7, "a12": 7, "b1": 7, "a21": 7, "a22": 7, "b2": 7, "ixii": 7, "ixit": 7, "iyit": 7, "texel": 7, "mask": 7, "getpixelpylk": 7, "maintex": 7, "sampler2d": 7, "samplei0": 7, "samplei1": 7, "variabl": [7, 13], "ixix": 7, "iyii": 7, "pi2": 7, "tex2dsiz": 7, "texels": 7, "texellod": 7, "zw": 7, "un": 7, "xyxi": 7, "loop": [7, 13], "j": 7, "shift": 7, "sinco": 7, "spatial": 7, "gradient": 7, "n": 7, "ew": 7, "xxxy": 7, "zwww": 7, "e": 7, "tempor": [7, 13, 14, 16], "i0": 7, "i1": 7, "zzzw": 7, "IT": 7, "matrix": 7, "determin": 7, "float2x2": 7, "miss": 8, "major": [8, 12], "hlsl": [8, 13, 15], "multipli": 8, "end": 8, "becaus": 8, "homogen": 8, "space": [8, 9, 12], "z": 8, "spent": 9, "coder": 9, "seri": 9, "fundament": 9, "opengl": 9, "cpu": 9, "learn": 9, "about": [9, 14, 16], "taught": 9, "me": 9, "geometri": 9, "camera": 9, "scene": 9, "phong": 9, "light": 9, "refactor": 9, "re": [9, 16], "buffer": [9, 12, 13], "adopt": 9, "best": [9, 15], "practic": 9, "gamma": 9, "correct": [9, 13], "load": 9, "extern": 9, "model": [9, 13], "vbo": 9, "unformat": 9, "alloc": 9, "relat": [9, 16], "purpos": [9, 15], "other": [9, 14, 16], "being": 9, "polymorph": 9, "cube": 9, "face": 9, "replac": 9, "base": 9, "difficult": 9, "sai": 9, "least": [9, 14, 16], "just": 9, "system": 9, "someon": 9, "who": 9, "want": 9, "found": 9, "enjoy": 9, "believ": 9, "reach": 9, "mass": 9, "also": 9, "defer": 9, "tangent": 9, "peopl": [9, 16], "alreadi": [9, 16], "experi": 9, "straight": 9, "craft": 9, "thank": 9, "support": 10, "gave": 10, "potenti": 10, "port": 10, "type": 10, "opo": 10, "ofog": 10, "opt": 10, "od": 10, "coordin": 10, "ot": 10, "avail": 10, "differ": [10, 14, 16], "appli": 10, "longer": 10, "fix": 10, "around": 11, "getsobel": 11, "introduc": 12, "angl": 12, "pecis": 12, "drawback": 12, "possibl": [12, 14, 16], "map": [12, 13], "right": [12, 16], "triangl": 12, "elimin": 12, "half": 12, "fit": 12, "entir": 12, "rg8": 12, "giraffeacademi": 13, "abstract": 13, "class": 13, "arrai": 13, "2d": 13, "cast": 13, "constant": 13, "constructor": 13, "except": 13, "If": 13, "statement": 13, "inherit": 13, "pointer": 13, "print": 13, "switch": 13, "user": 13, "while": 13, "auto": 13, "exposur": 13, "hardwar": 13, "blend": 13, "censu": 13, "rastergrid": 13, "logarithm": 13, "depth": 13, "turn": 13, "nest": 13, "1d": 13, "luca": 13, "kanad": 13, "optic": 13, "flow": 13, "algorithm": 13, "3d": 13, "engin": 13, "weekend": [13, 16], "tutori": 13, "skybox": 13, "environ": 13, "shadow": 13, "pcf": 13, "feedback": 13, "recommend": 13, "consider": 13, "regist": 13, "count": 13, "format": 13, "fog": 13, "sobel": 13, "spheric": 13, "loss": 13, "instagram": 13, "account": 13, "templat": 13, "person": 13, "tool": 13, "inform": 13, "bank": 13, "command": 13, "youtub": 13, "descript": 14, "creator": 14, "link": [14, 15, 16], "No": [14, 16], "crop": 14, "At": [14, 16], "sentenc": [14, 16], "content": 14, "onli": [14, 16], "hashtag": [14, 15, 16], "relev": [14, 16], "mix": [14, 16], "well": [14, 16], "known": [14, 16], "nich": [14, 16], "lorem": [14, 16], "ipsum": [14, 16], "dolor": [14, 16], "sit": [14, 16], "amet": [14, 16], "consectetur": [14, 16], "adipisc": [14, 16], "elit": [14, 16], "sed": [14, 16], "eiusmod": [14, 16], "incididunt": [14, 16], "ut": [14, 16], "labor": [14, 16], "et": [14, 16], "magna": [14, 16], "aliqua": [14, 16], "hashtag1": [14, 16], "hashtag2": [14, 16], "hashtag3": [14, 16], "davinci": 15, "resolv": 15, "edit": 15, "composit": 15, "ffmpeg": 15, "media": 15, "convers": 15, "ob": 15, "studio": 15, "desktop": 15, "record": [15, 16], "download": 15, "playlist": 15, "tag": 15, "categori": 15, "devlog": [15, 16], "gamedev": 15, "battlefield": 15, "projectr": 15, "pr": 15, "prbf2": 15, "realitymod": 15, "game": 15, "reshad": 15, "vfx": 15, "scienc": 15, "technologi": 15, "bv": 15, "ba": 15, "path": 15, "audio": [15, 16], "txt": 15, "file": 15, "list": 15, "contact": 16, "timecod": 16, "respect": 16, "across": 16, "similar": 16, "especi": 16, "thei": 16, "share": 16, "unnecessari": 16, "keyword": 16, "high": 16, "definit": 16, "thumbnail": 16, "associ": 16, "should": 16, "left": 16, "most": 16, "specif": 16, "reus": 16, "appropri": 16, "schedul": 16, "00am": 16, "befor": 16, "fridai": 16, "saturdai": 16, "event": 16, "holidai": 16, "subject": 16, "00": 16, "product": 16, "placement": 16, "song": 16, "origin": 16, "rhoncu": 16, "urna": 16, "nequ": 16, "viverra": 16, "justo": 16, "nec": 16, "ultric": 16, "dui": 16, "sapien": 16, "disclaim": 16, "enim": 16, "eu": 16, "turpi": 16, "egesta": 16, "pretium": 16, "aenean": 16, "pharetra": 16, "standalon": 16, "trailer": 16, "youtu": 16, "vkyx41j6zba": 16, "ye": 16, "altern": 16, "blog": 16}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"tempor": 0, "auto": 0, "exposur": 0, "hardwar": 0, "blend": 0, "censu": 1, "transform": 1, "hlsl": [1, 2, 4, 5, 7, 11, 12], "chromat": [2, 12], "what": 2, "i": 2, "how": 2, "do": 2, "comput": 2, "100": 2, "blue": 2, "repres": 2, "giraffeacademi": 3, "": [3, 4, 8], "c": 3, "exampl": 3, "abstract": 3, "class": 3, "arrai": 3, "2d": [3, 6], "cast": 3, "constant": 3, "constructor": 3, "except": 3, "For": 3, "loop": [3, 6], "function": 3, "get": 3, "set": 3, "If": 3, "statement": 3, "inherit": 3, "number": 3, "pointer": 3, "print": 3, "string": 3, "switch": 3, "user": 3, "variabl": 3, "vector": 3, "while": 3, "rastergrid": 4, "gaussian": 4, "blur": 4, "logarithm": [5, 8], "depth": [5, 8], "buffer": [5, 8], "turn": 6, "nest": 6, "1d": 6, "luca": 7, "kanad": 7, "optic": 7, "flow": 7, "algorithm": 7, "correct": 8, "outerra": 8, "A": 9, "python": 9, "3d": 9, "engin": 9, "1": 9, "weekend": 9, "video": [9, 15, 16], "main": 9, "tutori": 9, "2": 9, "skybox": 9, "environ": 9, "map": 9, "3": [9, 10], "shadow": 9, "pcf": 9, "feedback": 9, "recommend": 9, "project": [10, 15], "realiti": 10, "shader": 10, "model": 10, "0": 10, "consider": 10, "output": 10, "regist": 10, "count": 10, "input": 10, "format": 10, "fog": 10, "bilinear": 11, "sobel": 11, "filter": 11, "spheric": 12, "precis": 12, "loss": 12, "rg": 12, "papaganda": 13, "graphic": 13, "program": 13, "blog": 13, "content": [13, 15], "creation": [13, 15], "guid": 13, "instagram": 14, "account": [14, 16], "requir": [14, 16], "post": 14, "templat": [14, 16], "upload": [14, 16], "imag": 14, "person": 15, "tool": 15, "inform": 15, "bank": 15, "youtub": [15, 16], "seri": 15, "us": 15, "command": 15, "yt": 15, "dlp": 15, "titl": 16, "descript": 16, "playlist": 16, "tag": 16, "categori": 16}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Temporal Auto-Exposure with Hardware Blending": [[0, "temporal-auto-exposure-with-hardware-blending"]], "Census Transform in HLSL": [[1, "census-transform-in-hlsl"]], "Chromaticity in HLSL": [[2, "chromaticity-in-hlsl"]], "\u201cWhat is Chromaticity?\u201d": [[2, "what-is-chromaticity"]], "\u201cHow Do I Compute 100% Blue?\u201d": [[2, "how-do-i-compute-100-blue"]], "What Chromaticities Represent": [[2, "what-chromaticities-represent"]], "GiraffeAcademy\u2019s C++ Examples": [[3, "giraffeacademy-s-c-examples"]], "Abstract Classes": [[3, "abstract-classes"]], "Arrays": [[3, "arrays"]], "Arrays (2D)": [[3, "arrays-2d"]], "Casting": [[3, "casting"]], "Classes": [[3, "classes"]], "Constants": [[3, "constants"]], "Constructors": [[3, "constructors"]], "Exceptions": [[3, "exceptions"]], "For-Loop": [[3, "for-loop"]], "Functions": [[3, "functions"]], "Get-Set": [[3, "get-set"]], "If-Statements": [[3, "if-statements"]], "Inheritance": [[3, "inheritance"]], "Numbers": [[3, "numbers"]], "Pointers": [[3, "pointers"]], "Printing": [[3, "printing"]], "Strings": [[3, "strings"]], "Switch-Statements": [[3, "switch-statements"]], "User Variables": [[3, "user-variables"]], "Variables": [[3, "variables"]], "Vectors": [[3, "vectors"]], "While-Loop": [[3, "while-loop"]], "RasterGrid\u2019s Gaussian Blur in HLSL": [[4, "rastergrid-s-gaussian-blur-in-hlsl"]], "Logarithmic Depth Buffering in HLSL": [[5, "logarithmic-depth-buffering-in-hlsl"]], "Turning a Nested 2D Loop into 1D": [[6, "turning-a-nested-2d-loop-into-1d"]], "Lucas-Kanade Optical Flow in HLSL": [[7, "lucas-kanade-optical-flow-in-hlsl"]], "Algorithm": [[7, "algorithm"]], "Correcting Outerra\u2019s Logarithmic Depth Buffering": [[8, "correcting-outerra-s-logarithmic-depth-buffering"]], "A Pythonic 3D Engine in 1 Weekend": [[9, "a-pythonic-3d-engine-in-1-weekend"]], "Video 1: Main Tutorial": [[9, "video-1-main-tutorial"]], "Video 2: SkyBox, Environment Mapping": [[9, "video-2-skybox-environment-mapping"]], "Video 3: Shadow Mapping, PCF": [[9, "video-3-shadow-mapping-pcf"]], "Feedback": [[9, "feedback"]], "Recommendation": [[9, "recommendation"]], "Project Reality: Shader Model 3.0 Considerations": [[10, "project-reality-shader-model-3-0-considerations"]], "Output Register Count": [[10, "output-register-count"]], "Input Register Format": [[10, "input-register-format"]], "Fogging": [[10, "fogging"]], "Bilinear Sobel Filtering in HLSL": [[11, "bilinear-sobel-filtering-in-hlsl"]], "Spherical Chromaticity in HLSL": [[12, "spherical-chromaticity-in-hlsl"]], "Precision Loss in RG Chromaticity": [[12, "precision-loss-in-rg-chromaticity"]], "Papaganda": [[13, "papaganda"]], "Graphics Programming Blog": [[13, null]], "Content Creation Guide": [[13, null]], "Instagram": [[14, "instagram"]], "Account": [[14, "account"], [16, "account"]], "Requirements": [[14, "requirements"], [14, "id1"], [16, "requirements"], [16, "id1"]], "Posts": [[14, "posts"]], "Templates": [[14, "templates"], [16, "templates"]], "Uploading Images": [[14, "uploading-images"]], "Personal Content Creation Project": [[15, "personal-content-creation-project"]], "Tools": [[15, "tools"]], "Information Bank": [[15, "information-bank"]], "Youtube Video Series": [[15, "youtube-video-series"]], "Useful Commands": [[15, "useful-commands"]], "yt-dlp": [[15, "id1"]], "YouTube": [[16, "youtube"]], "Videos": [[16, "videos"]], "Uploading Videos": [[16, "uploading-videos"]], "Title": [[16, "title"]], "Description": [[16, "description"]], "Playlist": [[16, "playlist"]], "Tags": [[16, "tags"]], "Category": [[16, "category"]]}, "indexentries": {}}) \ No newline at end of file