Home Technical Talk

no games use coloured specular

13

Replies

  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Peris, I guess not, since if you start with greyscale, what are you saturating? A flat colour?
    That is not only more tough for an artist to visualize and work with, but it's probably also a more complex shader (and then you're using 2 channels anyway, so the memory saving is not much at all).
    Plus that still doesn't give you different coloured specular ares which I think is more important than only varying the saturation of a single colour.
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    aaaaaargh sand box, no chance of coloured spec........ not if it means sacrificing nromal/diffuse res.

    interesting disscussion. i have had a few disscusions with programmers, theyre stating that somethign is physically correct, when it looks wrong due missing links in the engine, due to expense. The best way to fix it is with a hack like coloured specular masks, not completely accurate way to model light, but it gives roughly the same effect as you want to acheive..... if you can afford the memory.

    I would say that along with lightmapping they possibly have a limited lifespan, as they will probably be sucseeded by correctly modeled shader lighting....maybe
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    MOP-

    R = intensity
    G = warm/cool, colour tweak taken from diffuse
    b = saturation of spec (degree of colour correction)

    this would give you alot of control but hella expensive?
  • rollin
    Offline / Send Message
    rollin polycounter
    SHEPEIRO wrote: »
    (...) I would say that along with lightmapping they possibly have a limited lifespan, as they will probably be sucseeded by correctly modeled shader lighting....maybe


    I say no.

    Why?

    Because we are NOT copying the reality (ok some games do, or lets say try)


    Imagine a world where G.Lukas had listen to some scientific researchers who told him that sound does not exist in space.. :poly122:

    A lot of games are about fiction.. and then I really don't care if my lighting is physically correct. It has to look simply great and fitting to the story/universe
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    SHEPEIRO wrote: »
    MOP-

    R = intensity
    G = warm/cool, colour tweak taken from diffuse
    b = saturation of spec (degree of colour correction)

    this would give you alot of control but hella expensive?

    Heh why not just use...RGB for the full color then? :P


    And they don't have a limited lifespan, you can always look to film at what they're using for where games are headed (in a way) and all of their shaders still support colored spec, why would you ever give someone -Less- control.
  • Racer445
    Offline / Send Message
    Racer445 polycounter lvl 12
    You could do just...

    R = intensity
    G = color (grayscale values correspond to each color)
    B = gloss

    and have a value in your material editor for color saturation.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Racer445 wrote: »
    You could do just...

    R = intensity
    G = color (grayscale values correspond to each color)
    B = gloss

    and have a value in your material editor for color saturation.

    Yes this is plausible (as long as you have a sensible pipeline workflow way of getting the "colour" information out as a single channel of range 0-255... I guess you'd just compress the Hue range down from 0-359 and lose a little precision), it'd mean you could use a DXT1 instead of a DXT5.

    However you'd also lose saturation control at that point, and again this will mean a loss of quality and less ability for the artist to create exactly the look that they want.

    It's a more sensible suggestion than SHEPEIRO's though, as JordanW points out, at that point you might as well just use the RGB channels for storing actual colour/value information the conventional way ;)

    Basically there's no way to "derive" in a shader that what you really want is control over value, hue and saturation in your specular. And considering everyone here is jumping through hoops to try and drop channels (at the cost of increased shader expense, more complex workflow, and loss of artistic control), when what you could actually just do is half-res your specular/gloss map - a 256x256 DXT5 ( RGB = spec color/intensity, A=gloss) is half the size in memory than a 512x512 DXT1... and it seems to me like everyone here is concerned about memory when they're talking about trying to get rid of specular colour. The only thing you lose there is an extra channel for shoving some info into (most people seem to be doing stuff like single-channel spec, single-channel gloss, then a single channel for something else which is usually fairly arbitrary).

    I'd much rather have a 256x256 coloured specular map than a 512x512 greyscale one, and it'd be the same size in memory, the only cost is an extra texture lookup for those maps which you were storing in your third channel.
  • poopinmymouth
    Offline / Send Message
    poopinmymouth polycounter lvl 19
    Has something changed and you can hold smaller maps in memory as smaller? Last I heard, all maps are stored in memory at the virtual size of the largest map. So if your diffuse is 512, normal 512, and spec 256, once loaded in memory, it's virtually sized as a 512 anyway. I could be wrong, but would like some clarification from a shader programmer.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Pretty sure you're wrong there. Textures are stored in memory at the size they're passed in at. There should be absolutely no link between diffuse/specular/normal texture sizes even if they're all drastically different and used in the same shader.

    Not sure what you mean by "has something changed", either, AFAIK it's always been like that - it'd be insane to up-size textures just because they don't "match" others in a shader. I'd be interested to know where you heard that from, or if there are some engines out there which require this, since it sounds crazy to me.

    Edit: Checked with our technical director, and yes, if your engine is doing that then it's pretty messed up... unless you have some extremely finicky optimisations to go through for whatever reason.
    Graphics cards only know about textures, they don't care whether they're diffuse/specular/normal or whatever, they just store the information and pass it around as needed. There's absolutely no reason that all maps in one shader should be the same resolution.
  • Mark Dygert
    MoP wrote: »
    Pretty sure you're wrong there. Textures are stored in memory at the size they're passed in at. There should be absolutely no link between diffuse/specular/normal texture sizes even if they're all drastically different and used in the same shader.

    Not sure what you mean by "has something changed", either, AFAIK it's always been like that - it'd be insane to up-size textures just because they don't "match" others in a shader. I'd be interested to know where you heard that from, or if there are some engines out there which require this, since it sounds crazy to me.

    Edit: Checked with our technical director, and yes, if your engine is doing that then someone's really messed up...
    Graphics cards only know about textures, they don't care whether they're diffuse/specular/normal or whatever, they just store the information and pass it around as needed. There's absolutely no reason that all maps in one shader should be the same resolution.

    I think it has to do with loading and unloading textures. Everything gets loaded into a slot regardless of its size. When it comes time to swap out textures you're not stuck looking at the sizes to find one that matches, you need a slot you fill a slot.

    shoe-cubby-319004_2.jpg&usg=AFQjCNGYd7tuKgpRyJEgB_es-N0wOgeyxg
    Its a bit like having a shoe cubby and not caring what size of shoes go in the cubbies. With some games and the large pockets of space on cards it is possible that a game would never need to worry about packing all of its textures onto the card. For its purposes it might seem unlimited and in that case this could be a fast way to handle loading/unloading.

    How many engines work this way I'm not sure, I learned about it back around HL1 so it's probably pretty old and been replaced by faster processors or some fancy code.
  • Ghostscape
    Offline / Send Message
    Ghostscape polycounter lvl 13
    Has something changed and you can hold smaller maps in memory as smaller? Last I heard, all maps are stored in memory at the virtual size of the largest map. So if your diffuse is 512, normal 512, and spec 256, once loaded in memory, it's virtually sized as a 512 anyway. I could be wrong, but would like some clarification from a shader programmer.

    In a lot of games certain meshes/objects will have a "slot" size (I know one of the early quakes did this which is probably where you are getting it from?) and so not filling that slot will not save you overall memory. I know some console games still do this.

    But the maps themselves are different sizes, and so while you may have a 3mb slot to fill for your vehicle/weapon/dude, you could fill that with 2mb of diffuse and 1mb of spec, etc, etc.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Another interesting point our Technical Director just raised is that DXT1 3-channel compression is designed to compress "regular" RGB colour data in blocks of 4x4 pixels. The compression algorithm works better with data such as those found in photos or diffuse textures.

    As a result, if you're storing drastically different data per channel and still using DXT1 compression then each map will be more lossy than you might expect, since the RGB channels have no correspondance to each other and the data may be totally unrelated.

    Probably not something that's going to be hugely noticeable in most cases but it is worth bearing in mind, I reckon.
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    Ghostscape wrote: »
    In a lot of games certain meshes/objects will have a "slot" size (I know one of the early quakes did this which is probably where you are getting it from?) and so not filling that slot will not save you overall memory. I know some console games still do this.

    But the maps themselves are different sizes, and so while you may have a 3mb slot to fill for your vehicle/weapon/dude, you could fill that with 2mb of diffuse and 1mb of spec, etc, etc.


    yeah, since memory is linear, and it wouldn't be too awesome to defragment memory every time you remove something just so you could have optimal usage of it :)

    most engines just solve it by not streaming at all, just load everything can can fit in memory and thats it, thats the level.
  • poopinmymouth
    Offline / Send Message
    poopinmymouth polycounter lvl 19
    MoP wrote: »
    Pretty sure you're wrong there. Textures are stored in memory at the size they're passed in at. There should be absolutely no link between diffuse/specular/normal texture sizes even if they're all drastically different and used in the same shader.

    Not sure what you mean by "has something changed", either, AFAIK it's always been like that - it'd be insane to up-size textures just because they don't "match" others in a shader. I'd be interested to know where you heard that from, or if there are some engines out there which require this, since it sounds crazy to me.

    Edit: Checked with our technical director, and yes, if your engine is doing that then it's pretty messed up... unless you have some extremely finicky optimisations to go through for whatever reason.
    Graphics cards only know about textures, they don't care whether they're diffuse/specular/normal or whatever, they just store the information and pass it around as needed. There's absolutely no reason that all maps in one shader should be the same resolution.

    I don't actually remember where I heard it. I am aware that the graphics card can't identify the maps, I was giving an example of a case where you would have mismatched texture sizes. It could be larger normal and spec with small diffuse also, I was implying that all the small maps take up the same size in memory as the largest map does, no matter their usage. However it sounds like I'm wrong, or wherever I heard it from has something proprietary. I think it was during bloodrayne 2 with the ps2 infernal engine of the time, but it's also possible I just misunderstood.
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    poop, the ps2 had some crazy voodoo going on with it, so that one might have had some strange rules concerning textures.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Yeah, let's leave that stuff behind :)
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 20
    yeah that an the streaming mechanisms people have mentioned. one can think of setups where same-sized textures are arranged to atlas and so on... so yeah it could happen, but if it happens it's bound to their specific system and should be clear to everyone producing the assets at correct resolutions...

    and good call, mop, about the compression being block-based, which means channels will influence each other when "control" maps actually should store independent values.

    it would be interesting to hear how the code&art situation is in movie production, I would think it's a better "we" approach there.
  • waldo
    Im studying at a game school in sweden. The Game Assembly. Here the coders write their own engine from scratched based on DX10. They are kind enough to listen to what the artists wanted.

    We are at the moment (have made some changes since last game) using this setup for maps.

    Diffuse (geometry alpha in alpha channel)
    Normal maps
    Full colored Specular
    Our own made up Monocromic Map (Ambient occlusion in R, Glow in G, Reflective Map i B)

    Last game we had the specular instead of the glow in the G channel of Monocromic Map. Caused some artifacts (because of bad dds compression) so we decided to separate it and make it full colored instead. From what I understand the only changes that they had to make was shader based (.fx files).
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    waldo, what about the good old gloss, where'd it go?
  • waldo
    No, sorry dude. No gloss. Environment map and specular will do, sure maybe it would help sometimes but since were not that into slimy aliens i don't think it will be missed :poly124:
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Gloss maps, IMO, are pretty vital for representing accurate "material" information too. Then again it also depends on the art style, and what assets you're making - you can make do with a simple exponent value for generic tiling textures, but as before when you have complex surfaces (vehicles, characters, weapons) and trying to produce a believable material variation, gloss (specular exponent) can be really vital to get nice contrasts in specular width.
    I think it's wrong to assume that you only need a gloss map if you're making "slimy aliens" - in fact I'd argue that not using a gloss map can result in more "slimy" looking stuff if you're not careful, since the highlight width is the same across your whole surface.

    I find it a little strange that you'd have a "glow" map as a standard feature of an extra texture, are you making a stylised game where every asset glows? I would have thought a gloss map would be more generic and useful across a wide range of assets than a glow map.

    You can also do stuff in a shader like use a result of some combination of the specular level with the exponent and take the result as the reflection multiplier - that can work quite well and again means you get to use gloss without taking up any more texture memory than you currently do.
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    rollin wrote: »
    I say no.

    Why?

    Because we are NOT copying the reality (ok some games do, or lets say try)


    Imagine a world where G.Lukas had listen to some scientific researchers who told him that sound does not exist in space.. :poly122:

    A lot of games are about fiction.. and then I really don't care if my lighting is physically correct. It has to look simply great and fitting to the story/universe
    asset creation time constraints will become worse as more are needed, and accuratly rendered material effects such a specular that require less time for an artist to set being very adventagous.


    R = intensity
    G = warm/cool, colour tweak taken from diffuse
    b = saturation of spec (degree of colour correction)

    sorry this wasnt that sensible unless your doing it deffered in which case it can give you much more control as the colour correction happens last after the HDR lighting etc, but actually i think it may cause lalot of other problems,

    anyway, its just brain farts
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    MoP wrote: »
    You can also do stuff in a shader like use a result of some combination of the specular level with the exponent and take the result as the reflection multiplier - that can work quite well and again means you get to use gloss without taking up any more texture memory than you currently do.

    do tell more or point me in the right direction, this sounds interesting.

    and i agree about the gloss, its the next best thing after having specular in the first place, if your going to do glow then do it per object/shader/vertex as its much rarer (ecept if your making space marines......ah)
  • waldo
    MoP wrote: »
    Gloss maps, IMO, are pretty vital for representing accurate "material" information too.

    The gloss could probably be put in specular maps alpha. I must be honest and say that I haven't used gloss textures before. Will be sure to check it up and see if it can't be incorporated in the specular A channel.

    Thanks for the tip.
  • waldo
    Played around with a gloss map just now. Why haven't you guys told me about this before. Great way to get sharper contrast in the specular highlight!

    I feel sorry for our coders already, having me nagging on them all day to add support for gloss map to our engine.

    Thanks guys! :poly124:
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Should be pretty easy to add specular exponent to shaders, just an extra couple of lines in an FX shader for gloss support, I guess you need to get the engine to point to the correct texture file / channel somehow though...
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    Hmmkay i don't know what you guys think of this but here goes. Regarding gloss ... Don't you think it's enough to have it fixed at a 'good enough' value/tightness for the whole game? And, when really needed, just as an editable value in the shaders.

    I understand that in order to describe a wide array of materials one wants to play with the 'hot spread'. But I found out that, with a numerical value, many materials can be achieved (plastics, leather, metals) ; and then when really strong 'sheen' control is needed (skin and carpaint being the two extreme sides of the sheen/gloss spectrum) then I'd rather go with a specific solution (like, using a fake environment reflection map to really make stuff look reflective).

    And if strong material contrast is needed (matte dry rubber versus super wet slimy surface), instead of painfully painting an extra map (gloss) modulating the hotspot size, I would simply crank up the gloss value to create the slime stuff, and then on the specular map paint the dry rubber completely black to remove all trace of hotspot on that area. That way the strongest material contrast is achieved, with no need for a gloss map. And if reflective metal is also needed, I would use the alpha channel of the RGBA specmap to store a mask were really reflective stuff is supposed to show.

    So to me the following is enough to describe a very wide array of materials :

    -RGB diffuse
    -RGB spec
    -Alpha for reflection masking
    -gloss/hotspot spread numerical value
    -and also a lighting response, fake BRDF map that can also contribute to the 'shade' of things.

    That way everything stay within the realm of visually manageable image files (no exotic RGB storage of 3 unrelated greyscale maps resulting in a visually cryptic rainbow map), and still, the knobs to be twisted are flexible enough for an artist to make awesome stuff easily.

    My problem with the "oh but wait what if you had this this this and that instead of a RGB spec?" attitude is that, even it might make more sense in a programmers mind, it also means more maps to create for an artist and that quickly becomes very cumbersome. I love the authoring simplicity of diffuse+rgbspec(+normals)+one mask. More that that quickly becomes a pain in the ass, I think. It might sound great and look impressive on a array of untextured chrome sphere and teapots, but 99% of game assets don't really look like that.

    Also the other advantage of less crazy controls is that, it helps making the game more artistically uniform.
  • Mark Dygert
    it would be interesting to hear how the code&art situation is in movie production, I would think it's a better "we" approach there.
    My guess is they use separate maps and don't worry about compression or load times like we do?
  • poopinmymouth
    Offline / Send Message
    poopinmymouth polycounter lvl 19
    pior wrote: »
    Also the other advantage of less crazy controls is that, it helps making the game more artistically uniform.

    I can buy your other points, but if you're considering just gloss as the added crazy control, that's not going to be enough to break artistic consistency. Hiring artists with different styles in their portfolio will more radically affect uniformity than using the same shader over everything but with a gloss.

    I mean, I can understand your preferred workflow, but with proper export tools, photoshop actions and scripts, you literally never have to even look at a rainbow map. I have always routinely worked in one PSD file with folders, and actions that grab and save out my different maps in the right size, format, and channel amounts, and it was the same button press I use to save out diffuse only for old school textures.
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    waldo wrote: »
    The gloss could probably be put in specular maps alpha. I must be honest and say that I haven't used gloss textures before. Will be sure to check it up and see if it can't be incorporated in the specular A channel.

    Thanks for the tip.


    gloss also means the absence of gloss to get these really nice metallic surfaces, and the oposite, these really nice painted metal surfaces.

    the problem with just going with a default gloss value for the whole game is that every basicly has the same value, with too low of a default gloss value, everything looks like metal, too high and everything looks like plastic.

    also, putting stuff in the alpha without afterthought can be dangerous, since the dxt5 doesn't compress the alpha, the alpha basicly takes as much space as a full dxt1. :)
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Pior: I think that a gloss map is much better than an overall value, in my experience. When you're dealing with complex surfaces I just don't see how you could make nice contrasting highlights and believable surface information with a single value over a whole surface.
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    The easy solution to this whole discussion is to use a content driven pipeline where you can build any shader with any combination of masks ..... Like ue3 :)
  • Xoliul
    Offline / Send Message
    Xoliul polycounter lvl 14
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    JordanW wrote: »
    The easy solution to this whole discussion is to use a content driven pipeline where you can build any shader with any combination of masks ..... Like ue3 :)

    Ive always been told that on consoles at least that, more shaders cost more draw calls, so having a shader completely open to customisation surely if not managed strictly will lead to a greater cost in draw calls. is this true in UE3?

    personally i love having complete control, but will sacrifice that to being able to draw a decent amount on screen and having decent presets.

    BUT is this a problem that all engines have, and if not then how the fuck not
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    Well all things considered I feel like what makes or break such scenarios is ... the absence or presence of the art director during the argument. Successfully passing a vision to a team of artists is quite a task already, hence it's clear that passing it to a team of programmers can be harder still.

    Poop yeah I agree about the rainbow map thing. Ideally it should never be looked at during the authoring process. Having worked with them in the past (for color customisation separation purpose) I know it's very doable ; however I feel like breaking things down to so many different grayscale maps tends to become more of a paint by number task, than a real texturing task. But this is another question altogether :P

    Jordan, I am not quite sure actually. When looking at UT3 for instance, I noticed that there was only two character shaders (Necris, and everything else) for optimization purposes I would guess. True, static meshes could be anything but I find interesting that they managed to get such diverse characters (human, alien-humans, and robots) under only two 'roofs' so to speak.

    Hehe Per yeah I know how quick a gloss map can be :P I guess I really am a minimalist at heart lol. I meant painfully as in, having another PSD/layer group for instance. But yeah I totally see your point about the contrast quality of a realistic FPS weapon. I guess I am biased buy never really having to do that, since I have mostly been more keen on working on stuff with more simple material breakdowns (Primary material, secondary material, then little extra details)
    Context, like always, is of very big importance. When you're doing assets that cover a large part of the screen and that the player is staring at literally all through the game, all of the discussed maps really pull their weight and make a significant contribution towards the end result.

    I totally agree about the importance of context. What I experienced many times, is tech talk about a very specific and relatively nailed down art request (the importance of a *simple* skin shader, the richness of a RGB spec map) quickly turning into tech dream/what ifs discussions that seem to get overly complex from the authoring point of view, in comparison to the original request...
    gloss also means the absence of gloss to get these really nice metallic surfaces, and the oposite, these really nice painted metal surfaces.

    I think I'm lost here! Care to elaborate?

    Also I just realized we all forgot to post a side by side example of colrospec/greyscale spec on a game asset lol. Will try to do that if time allows...
  • Peris
    Offline / Send Message
    Peris polycounter lvl 17
    I find gloss pretty vital too (moreso than colored spec!). It really helps surfaces with different materials on them, like rock with slimy moss growing on it, or combinations of plastic (small/medium size spec) with metal (large spec). It's all just a hack though =), a large spec just kinda looks like a blurry large scale reflection, a small spec just kinda looks like a sharp reflection of the light source, but in the end it's not really how stuff in real life looks.

    Have to say this discussion is really interesting =), I never really gave much thought to colored specular before, but after thinking about it I can definitely imagine a lot of materials benefiting from it, both for realistic and artistic reasons (adding extra touches of color is always good!)
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    pior wrote: »
    ...I think I'm lost here! Care to elaborate?...

    sorry, it was just me explaining earlier to someone that a glossmap does not equal slimy surface, but rather the whole spectrum of glossiness/nonglossiness :)
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    UT3 was a long time ago :) I'd like to think we get a little more creative with materials these days.

    Now we still use a lot of instancing but there are a lot of special purpose materials, like oh this enviro set is definitely going to have a lot of wood+Gold so I can make a material that uses 1 channel of an RGB mask and that defines what is Wood and what is gold, the wood gets a certain specular power and the gold gets another, whatever is gold gets a reflection map, the wood doesnt, the Wood may use a desaturated more contrasted version of the diffuse for the specular while the gold uses a solid color. My point is we can have all this talk about what sort of setup of masks is theoretically better, but the best solution is to have a content driven pipeline where an artist can come up with whatever they want.

    Our characters still do share mostly 1 material but if we run into a character that needs some special mojo there's no issue with giving it a master material of it's own. To be honest though, our characters have upwards of 10 textures referenced (this is as of Gears2). I would say most enviro sets share a master material that has a custom mask set up and sometimes even it's own lighting model.

    On the matter of draw calls, yes they get more expensive but it's an interesting problem, on a main character it isn't that big of a deal because it's only displayed once, but drawcalls are like a multiplier, if I have 1 main character that has 3 drawcalls VS 1 I only added 2 draw calls to the scene, but if I have 50 static meshes with 3 drawcalls instead of 1 I added a 100 draw calls to the scene.
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 20
    Vig wrote: »
    My guess is they use separate maps and don't worry about compression or load times like we do?

    I haven't meant the technical problems/decisions in detail, but the situation regarding communication and "listen to the other side".

    --

    I am also not a fan of the "artist driven shader authoring" (ie freedom to mix anything)
    a) it's not practical performance wise as you know
    b) it can easily create a too high diversity of looks, in the negative sense
    c) typically a good set of constraints, means focus, means "better production" imo. if you are allowed to do anything, you get lost


    in a pre-production phase, discussing "cool effects" or general shaders for the later look of the game, those artist created shaders are nice to have. But likely one could just use offline-shaders to get the principle look conveyed, and let programmers worry about efficiently creating the effect and making it "flexible" enough to minimize shader counts.

    edit:
    yeah jordan's statement about "limited" use of unique shaders makes perfect sense, so!
  • sprunghunt
    Offline / Send Message
    sprunghunt polycounter

    I am also not a fan of the "artist driven shader authoring" (ie freedom to mix anything)
    a) it's not practical performance wise as you know
    b) it can easily create a too high diversity of looks, in the negative sense
    c) typically a good set of constraints, means focus, means "better production" imo. if you are allowed to do anything, you get lost

    You should trust the people you work with more. If you can't trust the people you work with you should go work somewhere else. It's the beginning of the end when you can't trust anyone.

    Good artists can manage performance and art style without restrictions.
  • 00Zero
    have you guys ever worked with realtime materials that have double specs? specifically, car shaders. eg. a really saturated but broad base shine (with flakes, possibly tiling.) and another tighter spec over it to represent the clearcoat.

    anybody have any experience with this?

    I've been experimenting with it at work. right now im using double the geo to get the effect. im gonna try to sell it to the programmers so they could possibly write a material that supports it.
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    I've done the double spec before it shouldn't be much more expensive all it is is doing the spec calc once with 2 seperate POWs and multiplies by color.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    sprunghunt wrote: »
    You should trust the people you work with more. If you can't trust the people you work with you should go work somewhere else. It's the beginning of the end when you can't trust anyone.

    Good artists can manage performance and art style without restrictions.

    I dunno, I've found that even if you trust the people you work with, if they are not constrained by some technical requirements (artists especially) then they will go crazy with stuff that ends up needing more time to optimise out later and that ends up wasting work and time at both ends - theirs for making the really expensive and complicated stuff at the start, and everyone's for having to optimise it at the end.

    I'd much rather lay down some ground rules first and collaborate with artists and programmers to determine some good compromise of efficiency against quality, and have everyone work to those guidelines rather than having separate artists be able to make their own shaders at any time - without heavy supervision that just becomes a nightmare, and supervision means someone else's valuable time.

    Also, especially in larger studios, it can be really tricky to supervise everyone and make sure nobody is doing "their own thing" ... when it is hard enough to make sure everyone follows instructions in emails I can't imagine how painful it would be letting a 30-50 strong art team loose on an "artist driven shader editor".
    I am sure that the guys at Epic can attest that even though they have this flexible shader editor, in the end everything gets boiled down to the "bare minimum" in order to get everything running well and on the same page. I highly doubt that all UE3 projects have kept every single custom shader or material that an artist has made.

    I'd rather leave that stuff in the hands of people who really know how optimisation and performance works rather than let people run wild with "pretty effects" and crazy combinations of nodes just to get some specific one-off look.

    Either that or you can train your entire art team in the correct and optimal use of shaders and materials, but ... shouldn't they just be concentrating on making cool art?
  • eld
    Offline / Send Message
    eld polycounter lvl 18
    Mop, yeah, everyone has their own rules on what is "too much" or "too little" :)
  • Xoliul
    Offline / Send Message
    Xoliul polycounter lvl 14
    00Zero wrote: »
    have you guys ever worked with realtime materials that have double specs? specifically, car shaders. eg. a really saturated but broad base shine (with flakes, possibly tiling.) and another tighter spec over it to represent the clearcoat.

    anybody have any experience with this?

    I've been experimenting with it at work. right now im using double the geo to get the effect. im gonna try to sell it to the programmers so they could possibly write a material that supports it.

    For carpaint with flakes you can get the same result by having your glossiness vary due to a tiling noise texture for the flakes. Cubemap reflections sell the clearcoat effect way better anyway.
  • Mark Dygert
    Give a kid a sand box and he'll use most of the sand to make cool things again and again.
    Give a kid a pile of sand and most of it gets spread around really thin and ends up in the grass and tracked all over.

    People with well defined boundaries often can concentrate on the important things and spend less time reworking their stuff.

    Should artists have input on the type of sand and how big the box is? Of course.
  • sprunghunt
    Offline / Send Message
    sprunghunt polycounter
    perna wrote: »
    Have to tell you, doesn't sound like you got his points at all. What do you do when the artists in your company fail to be shader authors and art directors, tell them you've lost trust in them? That's a lot of responsibility you're placing with artists.

    Generally most artists I know who are any good WANT to make their own shaders. Especially if it's using some kind of visual system like UE3 or ShaderFX. You don't have to force anyone but I wouldn't hold back high achievers just because some people don't have that kind of ability.

    The trick is to give the pile of sand to an adult not a child. ;-)
  • rooster
    Offline / Send Message
    rooster mod
    I don't care who writes the damn shader as long as it has coloured specular!
    :)

    ps: I tried making a computer game out of sand and I'm sorry I just don't understand how it works. Was it a mistake to put all the sand down my pants? It feels like a mistake.

    pps: that's a lie, I want someone else to write it
  • Mark Dygert
    Your sand should have colored spec... If stuffing it down your pants is how you get there then its worth the pain?
  • rooster
    Offline / Send Message
    rooster mod
    to add something useful ish to the thread :P

    I don't understand how a project would use one main shader? for example, doesn't having transparency in the shader mean extra code? most objects don't need transparency so would you not have a non-alpha shader and one with?

    then what if some objects need normal maps and others don't (hl2)

    is it better to keep switching which shaders you use (if they use less features), or to fill in shader textures with blank dummy maps and use just one?

    edit: actually that might well be going off topic. I mean like per says, I don't think I should have to worry about that question. the way it should work (imho) is we artists say, to make this game look good we need x,y and z. Then the programmers get their heads together on an efficient way to achieve it.. And I can see sometimes if z is maybe unreasonable (we want realtime displacement on every single object) then there may be workarounds or it might get cut. But from the general reaction I can see I don't think coloured spec fits in that band.

    On doing some asking about though, I do think it is probably a deferred shading related issue in my case. Which brings back the performance vs art freedom into question. If the programmers allow us coloured spec, then we *do have to be careful for the sake of performance. In that case, is not allowing us to use it full stop doing what per was talking about, not making performance worries part of our job?
13
Sign In or Register to comment.