• entries
    121
  • comments
    278
  • views
    155997

What I'm Currently Studying

Sign in to follow this  
Promit

191 views

It's not clear to me how many people know this, but I've decided to take an indeterminate amount of time (most likely 2 years) off of school and pursue career goals. There are any number of reasons, but they are not the subject of this entry.

I've accepted an offer with Day 1 Studios, near Baltimore. My understanding is that I'll be a junior developer on their next gen core tech. Sounds pretty awesome, and they're cool guys. I'm also getting a car, now that I have money and a job. Thank god. I've been waiting for months, desperately wanting a vehicle. I can't afford anything that good, but I think the final selection is quite nice. I am a car enthusiast, after all; I wasn't about to settle for a five year old Civic. Exactly what it is will be secret till I bring it home.

What I'm Currently Studying

Since I have a job now, I have a lot to catch up on. I believe that I am anywhere from one to two years out of date when it comes to graphics programming techniques, particularly shader techniques. I need to bring myself back up to date if I'm going to be doing next gen work. I'm also moving back to C++ outright. A little annoying perhaps, but necessary even for my hobby work. (Amongst other things, I need a new demo should job searching come up again.) This journal post is just to give an overview of what I'm going to be looking at over the coming months. It should serve as a useful guide for those of you who are interested in taking a similar job.

First, I wrote an article some time back discussing how to handle shader constants in an automatic way, using .NET 2.0. If you haven't seen it already, I recommend it; it's one of the best bits of work I've ever done. Now, I originally meant to do research on adding lazy evaluation and referenced (rather than locally contained) data to the implementation. With my change in focus, however, I currently have a new bit of work to do. You see, I believe that I can replicate this system in C++, with nearly identical usage for people using the code to handle shader constants. Not only that, the implementation will be mostly platform independent; all it will take to port is modifying two or three extremely small functions and probably looking up your platform docs for the bytecode to a NOP. The implementation will not share the elegant brilliance of the .NET version. In fact, it will be certifiable voodoo. However, it will work, and it will accomplish the same exact goals with similar maintenance effort once it's done. It will also be accessible to a much wider audience, notably the professional audience. I'm looking forward to that.

Second, I have some books to buy. Day 1 will reimburse half the price of any book I buy that is related to my work. With that in mind, I am going to buy all of the books in the Shader X and GPU Gems series, as well as a few other misc books in the same vein. (Game Programming Gems and AI Game Programming Wisdom are likely.) Over the coming months, my goal is to internalize all of the information contained in these books. Shouldn't be too hard; I figure a month per book is a good relaxed pace, and quicker on the older books and the Game Programming and AI series. By this time next year, I can easily be completely up to date at that point with everything that an experienced game/graphics programmer should know.

Third, there's lots of extra reading to do. I need to become comfortable with everything Tom Forsyth has written, ever. I'm also planning to take an extended trip into shadow mapping technology. My current estimate is that the shadow stuff is about 20 papers to read, most of which are useless techniques and therefore can be skimmed and ditched quickly. I also need to catch up on about 3 years of GDC and SIGGRAPH papers that are relevant to me, along with anything else ATI or NVIDIA have published in about the same timespan. I'm especially interested in ambient occlusion, spherical harmonics, and subsurface scattering.

Lastly -- and this is the daunting one -- I need to study GPU based RTRT and (conceptual?) integration with a traditional raster pipeline. And before you all get excited, no, I don't think real time ray tracing has any kind of future as a replacement for rasterization. That idea is absurd, although I'll reserve extended discussion of that matter for another time. However, a number of effects are very akward to rasterize, and I've been curious recently if we can borrow techniques or tricks from the RTRT community in order to solve certain problems. This is not a first; parallax mapping is a fairly good example of the whole idea, although it's a little different. I'm not sure where this will lead, or if it will lead anywhere at all. In any case, my value as a developer has always been the sheer breadth and diversity of my knowledge, and I've managed to use that to great effect in the past. I do honestly believe that I can make some progress here.

It should come as no surprise that I want to buy an E-ink PDF reader as soon as I can justify the expense and a model less silly than the Sony Reader appears. (Does it need 4 sets of controls to turn the page on it? Does it really?) There's lots to do, and all that while I'm doing actual next gen work. I don't mind, though. For one thing, I really enjoy this sort of thing. Second, right now I'm a junior developer at a game company, and that's just not good enough. It's passable for the moment, but I'm aiming much bigger than that. I'm 20 years old now, and have a year left in my degree which I'm deferring. The goal is to make tech director and buy a Vette by 25. Seems like a reasonable target to me.
Sign in to follow this  


4 Comments


Recommended Comments

Quote:
Original post by Promit
First, I wrote an article some time back discussing how to handle shader constants in an automatic way, using .NET 2.0. If you haven't seen it already, I recommend it; it's one of the best bits of work I've ever done. Now, I originally meant to do research on adding lazy evaluation and referenced (rather than locally contained) data to the implementation. With my change in focus, however, I currently have a new bit of work to do. You see, I believe that I can replicate this system in C++, with nearly identical usage for people using the code to handle shader constants. Not only that, the implementation will be mostly platform independent; all it will take to port is modifying two or three extremely small functions and probably looking up your platform docs for the bytecode to a NOP. The implementation will not share the elegant brilliance of the .NET version. In fact, it will be certifiable voodoo. However, it will work, and it will accomplish the same exact goals with similar maintenance effort once it's done. It will also be accessible to a much wider audience, notably the professional audience. I'm looking forward to that.


I'm particularly interested in this, and can't wait to read the end results. I also have a similar reading list, so I'm interested in hearing about what you found useful and what you thought was a waste of time.

Share this comment


Link to comment
Congratulations on the new job! That reading list is a pretty heavy pile of books - don't be surprised if it takes a little longer than you think to clear them all out. Even so, its great to hear that your jumping head first into the research area, plus you are willing to do the work to get where you need to be.

Good luck, and remember to post frequently!

Share this comment


Link to comment
Quote:

By this time next year, I can easily be completely up to date at that point with everything that an experienced game/graphics programmer should know.


An experienced graphics programmer is one that has worked for a long time using this knowledge. You, OTOH, won't have real experience, just many informations from books. IMO there's quite a difference.

Good luck on your new job.

Share this comment


Link to comment
You've always struck me as pretty head-strong and motivated person, so doesn't surprise me you've chosen this path. I reckon you'll pull it off as well [smile]

Quote:
The goal is to make tech director and buy a Vette by 25. Seems like a reasonable target to me.
Good to have a goal, but be careful with it - last thing you want is to get to 23 and realise you won't make your goal till you're 28 and then get all demotivated by it.

One of the problems we've got in my company is graduates who walk in and expect to be CEO's inside of 6 months. Quite a lot of people aren't mature to realise you've got to do a couple of years of grunt work in the trenches before you open the door to the senior roles.

Myself, I'm in that exact position - I need to get a big project under my belt before they'll consider a sideways-and-up promotion that I have as my goal. Doesn't matter that I might have the smarts for it, I just have to jump the hoops and check the boxes...

Anyway, best of luck with it - be sure to let us know how it goes. I'd be very interested in your thoughts on the ShaderX and GPU Gems series. I want to buy and read them all, but I don't have the time nor money so it's always good to know which ones you think are good or bad!

Cheers,
Jack

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now