10 ms·
How to Start Learning Computer Graphics Programming
- tw1010 8y agoDoes anyone know something similar but for data projects/science? Preferably something with practical data, not just the math.
- eshyong 8y agoI've heard good things about Andrew Ng's Coursera machine learning class, and it's free: https://www.coursera.org/learn/machine-learning https://www.coursera.org/learn/machine-learning There is a free intro to data science class on Udacity as well: https://www.udacity.com/course/intro-to-data-science--ud359 https://www.udacity.com/course/intro-to-data-science--ud359 Lastly, there's always Kaggle, which has plenty of resources to learn from, and competitions as well: https://www.kaggle.com/ https://www.kaggle.com/
- gamedna 8y agoI can vouch for Andrew Ng's class. Its really top notch.
- maccard 8y agoI'm in the same boat, I've been toying with kaggle recently. They have some guided tutorials done via notebooks with some data that seems to be heading towards playing with the data myself. I recommend it as it's interesting, has me playing with data, and is consumable le, but I don't have enough experience to give an informed opinion on it.
- jointpdf 8y agoISLR is a good one—it’s focused on practical theory, but there’s still some unavoidable math. Code exercises are simple (and ugly—stats professor code) but gives you the basics to build on. Book/code: http://www-bcf.usc.edu/~gareth/ISL/ http://www-bcf.usc.edu/~gareth/ISL/ Lectures: https://www.r-bloggers.com/in-depth-introduction-to-machine-learning-in-15-hours-of-expert-videos/amp/ https://www.r-bloggers.com/in-depth-introduction-to-machine-...
- jointpdf 8y agoAlso: this was recommended on HN recently and it’s the best intro to matrix algebra / basic math of ML that I’ve seen. Lots of very practical and relevant exercises that relate to real data science tasks like text and image analysis. Code examples are in Julia. http://vmls-book.stanford.edu/ http://vmls-book.stanford.edu/ And one more gold standard for more practical data science (with R) stuff. It introduces a more modern take on R (chaining functions together with the %>% pipe operator, which makes everything clean and terse). https://r4ds.had.co.nz/ https://r4ds.had.co.nz/
- skadamat 8y agoWe're aiming to do this at Dataquest (where I work). Essentially create a complete learning path from 0 to job ready. Data Scientist path - https://www.dataquest.io/path/data-scientist https://www.dataquest.io/path/data-scientist Some of the projects peppered throughout the track: https://www.dataquest.io/projects https://www.dataquest.io/projects EDIT: Forgot to mention, almost every lesson uses a real dataset!
- aappleby 8y agoStart with WebGL, Shadertoy.com, and jsfiddle.net. No other tooling needed until you've got the basics of vertex buffers and shaders down. (20 year graphics veteran here who's boostrapped some coworkers)
- aappleby 8y agoAnd for the love of deity, don't start with Vulkan/Metal/DX12.
- shmerl 8y agoThat really depends. If you know graphics concepts, but need to actually learn an API, there is nothing wrong with starting with Vulkan. It's a lot to figure out to make something practical with it, but it's expected. I'd say, a good way to do it, is first learn theory, and apply it using simple tools that let you just draw on screen (like SDL). Then learn a GPU targeted API.
- voltagex_ 8y agoWhat about 2D graphics? Sprites? Old school stuff? I keep meaning to fire up DOSBox-X and go through some old tutorials. I really just want to put pixels on the screen and work my way up from there - everything else just seems to get in the way.
- aappleby 8y agoJavascript + HTML5 Canvas is an easy start, and if you want to do even older-skool stuff you can treat the canvas as just a block of pixels and write your own 2D renderer on top of it.
- kowdermeister 8y agoGo with Processing, the API is very simple, and YouTube has plenty of videos demoing various projects: https://www.youtube.com/user/shiffman https://www.youtube.com/user/shiffman
- wtracy 8y agoI would love to see a similar "jumping off point" for audio programming. Anybody know of one?
- drivers99 8y agoThis is my own limited experience, so I hope an expert also answers. In the Handmade Hero video series/project, he codes a game engine from scratch. I didn't get very far into it, but I followed along coding it myself, using what I learned watching him. He writes it in a way that all the platform-specific code is in its own file, and he does it in DirectX, although other people have ported it to other platforms. Early in the series, he gets it to where you can create a sound buffer of samples and play it out to the speakers. So I played around with simply adding sine waves to generate things such as dial tones, busy signals, and DTMF dialing sounds. I would consider that "ground up" for the Windows platform. It should be pretty simple from there to load audio samples from files, adjust their volume, play them back faster/slower, and mix them together. And/or generate more complicated sythensized music. There is a book about building modular synthesizers, and I was thinking about using that but doing it in software.
- beetwenty 8y agoThe best motivator for me was to start building a Standard MIDI Format sequencer and test its output on MIDI files. The underlying MIDI standard is a well-understood protocol with many resources, while SMF adds some room for creative interpretation since it's meant to work across sample-based synths, FM, etc. I started with a simple square-wave beeper, added polyphony and volume envelopes, and built it up from there. By the end, the architecture I had initially built was melting down, but it was playing Soundfonts to some degree, and I could confidently claim to understand audio coding. There's a lot of room to do things incorrectly and not notice in audio, which makes it forgiving to learn: e.g. playing a sample at a different pitch can be done badly by adding or removing arbitrary samples, but resampling it with minimal distortion is actually a fairly intensive DSP problem. Or when computing a volume, the linear amplitude usually isn't the parameter you want to work with(see every UI where volume changes imperceptibly until you reach the bottom 10% of the slider), and while there are computations to convert between linear and dB values, you still have to qualify it with one of these various references and suffixes[0]. There's a lot of crossover between audio and electrical signal terminology that can make it hard to follow this material. So you can spend a lot of time doing simple things well! [0] https://en.wikipedia.org/wiki/Decibel#Voltage https://en.wikipedia.org/wiki/Decibel#Voltage
- tokyodude 8y agoStart with https://webglfundamentals.org https://webglfundamentals.org ?
- cimi_ 8y agoI enjoyed going through The Book of Shaders[1] by Patricio Gonzalez Vivo. It comes with an interactive programming environment that's great if you're just getting started. It's free but please consider donating if you find it useful. [1] https://thebookofshaders.com/ https://thebookofshaders.com/
- flafla2 8y agoFor anyone looking for a great starter codebase that you can poke around in to learn the fundamentals of CG, check out Scotty3D [0], the base code for CMU's computer graphics class 15-462/662 (I am a TA for this class). It is a supplemental codebase to the lecture slides [1], which are all available online. The idea is that Scotty3D is a full 3D modeling suite akin to Blender or Maya, but all of the actual functionality is stripped out, waiting to be implemented by students. It includes code for 3D model loading, linear algebra, basic (OpenGL) rendering, and UX, and provides stubs for you to implement: - local geometry operations (ex: edge split, vertex/edge/face bevel, vertex/edge/face delete, etc) - global geometry operations (ex: upsampling via catmull clark subdivision, downsampling using quadric error, etc) - a path tracer that supports Diffuse/Mirror/Glass materials with Fresnel reflections and environment lighting (ex: you can render the cornell box) - an animation suite that implements skinning, spline interpolation, and basic simulation (wave sims) There's a lot of documentation in the wiki [2] to help you get started. A great resource, even if you can't take the class yourself! [0] https://github.com/cmu462/Scotty3D https://github.com/cmu462/Scotty3D [1] http://15462.courses.cs.cmu.edu/fall2018/lectures http://15462.courses.cs.cmu.edu/fall2018/lectures [2] https://github.com/cmu462/Scotty3D/wiki https://github.com/cmu462/Scotty3D/wiki
- robko 8y agoAh, the good old OpenGL fixed function pipeline, deprecated for over 11 years now. For something a bit more modern, I'd recommend [0], but one might argue that old OpenGL is easier to learn since you don't have to setup your own shaders. [0] https://learnopengl.com/Introduction https://learnopengl.com/Introduction
- flafla2 8y agoTo clarify, the point of Scotty3D is not to teach OpenGL -- the students do not write any OpenGL, DirectX, Vulkan, etc in the class. The OpenGL that is there is simply used to render the 3D models and the UI, so updating that code is pretty low priority. One of my longer-term goals as a TA for the class is to update Scotty3D to Vulkan or modern OpenGL. EDIT: I wanted to expand on this point, as this is actually an important part of the philosophy of the design of the course. As the OP argues as well, it more important to learn the fundamentals of CG theory (eg rasterization, the rendering equation, solving ODEs/PDEs) than the specifics of any particular implementation (OGL, DX, etc). After taking 462, many students (including myself!) take the class 15-466 Computer Game Programing [0], which goes deep into more modern OpenGL implementations (admittedly, it's OGL 3.3, but it still covers shaders/VBOs/other important concepts that translate to modern APIs). [0] http://graphics.cs.cmu.edu/courses/15-466-f18/ http://graphics.cs.cmu.edu/courses/15-466-f18/
- mnutt 8y agoI'd definitely second the ray tracer recommendation, starting from a 2D canvas and building a ray tracer to render a shaded sphere was really an "ah-ha" moment, as the math is quite approachable and you can get a cool result with not much more than some trigonometry.
- billsix 8y agoHere is my work in progress for intro OpenGL programming http://billsix.github.io/modelviewprojection/ http://billsix.github.io/modelviewprojection/ It in python, doesn’t involve matrices. It really only requires high school math, with the exception of the z axis. Hope it’s helpful!
- PinkMilkshake 8y ago3Blue1Brown has a great series on Linear Algebra. His explanations are so clear that by the 2nd or 3rd video you'll already understand how it applies to computer graphics. https://youtu.be/fNk_zzaMoSs https://youtu.be/fNk_zzaMoSs
- kevinskii 8y agoI agree. I've had quite a bit of exposure to linear algebra through other textbooks and online courses, and the 3Blue1Brown series explains the intuition better than just about anyone. In particular, the video on determinants really crystallized the concept for me.
- antoineMoPa 8y agoI invite everyone to try all of these techniques and math tools in ShaderGif [42]. Hopefully you'll learn and make nice gifs in the process. Learning new math concepts is even better when you create art and share it after! [42] https://shadergif.com/ https://shadergif.com/
- mlboss 8y agoI will highly recommend ray tracing in weekend http://www.realtimerendering.com/raytracing/Ray%20Tracing%20in%20a%20Weekend.pdf http://www.realtimerendering.com/raytracing/Ray%20Tracing%20...
- camargo 8y ago+1 The author released all the "ray tracing in a weekend" pdfs last year through a "pay what you want" model: https://twitter.com/Peter_shirley/status/984947257035243520 https://twitter.com/Peter_shirley/status/984947257035243520
- godelski 8y agoThey're all in a google drive (hosted my Shirley). It was previously shared on HN. https://drive.google.com/drive/folders/14yayBb9XiL16lmuhbYhhvea8mKUUK77W https://drive.google.com/drive/folders/14yayBb9XiL16lmuhbYhh...
- nikki93 8y agohttps://open.gl https://open.gl is the best OpenGL tutorial IMO.
- Entalpi 8y agoI picked up graphics maybe three years ago and have been mostly learnt all the stuff I needed through different sites scattered all over the internet. For ray tracing Peter Shirleys books are very good. OpenGL stuff are usually found at docs.gl, https://learnopengl.com/About https://learnopengl.com/About. For Physically Based Rendering (PBR) material checkout the bool Real-time Rendering and all the cool stuff has been coming out of Siggraph these past years, https://blog.selfshadow.com/publications/s2013-shading-course/ https://blog.selfshadow.com/publications/s2013-shading-cours.... If you can, go take an elementary linear algebra course or prepare to spend time studying these. It is well worth it. One thing I have found when hacking on my own engine (see here: https://github.com/Entalpi/MeineKraft https://github.com/Entalpi/MeineKraft) is that graphics APIs (especially OpenGL) can have a lot of hidden meanings or even old names still being used, etc. Try to find out how the API evolved and get the reasoning behind the design decisions. This way it makes more sense and it gets a bit easier to learn. GLHF
- thinkingkong 8y agoI've always been a fan of the NeHe GL tutorials. I learned programming starting with these 'back in the day' and really enjoyed it. Its modernized now but still maintained. http://nehe.gamedev.net/ http://nehe.gamedev.net/
- buchanae 8y agoI've been learning (mostly 2D) graphics as my side project for a couple years now. I spend a ton of time on this project. I still feel like a beginner. It is one of the more complex topics I've ever delved into. I've crawled through more topics than I can list here. Many of them were not easy to learn, due to disorganized learning resources and materials. Documentation and information is scattered, frequently outdated, sometimes sparse, and just downright messy. OpenGL and its many quirks and legacy versions muddy the waters too. I've considered trying to pull this into one big guide, hopefully resulting in something like the Filament docs [1]. Side note: macOS (my dev env) is a terrible place to write OpenGL, I've learned. Debugging tools are practically non-existent. [1] https://google.github.io/filament/Filament.md.html https://google.github.io/filament/Filament.md.html
- Animats 8y agoThis is the old-line "bottom up" approach. It might be more appropriate today to work top down. Install Unreal Engine, build a simple demo, and look at the code it generated and you can modify.
- nosrednAhsoJ 8y agoZero graphics experience, so I may be asking an idiotic question, but why learn anything other than a framework like UE? I'm a web guy, so all I know is frameworks (Angular, React, etc.).
- rorykoehler 8y agoSomeone needed to build the framework. Depends what your goal is.
- ed312 8y agoYou'll ultimately become a better dev (e.g. higher quality code, faster, and more maintainable) as you learn more of the underlying stuff. For web dev definitely learn how to do everything in "vanilla" js, html, and css at least a few times.
- mickduprez 8y agoSome people think better at a lower level and some think better with abstractions. I for one feel more 'at home' at the lower level but can live with higher level abstractions if I know how it's done at a lower level :)
- mickduprez 8y agoThanks for the extra links, I'm building a base software rendering engine in Go just for this purpose. It still needs work to get to a good 'base' but it can be used as is to start learning CG from your notes and links. https://github.com/MickDuprez/go-window https://github.com/MickDuprez/go-window cheers.
- deleted 8y ago[deleted]
- divyahansg 8y agoScratchapixel[1] is also a helpful resource for explaining the basic concepts. [1] http://www.scratchapixel.com/ http://www.scratchapixel.com/
- rhwk97 8y agoIf anyone wants to play around with Computational Geometry and Python, I'd recommend as a great starting point: http://blancosilva.github.io/post/2014/10/28/Computational-Geometry-in-Python.html http://blancosilva.github.io/post/2014/10/28/Computational-G... Also, Apress has a cool book about Python and graphics with some pretty intense source code found here: https://github.com/Apress/python-graphics https://github.com/Apress/python-graphics
- rhwk97 8y agoquick note on the first link...I think graphs are done using tikz: http://blancosilva.github.io/post/2010/12/12/using-tikz-as-an-igse.html http://blancosilva.github.io/post/2010/12/12/using-tikz-as-a...
- packetslave 8y agoJamis Buck has a new-ish book out called "The Ray Tracer Challenge" that I've been slowly working through. So far I really like the way it's written: everything is test-based, so you get a problem like: "given matrix X and vector Y, X * Y should be vector Z" and then you implement both the test and the code in whatever language you like. https://pragprog.com/book/jbtracer/the-ray-tracer-challenge https://pragprog.com/book/jbtracer/the-ray-tracer-challenge
- akdas 8y agoI'll plug the materials for the one-weekend class I taught on computer graphics: https://avik-das.github.io/build-your-own-raytracer/ https://avik-das.github.io/build-your-own-raytracer/ I didn't assume a particular mathematical background for the students, so I introduced the relevant math in what I hope was a motivated way. Hopefully it can help others as well.
- aqibgatoo 8y agoWell, i was waiting for some starting graphics programming guide.
- lurquer 8y agoI've found SFML an easy way to get some stuff on the screen in 2D. As far as true 3D graphics, I made a Minecraft clone using OpenGL... it was a nice project as, surprisingly, you end up using all the basic techniques as you tweak it, particularly when you try to get lighting and shadows working.
- davidwparker 8y agoShameless self-promotion: On my YouTube channel, I have over 100 WebGL Tutorial videos, and over 50 3d math related videos. https://www.youtube.com/user/iamdavidwparker https://www.youtube.com/user/iamdavidwparker
- chadcmulligan 8y agoIf anyone would like to see ray tracer code, have a look at pov-ray http://povray.org http://povray.org Its a venerable old ray tracer but has some of the best features around and the code is very readable (once you've got the basics). It's a different way to do things than the vertex/shader style rendering pipeline.
- piterdevries 8y agoI don't think the hindrance when starting to learn graphics programming is the math or the lack of ideas of what to build. The biggest problem is that the most known APIs (DirectX, OpenGL and especially DirectX 12 and Vulkan) are so badly designed and so poorly documented that it deters anyone trying to start doing anything. All these API are like magic invocation you have to make the calls in just the right order or it doesn't work at all. There is no real specification of what goes underneath and it can't be because the actual implementation is written by different vendors (Nvidia or AMD) which only slightly abides to the specification.
- cambaceres 8y agoRaytracing and Rasterization sounds so cool :D
- erricravi 8y agoA smart idea, i like it
- hyperpallium 8y agoThe single most helpful thing I discovered for learning android opengl es graphics programming is that it does have error messages, after all! [abbrev code, use to lookup docs] int error; while((error=GLES20.glGetError())!=GLES20.GL_NO_ERROR) { msg += android.opengl.GLU.gluErrorString(error); } Also, the offical android opengl es 2.0 tutorial is wrong in subtle ways (after the non-subtle wrongnesses were corrected). TIL "advice" can be countable: https://blog.oxforddictionaries.com/2014/05/30/advise-advice/ https://blog.oxforddictionaries.com/2014/05/30/advise-advice... > Advice is mainly used with the first meaning, and in this meaning it is a mass noun (that is, it has no plural). The business/legal meaning, however, is a count noun: it has a plural form, advices.
- exDM69 8y agoWhen getting started with a new OpenGL project, the first thing you should do is to enable the debug output [0] w/ glDebugMessageCallback. You also need to enable the debug bit when creating a GL context. This will give you human readable error messages (as in complete sentences of what went wrong) as well as some other info to pinpoint what went wrong and where. Additionally, it's a good idea to use Renderdoc [1] or your $GPU_VENDOR's debugging and profiling tools. [0] https://www.khronos.org/opengl/wiki/Debug_Output https://www.khronos.org/opengl/wiki/Debug_Output [1] https://renderdoc.org/ https://renderdoc.org/
- hyperpallium 8y agoGood to know about! For openGL ES, it looks like it wasn't implemented until version 3.2, the most recent (I don't have a device with that version). https://developer.android.com/reference/android/opengl/GLES32.html#glDebugMessageCallback(android.opengl.GLES32.DebugProc) https://developer.android.com/reference/android/opengl/GLES3...
- ChuckMcM 8y agoI think this article, and the comments here, are a splendid example of how deep (and often confusing) 3D graphics can be. One of the things I appreciated about the Glide3D API for the old VooDoo cards back in the day was how basic it was relative to the work of getting the 3D stuff on the screen. There are several ways in which you can "learn" 3D graphics; You can get it by theory, you can get it by API, and you can get it by modelling. If you're someone who is a theory person you should start at the beginning and learn linear algebra and vector arithmetic. You can learn about projections, and camera "views" and project your 3D scene onto a 2D surface whether it is a computer screen or a plotter page. Once you get there you can then do hidden line, and then hidden surface removal. You can learn about the 'Z' plane and the clipping frustrum which lets you not worry about things that won't appear in your projection. With a relatively simple array of coordinates type data structure you can project triangles or NURBs onto your surface and draw pretty pictures. Then you can start learning about light and all the many ways it interacts with materials. At the end of this journey you can take a 3D model and render it in a photorealistic way, one frame at a time. The second way to learn 3D programming is the API path. Here you don't really learn too much of the math, although having that background will help you understand what the functions are doing. You learn an API like Unity or Vulkan. These APIs have taken a lot the basic 3D programming and done it for you, you need to learn how to write shaders which decorate your surfaces in ways that simulate light or water or fog Etc. Generally you construct a scene with calls to set up the frame, and then call 'render' with the appropriate screen resource referenced. Blam! instant 3D scene. The third way you might come at this is modelling things, building models in Maya or some other modelling tool that are built with skeletons, which is simply a data structure that identifies how different parts of the model can move in relation to other parts. You probably don't have to know anything about 3D math, but you have to have a good eye for construction of the models and the area in which those models are placed. There are so many ways to go at this particular quest, each have their own challenges and rewards.
- Vektorweg 8y agoThe best way to learn computer graphics programming is to first ask what you want to do with it. Most people interested in this topic have some end goal, be it just writing a game. In that case, writing raytracers and rasterizers may just be a waste of time, when the main interest isn't the interworkings of math, but to put something up the screen. For a reasonably wide range of modern tools, its absolutely not necessary to know any deep math to bring to screen what you want.
- mesaframe 8y agoThe article says "How to start" but it's more like "What to start with". Anyway, I'll really like to have a reference for good computer graphics lecture videos which I am failing to find
- yzh 8y agofwiw, pbrt can be read online for free since earlier last year: http://www.pbr-book.org/ http://www.pbr-book.org/
- resist_futility 8y agoI'm always on the lookout for tutorials that go deeper than just implementing single one off things. Been meaning to go through Handmade Hero. https://www.youtube.com/user/handmadeheroarchive/videos https://www.youtube.com/user/handmadeheroarchive/videos
- rjf72 8y agoIt depends on your motivation but if you really want to learn about graphics programming (as opposed to learning an API) then I think the best way to do so is to remove any API from the picture. There is an absolutely phenomenal book that does just this: Andre LaMothe's 'Tricks of the 3D Game Programming Gurus'. It was published in 2003 but when you remove APIs from the picture it's just as relevant today and will remain so for the foreseeable future. The book starts with little more than plotting a pixel on the screen. By the end you'll have a complete lit, shaded, 3D game engine that you've written entirely from scratch. And in the process you will learn absolutely everything that goes into it. And one thing I'd add is that this might sound somewhat overwhelming but it's really not. The book is extremely well written and clearly was a labor of love. If you get some pleasure out of math and code, you'll have no technical troubles working your way through the book and in the end will be rewarded with an intimate, flexible understanding of graphics development that won't be hamstrung by dependence on a specific API. [1] - https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Graphics-Rasterization/dp/0672318350 https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Gra...
- nyxxie 8y agoI think the author of this guide doesn't remember the mindset that a beginner is in when they first start learning graphics programming (or really any subject). Why is someone reading this tutorial in the first place? It's likely because they have some end goal in mind, and are looking to get from 0 to that goal as quickly as possible. For most readers, this is probably making a game. Following the advice of this guide will give the reader a deep understanding of how 3d graphics works, but it won't bring them much closer to making a game than they were when they started. Why am I bothering to point this out? Because countless guides like this exist that confuse neophytes into believing that the subject they wish to learn is difficult and requires learning countless prerequisites before they can get started tangibly moving towards their goal. It's demotivating. A lot of the knowledge in this guide is good to know but ultimately not immediately relevant to someone seeking to achieve some higher level graphics goal. It feels like the equivalent of trying to teach someone programming by starting them at assembly. I personally think that this guide should be directed towards someone who has had experience noodling around with OpenGL or a game engine and wants to reach the next level. In order for any of the lessons this guide wishes to teach to be impactful, the reader needs the necessary context to understand why learning them is relevant to 3d graphics and by extension the reader's end goal. Starting off by making a ray tracer is a cool idea for example, but does the author honestly believe that it's more useful than just learning OpenGL first? It might be more "confusing", but they're going to have to learn OpenGL (or some game engine) at some point whether they want to or not if their goal is to make a game.
- deleted 8y ago[deleted]
- wrs 8y agoIt depends on what you mean by “graphics programming”. If that means “implement a game on top of a tall stack of abstractions” then sure, this isn’t the answer you’re looking for, but I’d call that “game programming”. If “graphics programming” is implementing the rendering engine for the game (recall his final goal is “draw a triangle”), I believe his point is that it’s easier to learn the required APIs for that if you understand the concepts behind them first (rather than just leaping into meaningless copypasta), and the best way to learn those concepts is to work with them directly.
- zappo2938 8y agoI found myself having to remember how to do matrix calculations. Before I could count to 100 I was going back and back until I was reviewing basic math on the Khan Academy. Embarrassing but that is where to start.
- webmobdev 8y agoThis sounds good for those who want to learn graphics programming for gaming and / or for animation etc. But where should a beginner start from to learn GUI programming without using existing frameworks or widget toolkits?
- ramoz 8y agoIs it worth it to get into this area as an experienced dev?
- ChicagoBoy11 8y agoThe most incredible educational experience of my life was this course I did at Columbia University while in High School on game programming. At the end of the course we made our own game with OpenGL, but for the first week or so we'd have basically math classes in the morning on he physics of lighting, and then in the afternoon we'd implement the things we did in C. It was where I was introduced to lots of math concepts, including vector math that I would not see in school for another year or so. At any rate, at the end we built our own raytracer, and say a text file with vertices that was given to us produce an image on the screen from 100% code that we'd written ourselves. It was one of the most empowering, deep intellectual experiences I've ever had.
- usgroup 8y agoOut of interest, does learning linear algebra in this way give you a deeper sense of linear algebra? Do you think you think you are able to formulate other problems more effectively in terms of LA as a result?
- ChicagoBoy11 8y agoAbsolutely. Like, for the average school kid learning about vector multiplication or dot products of things of this kind are so abstract and seem kinda pointless. But the way he taught it, we had a problem in terms of making things look real. And the math was motivated as a strategy to solving those issues. Based on the real world problem, it was great to develop intuition for the results.
- crimsonalucard 8y agoI would say no. It's just affine transformations on a vector. Deeper knowledge requires actual study of LA.
- nlh 8y agoTo echo this sort of experience, I recently bought the pragprog book The Raytracer Challenge, and it was similarly satisfying. I wasn’t really out to follow OP’s advice to “get into” graphics, but I saw the book release and wanted to give it a shot. To be able to see a 3D-rendered sphere appear on screen using code that I wrote from the very bottom up is deeply, deeply satisfying (and a great way to level up with the programming language of your choice).
- kragen 8y agoMy very first raytracer was http://canonical.org/~kragen/sw/aspmisc/my-very-first-raytracer.html http://canonical.org/~kragen/sw/aspmisc/my-very-first-raytra... and was quite a bit easier than I expected. My second one was a bit under 1K in Clojure: http://canonical.org/~kragen/sw/dev3/raytracer1k.clj http://canonical.org/~kragen/sw/dev3/raytracer1k.clj or unobfuscated: http://canonical.org/~kragen/sw/dev3/circle.clj http://canonical.org/~kragen/sw/dev3/circle.clj I was pleasantly surprised by how easy it was to compute the pixels, but getting them on the screen was a huge hassle. So I wrote https://gitlab.com/kragen/bubbleos/tree/master/yeso https://gitlab.com/kragen/bubbleos/tree/master/yeso to make it trivial. I haven't ported a raytracer to it yet; I'll do that soon!
- gaurav2327 8y agoSites to download movies www.csgyaan.tk
- mickduprez 8y agoThere are so many comments here missing the point saying "why? just use "X" API" or "this is a waste of time when you will need 'X' API anyway" etc. but they miss the point. It's about 'how' graphics work, not building game engines. Computer graphics is more about producing an image on a computer screen and whether it's for image processing or a game engine renderer it's the same process and very useful to know whichever field you want to pursue.
- Lithy 8y agoFor anybody looking for a minimal cross-plateforme modern OpenGL hello world with a lot of comments: https://github.com/eliemichel/AugenLight https://github.com/eliemichel/AugenLight By modern I mean as in OpenGL 4.5 Core Profile, using future-oriented APIs (e.g. named buffers). Any feedback welcome!
- CoolDev 8y agoFound a really helpful code generator: codesimple.tools
- lynnanthony77 8y agoDo you need hacker for hire? Do you need to keep an eye on your spouse by gaining access to their emails? As a parent do you want to know what your kids do on a daily basis on social networks ( This includes facebook, twitter , instagram, whatsapp, WeChat and others to make sure they're not getting into trouble? Whatever it is, Ranging from Bank Jobs, Flipping cash, Criminal records, DMV, Taxes, Name it, he will get the job done. He's a professional hacker. Contact Email: hackwizardbryan at gmail. com Text no no: +1 (628) 222-2044 whtasapp no: +1 (628) 203-7322
- darelc 8y agoI'm currently enrolled in an online Computer Graphics course on edX that has been an excellent introduction to the subject: https://www.edx.org/course/computer-graphics https://www.edx.org/course/computer-graphics