Anyone here a self-taught graphics programmer?

Started by
127 comments, last by ritzmax72 6 years, 2 months ago

Im talking about people with no cs degree or formal education in it. How were you able to pick up the material and what challeneges did you face? Do you do it as a living or just a hobby?

Advertisement

I am.
I started when I was late 13 or early 14 and used DirectX samples and online tutorials, but while struggling at the time with also learning C++ it was too overwhelming and I put it down for a few years, coming back to it at around 16 or 17.

I just bought books, read online articles, and worked on it by myself until things clicked and fell into place.
Repeat for many years until today.

I do it as a living for tri-Ace, where I work on this engine, primarily on graphics and optimizations.


[UPDATE]
I now work at Square Enix on this engine:


[/UPDATE]


The main challenge I faced was at the start when I was overwhelmed by all the things I was trying to learn at once.
After that, things were taken one step at a time and slowly. It isn’t too hard when you take it at a better pace.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

I have pretty much the same story as L. Spiro. I'd started learning C++ as a teenager, and played around with OpenGL tutorials from time to time. The easiest way that I could make cool games was by modding existing ones, so I learned most of my 3D math by accident, as a result of playing around with other people's game code. When it came to high-school physics class, I realised I already knew about concepts like vectors and forces etc, except sometimes with the wrong terminology.

I then did "IT" at university, but kept playing around with D3D and GL in my spare time, and tried to use it in university programming assignments whenever I could. I did manage to take one elective class which actually taught us basic fixed-function D3D, but I aced that class because I'd already taught myself the subject matter! Unfortunately I wasn't able to take the theoretical computer graphics classes at all.

I just bought books, read online articles, and worked on it by myself until things clicked and fell into place.

Repeat for many years until today.

^^ this... except I couldn't afford to buy books at all until I started working as a programmer wink.png

In one of my early jobs, there was an opening in the engine department, for someone who knew shaders and graphics programming. I put my hand up based on my hobby work, and was more qualified than anyone else that went for it, so I got transferred into that department and got to start doing it professionally. At my next job I applied to be a graphics/special-effects specialist, and got the job (with the title of "junior effects programmer" to begin with dry.png) and I was paired up with a guy who'd been doing it for years, whom I learned a lot from, just by sitting next to him. I also learned a lot by being exposed to the low level APIs on the consoles, and their spec documents. After that, I got a job as the main graphics programmer at a different company in their engine team, and was thrown in the deep end along with the specifications for all the consoles and the responsibility of making a new renderer from scratch biggrin.png

wow that blew me away lol. Id be happy if i could program N64ish graphics haha

When I was fourteen I spent a year and a half writing my own software renderer from random tidbits of information I found around the internet, a lot of trial and error, and plenty of working out how different math worked on post it notes. Once you've written a software renderer regular graphics programming is a lot easier to understand.

i truly started graphics programming at 15 or 16, when i was doing homebrew for the psp, and learned the gu, thus began my journey on learning how to program a graphical game(although it was still pretty heavy fixed pipeline, so i knew nothing of shaders). than i used xna with the 360 for a bit, learned a bit about shaders, but it didn't click for awhile on what i was truly doing. then i decided to work with openGL and learned shaders far more in-depth. i don't feel anywhere near finished, i've seen tons of people producing far better than I. but i have learned plenty enough that i can get something up and running in openGL fairly quickly.

Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

My first hardware accelerated application was a MS Word document! No kidding! Before I get to that, let me tell the story of learning to use opengl in basic, assembly and then C, and yes in that order. In early high school I played around a lot with qbasic and was writing simple wireframe 3d mazes with horrible performance. I didn't have a C compiler, so I started playing around with debug.com, and started writing little assemly language routines to speed up certain slow things in basic. Debug sucks, it can't even do labels, you have to specify the exact jump address. You literally have to write JMP 0x322 and hope you put some code at 0x322. So I wrote a qbasic program that reads in assembly source with labels, strips them out, runs it through debug with dummy addresses (JMP 0x1234 or whatever). It looks at the redirected output of debug to see what address the assembler said it was using for each line, figured out the labels, and then reassembled it a second time. It was so cruddy. While I was doing this, I also got involved in a high school robotics program called Botball, where you programed lego robots in a language called Interactive C.

