Considering other folk's work, I am not sure if I can be called a graphics programmer or not. Anyway, here is my journey to the graphics programming.
Prologue:
I was doing my bachelor degree in civil engineering. I had a "c" language lab course already taken and was living among a geek circle, we used to talk about tech in our free time after study. I was doing some novice style web programming at that time, as a hobby, after I knew that I have to learn web programming to customize my hobbyist LAN web page in stead of relaying website builders. Interfacing VLC with web pages and streaming videos to my buddies over LAN, giving them rtsp links.... ah nostalgia! I was lurking emulator forums(pcsx2,jpcsp etc), console platform security portals(hack scenes) to know about the platforms and security. I made a SDL app for psp with hombrew sdk at that time, it was a simple image viewer! Anyway, about emulator, I was amazed to think what kind of blackbox they put in-between that, an image built for a certain platform can be run on another! Though I now have a rough glimpse of the process, at that time I had not. Basically I had a fetish on anything related to game(digital entertainment). This sheer interest on tech thing, affected my study and soon I had to stop this for a while during 3rd year.
How it started all:(roughly 2012)
Then it happened when I was doing the last semester, last year. I was a die-hard prince of persia series fan. Prince of persia 2008 had a DLC which was console exclusive, not available on PC. This enraged me much. I was thinking, "hey just like there are some website builders, is there any game builder too? That I can at least create a level of PoP for 10 minutes? Lets find'em and make'em and mail that level to ubisoft" <_< :blink: Study pressure was low and I had a lot of free time.
Game Engine hunting and Art:
I came up with torque3D's action adventure kit. I also looked up orge3d but then I realized that they need too much programming for me to continue on them, at that time. Then I got UDK and cryengine, they were better. I was lurking on their forums. Slowly I began to know what I need to know.
3D, 2D assets, music, animation, texturing etc. plus programming. They told me that I have to make assets in 3D software and get them into UDK. They warned me that it would take me years, I did not listen. So I picked maya getting inspired by god of war team that they also picked maya. Even though it was expensive and still it is, one elder bro in our university hall was working in 3D and had those packages. Polygonal, nurb modeling, then came uv mapping. I thought what it is? why do we uv map? how it put color to the model? I thought I would never understand this process. Then I beat it and now it is as easy as a pie. Then to put color, I knew that I have to do this on photoshop. So learning PS came along the way naturally. Then there comes the a thing called "normal mapping". I came to know that folks uses zbrush to give them high details and then converted it into map. There can be so many maps, I did not know at that time that a graphics programmer dictates what kind of maps will be needed, I just swallow that I would need maps. Maps like bumpmap, normal map, cavity map, convexity map, vector displacement maps etc. To do all these, I have to make a high detailed model. People do this on generally a sculpting software called zbrush. So journey towards zbrush started. My time was too less against the diversity of all these to cope with them all effectively. But I did as much I could. This art section alone would take pages, as it is related to graphics programming much less, lets put a stop sign on it now. I will also skip how I learned gameplay programming too. From now on, I will only focus on graphics programming specifically. This section is only given so that you would know the proper context and would know, what drove me in.
Graphics:(roughly in 2014)
I came to know the hypershade network of autodesk maya. Then I came to know a thing called "custom cg shader for maya". It was an eat3D tutorial of making custom shader for maya, before which I never knew anything about graphics programming. As I dived deeper into that tutorial, I knew that I would need an application side support for those shaders. Then as I already devs in a game engine called "unity3d", I tried to make those shader stated in nvidia's cg tutorial website, to work in unity3d. There were some tutorials but a book(https://en.wikibooks.org/wiki/Cg_Programming/Unity) helped me most in this process. This is the key start point of my graphics programming journey. Though none of them are raw c/c++ application, every graphics programming I did were implemented within unity game engine. I made my own deferred shading, many image effects, many custom shaders for the company where I currently work on. I also did some GPGPU works such as implementing A* pathfinding on GPU, gameplay codes on GPU. A water system for an unannounced game, much like ori and the blind forest's water. A wind system for 2D vegetation sprites, custom terrain splatting etc.
I will use existing game engines for professional works. I will be developing my own engine(and some other crazy things), but this will be purely academic, learning purposes. That is why I joined this forum. I hope I will learn exciting things from you guys.