Home 3D Art Showcase & Critiques

Tech primer for real-time 3D artists?

How do game artists learn the ins and outs of draw calls, texture fetches, vertex cache, and the like? Tech constraints might be boring or confusing, but they have a direct impact on the framerate of your game, the ultimate artist bottleneck in our biz. When it isn't fast, it isn't real-time, and it sucks.

I suspect like me you learn by discussing performance issues with the programmers you work with. Maybe you've coded your own rendering software at some point, but I think that's pretty rare in the world of game artists. Or maybe you read programmer-oriented books like the ShaderX series and the like. Dense reading though.

I think there's a real lack of artist-centric resources on the web for realtime artists to learn the ins and outs of our daily art decisions about performance. I have two articles on my site, but they really only scratch the surface.
http://www.ericchadwick.com/examples/provost/byf1.html

So, I'm interested in starting a Wiki about these things. The idea would be to help new artists develop their own sense for when/where/why they need to make these tradeoffs. Also, as every tutorial writer knows, there's nothing like writing it down to clarify one's own lack of knowledge on a subject. I'm not sure how much time I can devote to it, but I'm interested in the learning opportunity.

What would you like to see in such a resource?

I'm thinking of organizing it by pipeline, how artists' good or bad decisions affect each step of the rendering process. It would probably also need sections relating to specific hardware.

A wiki format might encourage some of you to do your own edits & contributions. Maybe it could be merged with Rick's excellent Game Industry job wiki, if it makes sense and he's up for it.

Sounds like this could be a massive undertaking, not sure if I'm up for it, alone. Any interest in this?