Back to graphics. I wanted to try using GL, but like I said, I didn't have any compilers. MS Word 2000 had a built in version of VB, called VBA. It turns out VBA can load and run functions from DLLs (scary), so I wrote a word VBA macro that loaded system32.dll, and called the function to get the application's window handle. I played around with GDI, and got to draw dots and lines onto the word document window using only the win32 api. So then I loaded opengl32.dll. After crashing word several times, I managed to get a textured quad on the screen, put there by the video card! I then shortly discovered that the Windows DDK for Window 98 came with a FREE COPY of MASM. So I started writing programs in the psychotic mix of dll's written in MASM that were loaded into MS Word's Visual Basic. A teacher at high school saw what I was doing, and gave me a copy of Borland C++. I was able to apply what I learned about writing PC programs in MASM and Basic to what I learned in Botball's 'Interactive C' and from there everything took off. After I finished highschool, I did EECS at UC Berkeley, and now I do software for a living.

I'm so glad visual studio has free editions. I would have free loved visual studio as a kid. Ubuntu would have also rocked. Kids today can access this stuff so easily now.

My first hardware accelerated application was a MS Word document! No kidding! Before I get to that, let me tell the story of learning to use opengl in basic, assembly and then C, and yes in that order. In early high school I played around a lot with qbasic and was writing simple wireframe 3d mazes with horrible performance. I didn't have a C compiler, so I started playing around with debug.com, and started writing little assemly language routines to speed up certain slow things in basic. Debug sucks, it can't even do labels, you have to specify the exact jump address. You literally have to write JMP 0x322 and hope you put some code at 0x322. So I wrote a qbasic program that reads in assembly source with labels, strips them out, runs it through debug with dummy addresses (JMP 0x1234 or whatever). It looks at the redirected output of debug to see what address the assembler said it was using for each line, figured out the labels, and then reassembled it a second time. It was so cruddy. While I was doing this, I also got involved in a high school robotics program called Botball, where you programed lego robots in a language called Interactive C.

Back to graphics. I wanted to try using GL, but like I said, I didn't have any compilers. MS Word 2000 had a built in version of VB, called VBA. It turns out VBA can load and run functions from DLLs (scary), so I wrote a word VBA macro that loaded system32.dll, and called the function to get the application's window handle. I played around with GDI, and got to draw dots and lines onto the word document window using only the win32 api. So then I loaded opengl32.dll. After crashing word several times, I managed to get a textured quad on the screen, put there by the video card! I then shortly discovered that the Windows DDK for Window 98 came with a FREE COPY of MASM. So I started writing programs in the psychotic mix of dll's written in MASM that were loaded into MS Word's Visual Basic. A teacher at high school saw what I was doing, and gave me a copy of Borland C++. I was able to apply what I learned about writing PC programs in MASM and Basic to what I learned in Botball's 'Interactive C' and from there everything took off. After I finished highschool, I did EECS at UC Berkeley, and now I do software for a living.

I'm so glad visual studio has free editions. I would have free loved visual studio as a kid. Ubuntu would have also rocked. Kids today can access this stuff so easily now.

That's the difference between you and me: I learned programming to let me make video games so I can put my ideas in an interactive media. You learned it simply for the joy of discovery and making software work. As a byproduct, I've learned that, too, but I don't know if I will ever get into as deep passionate as programmers like yourself. It's just funny that I'm learning the same stuff that others in the game industry take paths in learning, anyway, so I suppose I may be as passionate as people like yourself. I sometimes think I'm just a man using programming as a tool to get something done, and I believe that to be the case as it's a means to an end.

just a hobby?

Thought I have a degree in CS and got in touch with OGL there, I really do only learn the basics of graphics programming at university. Never got the chance to learn it as teen (amiga wasn't the 3d work horse), but later on loved graphics programming and learn it by internet research and reading lot of articles.

I do it as a living for tri-Ace, where I work on this engine, primarily on graphics and optimizations.

blink.png Really great work !

wow that blew me away lol. Id be happy if i could program N64ish graphics haha



I do it as a living for tri-Ace, where I work on this engine, primarily on graphics and optimizations.

blink.png Really great work !


Thank you.

And going off Hodgman’s experience, I want to point out that I was less fortunate as I never had any kind of mentor figure or anyone close-by from whom I could learn a lot until I started at tri-Ace.
At tri-Ace there are definitely geniuses in the rendering department and I greatly appreciate the chance to now be working directly with Yoshiharu Gotanda, Mr. Shoji, Mr. Nagano, and the rest of the people in our department who are not related to graphics.

Before tri-Ace people had always gone to me to solve a lot of problems, graphical or otherwise, and while that is nice in its own right, the fact is that having had no superior was stunting to my growth.
Frankly, I grow at tri-Ace at double (or more) the growth I had ever experienced before while trying to learn it all on my own.

The best thing you can do for your own growth is to be surrounded by people who are much better than you.
That is often a matter of luck, but if you have a chance to make it happen, definitely do.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

This topic is closed to new replies.

Advertisement