Skip to main content

Posts

Showing posts from November, 2019

CST 325 - Module 5

This week, our class learned about texturing and shaders in OpenGL, along with how depth testing works and the visibility problem in computer graphics. From this week's material, I am now able to understand the principles behind projects such as replacing all textures in a video game with Nicolas Cage's face: Textures and filtering methods are more complicated than I thought, and I feel as if I need more time to understand them and implement them in future programs. Combining this with how textures interact with the model-view-projection matrices I learned last week, I felt as if this week's assignment was narrower in scope but more difficult than the introductory assignment in WebGL. However, I was able to get this week's assignment to produce the expected results by reading through the WebGL programming guide and plenty of resources on the internet (thanks Mozilla for your great documentation!).  My favorite part of this week was learning about all the differen

CST 325 - Module 4

This week, we learned about rasterization, OpenGL and WebGL basics, and how the graphics pipeline works. Learning about each step in the graphics pipeline took quite some time to understand, but I found the process of learning it rewarding. Rasterization forms the basis of how most real time computer graphics are generated, and it's something that I have heard much about throughout my years using a computer and interacting with graphics, but didn't understand until now. What was the most difficult for me at first was understanding how transformation matrices, which we covered last week, work together to "convert" 2D primitives into 3D objects in an arbitrary world, and how they are also responsible for determining what a user sees on a screen and how they can manipulate that view. Working with OpenGL/WebGL was much easier relative to the ray tracer from Module 2, even though the code I worked on this week wasn't as concise and elegant as the ray tracer's

CST 325 - Module 3

This week involved learning about matrix math, how matrices are used in graphics programming, and how matrices are especially important to graphics programming as they are used to represent transformations of 2D and 3D space - which is the very nature of computer graphics. Implementing matrix3.js and matrix4.js was more difficult to me relative to vector3 and vector4 due to my little experience working with matrices, but once I figured out the mathematical concepts both APIs came together smoothly. I still need to spend more time wrapping my head around the more abstract concepts of matrices and thinking of them as representations of space transformations other than rows and columns of numbers to be multiplied, but after watching 3blue1brown's videos and reading some resources online I feel as if I have a better understanding and appreciation of them than I did before. Out of curiosity, I looked up Unreal Engine's 4x4 matrix API documentation  and I was pleased (and surp

CST 325 - Module 2

This week involved programming a classic, (in)famous program in computer graphics: a ray tracer. Here's what I get from mine as a result: Just for fun, I colored the walls. Getting my ray tracer working wasn't as difficult or nearly impossible as I thought it would be initially, but working out how each individual piece of vector math and the logic behind it (what happens what you shoot a ray and it hits? What if it doesn't hit anything?) took a while to understand. However, I feel like I learned a lot about all the vector math that we have been learning so far in class, and new things about radiometry that I hadn't learned before. However, the assignment was still tough at first and I struggled a bit, but it's the hard lessons in school (and life) that you learn the most from. This assignment has gotten me interested more in ray tracing and how it works in games and computer graphics in general. One of my best friends, who works at NVIDIA, probably knows