[edit.. oops on Rick's link]

Replies

  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    Maybe it could go on the under-the-radar Polycount Wiki, could do with some more content, promotion and organisation on that. It's kinda bare at the moment, but I think it could be really good if we got a concerted effort to pull it all together.

    I think it's a great idea - because especially with advancing technology, it's not good enough just to be a great artist, you have to understand the pipeline, restrictions and implications of any artwork you create.
  • Eric Chadwick
    Options
    Offline / Send Message
    Sounds like a good place to start. Can't seem to create a new user though, there's no "Create Profile" button.
    http://wiki.polycount.net/UserPreferences

    So, where did you learn your tech chops? I suspect through forums and talking with programmers you've worked with. Any other sources?
  • Rob Galanakis
    Options
    Offline / Send Message
    I'll add some stuff I've written to the wiki as well. I think it is a great idea.
  • IronHawk
    Options
    Offline / Send Message
    IronHawk polycounter lvl 10
    Sounds cool Eric! Looking forward to this.
  • spitty
    Options
    Offline / Send Message
    spitty polycounter lvl 17
    this sounds great. i've read those two articles before and the glossary on your webpage, and i've been interested in reading more info like that.

    ben cloward's website has some good tech info too. i really liked his explanation of normal mapping.

    http://www.bencloward.com/tutorials_normal_maps1.shtml
  • Eric Chadwick
    Options
    Offline / Send Message
    Hah, the glossary was a great start for me. But it's so full of wrong stuff, I'm a bit embarrassed by it.

    But yeah, this might be a good thing. Hopefully once it gets rolling, everybody will add their bits n bobs.

    In describing the "whys" of certain techniques, I'm thinking I'll refer directly to the great art technique writeups out there, like Ben's and the other great polycounters.


    Where did you guys learn what you know?
  • kat
    Options
    Offline / Send Message
    kat polycounter lvl 17
    Do things like this follow a common theme or are they engine centric? Is 'X' method/feature only used in 'X' engine and so on? So would that mean describing something specific to that or trying to keep things generalised and as broad as possible?
  • Rob Galanakis
    Options
    Offline / Send Message
    Christ that is the worst Wiki software I've ever encountered... If anyone wants to port these articles from mediawiki please do (I couldn't even figure out how to post an article at the polycount wiki...)

    Here are two technical articles, one slightly unfinished on shaders:
    http://www.twcenter.net/wiki/Shaders
    and another on beveling:
    http://www.twcenter.net/wiki/Beveling
    I'm currently writing something up on "parallax" terminology that'll be ready in a couple weeks probably (I've counted six, how many are there: parallax, parallax with offset limiting, steep parallax, cone mapping, relief mapping, parallax occlusion... am I missing any?)

    How did I learn the technical stuff? Not an easy question. I've been working closely with a programmer in one form or another (on my third now) in depth for more than a year, so I pick up some things. I was working with an engine with no tools for many months for Blood and Iron, so I basically learned the ins and outs of the entire thing, to the point where I could figure out what was wrong based on the error report (the logging was poor until the end as well). I picked up LOTS of technical knowledge. Add to this that my programmer for the bulk of the project didn't really know graphics stuff... I knew more about OGRE than he did by the end I think. Other than that hellish experience I wouldn't really wish on anybody (do you know what its like to set up a scene through a 3500 line XML file!!!), I learned HLSL from toying with ShaderFX and then doing intensive studies, reading lots of books on it and whatnot. Unfortunately I haven't had too much time to go back to it recently. Since shaders are the core of graphics technology nowadays, learning HLSL was tremendously helpful to my artistry... learning about engine architecture and whatnot I think gave me very interesting insights and experience, and taught me a helluva lot about pipeline.

    In a few months I want to take up MEL scripting and maybe some C++.
  • adam
    Options
    Offline / Send Message
    adam polycounter lvl 19
    Awesome idea. Just please make sure that lengthy articles are accompanied by illustrative images of what it is the article is trying to say. So often do explanations get lost in words when a simple image would have sufficed.

    I personally am looking for descriptions of different normal map types, how their information is kept and how their rendered in 3D space. There's already been a discussion about this in 2D/3D but it was all a bit tech-savy for me to completely grasp the definitions - which is why pics would help.

    I look forward to the updates!
  • Eric Chadwick
    Options
    Offline / Send Message
    I think for my first contribution I'll do an outline of how 3D content goes from app to screen, then elaborate on bits as they come. Probably better to keep it more general than just specific to one game.

    Professor420, yeah a game with no tools and no docs, that's how I got started. Great intro, when you have to figure it all out yourself!

    Agreed on the pics Adam. I posted some normalmap image types on CGTalk awhile back, wonder if you saw that? There are more types, but AFAIK they're really just different ways to compress tangent-space maps (by removing the blue/Z channel). Certainly something good to add to a wiki!
  • Rick Stirling
    Options
    Offline / Send Message
    Rick Stirling polycounter lvl 18
    By all means, dump all that stuff on the rsart wiki - it's there for a reason and it's sadly underused.

    I've got stuff from my semi abandoned book about cheapness, memory usage and tri-stripping
  • Eric Chadwick
    Options
    Offline / Send Message
    Thanks Rick.

    Spelunking around I saw this, verbose industry advice, from a Producer's perspective.
    http://www.sloperama.com/advice/
  • Eric Chadwick
    Options
    Offline / Send Message
    I'm pondering where to add stuff. It might be good to add to a community wiki that has a wide base, like maybe IGDA.

    This page looks interesting, though nothing art-specific yet.
    http://www.igda.org/wiki/index.php/Game_Production_Knowledge_Base
    Trouble with their wiki is you need to be an IGDA member to edit. Don't like having a $48 US barrier in the way ($30 student), discourages contributors.

    I could see mirroring things on multiple wikis, but that'd get tedious fast.
  • poopinmymouth
    Options
    Offline / Send Message
    poopinmymouth polycounter lvl 19
    What about the Polycount Wiki, as Mop suggested?

    poop.gif
  • Rob Galanakis
    Options
    Offline / Send Message
    Tom Sloper spends lots of time on Gamedev, he's such an asshole but really knows his stuff. If you have any business question, check his site, then you can ask on the Business forum on Gamedev... just make sure its not a dumb question and don't argue with him smile.gif

    Ben, I for one find the polycount Wiki unmanagable due to its software... I'm a fan of MediaWiki, I've used a couple others but reformatting all my wiki articles and learning a new markup (if it requires that) is not something I'm keen on...)
  • Eric Chadwick
    Options
    Offline / Send Message
    I couldn't create a user account on the polycount wiki.

    I'm interested in Wikipedia ATM. Does get a lot of traffic, has clear standards, edits get feedback, etc. Might be a lot of overhead though.
    http://en.wikipedia.org/wiki/Game_development
  • Rick Stirling
    Options
    Offline / Send Message
    Rick Stirling polycounter lvl 18
    I too have had issues with the polycount Wiwki - it's not a great version of a wiki, but as I recall there was some tech reason behind.

    The PC wiki is a great idea, but with the number of people expressing issues with the software it'd make sense to change it sooner rather than later.
  • Eric Chadwick
    Options
    Offline / Send Message
    Well, I've been trying to get some time to spend on this, but we're super-busy on a project at work. Yeah, who isn't?

    Anyhow, here are a couple articles I found in my research. They're a bit wordy but thorough, should get you started if you're interested in this topic.

    ExtremeTech: 3D Pipeline Tutorial

    ExtremeTech: Game Engine Anatomy 101

    I'm still looking forward to boiling it down, maybe I can invest some time on it after a month or two.
  • thnom
    Options
    Offline / Send Message
    thnom polycounter lvl 18
    It is that wiki because there is code to fully implement it into the 'polycount' look which can't be done with the normal wiki (wikipedia.net and shit)
Sign In or Register to comment.