I've not read the entire thread, so I might be off here. But you're using lightmaps, right? Doesn't that pretty much defeat the purpose of limiting yourself to a small texture?
I've not read the entire thread, so I might be off here. But you're using lightmaps, right? Doesn't that pretty much defeat the purpose of limiting yourself to a small texture?
You still get a memory saving by using fewer textures. Since you need the lighting data no matter what you're doing.
Snader: Using less memory and fewer textures is NEVER a waste :]
krateos: I will :]
Playing around a bit, added a bunch of new props, and did some optimsation, nothing to really show off by itself really. Im gonna add some traffic in the city aswell, right now its palceholder boxes flying around, but ill get around to building real spacecars instead. Also added a car that drives by close to the window, MMM SPOTLIGHT AND LENSFLARES! xD
I want to steal you brain and use it for myself. I'm curious to know how much time you put into this on a daily basis and how much time have you invested into it so far?
Using less memory and fewer textures is NEVER a waste :]
Well, sure, I get that. But at this point you use a 512x256 diffuse/normal spec (which is awesome) and what seems to be a 256² for just the microscope lightmap. So in the end, going down from 1x1024² in textures and 10x1024² in lightmaps, to 1x512x256 in textures and 10x1024² in lightmaps gives very little reward for a lot of work.
Maybe it's more effective to look into painted lightmaps and UV them yourself? Or to try and optimize the geo for vert lighting?
Not to say what you're doing is very impressive and inspirational, but it feels somewhat dampened by using lightmaps at the end.
also, it could be considered a waste of time to optimize too much
Well, sure, I get that. But at this point you use a 512x256 diffuse/normal spec (which is awesome) and what seems to be a 256² for just the microscope lightmap. So in the end, going down from 1x1024² in textures and 10x1024² in lightmaps, to 1x512x256 in textures and 10x1024² in lightmaps gives very little reward for a lot of work.
Maybe it's more effective to look into painted lightmaps and UV them yourself? Or to try and optimize the geo for vert lighting?
Not to say what you're doing is very impressive and inspirational, but it feels somewhat dampened by using lightmaps at the end.
also, it could be considered a waste of time to optimize too much
The lightmap is a separate UV channel, unless you are texturing using unique UVs. If we are to follow your logic, game companies must be stupid to spend so much time optimizing textures and building game levels modularly...
toxic_h2o: hehe, I havent really kept track of the hours, i do put quite some time into it. Assets are very fast to make, alot of time was spent on thinking and trying to get inspiration for what to build, and how to work around stuff. I have been trying out alot of new stuff I havent tried before, outside of what im doing with the tiling etc.
Snader: The Lightmap for the microscope is a 64 or 32 texture, and rendered at 50% quality, so it doesnt look nearly as good as it will be when baked at production quality. the largest lightmap is a 256*256, which is for a huge segment of floors combined together. Also lightmaps are not compressed the same as normal dx1 and dxt5 textures, and I can optimise them down to 25% of their current size with a few clicks if needed.
Yes, it can definately be considered a waste to optimise too much, that is why I do this. I have learned some new tricks, explored new dead ends, learned alot. Also, if there is one point where you should spend optimisation, its where the benefits are the largest. Now I have built probably 50 assets with the same texture, the pipeline for building new assets is superfast. I dont need to import new textures, I dont need to create new shaders. Every new trick and optimisation I do now affect 50 assets, instead of just one. Every megabyte is worth alot. Every day of work is worth alot. If you can consistently free up a few 1k-textures from the environments and they look the same, then suddenly your main char can have a 2k texture instead of a 1k, etc.
Impressive!
I understand you have your own shader to be able to separate each channel.
So a texture made in photoshop you have the r-channel using a metal texture, g-channel using the occlusion, b-channel for decals and the alpha is used for the decals transparency.
Then another texture is used for the normal map, but I don't follow precisely. The normals are baked and in photoshop you edit the blue channel, painting it black in certain areas and I don't see why?
On top of this you use lightmaps for each model?(I'm not fully aware of how they are done) but I understand they need another UV-set as you unwrapped them without overlay.
So all this can be accomplished with one shader?
or do you have copies of one shader using the same textures, but change the lightmaps for each model?
Aren't the colors in the scene done as vertex color?`if not, please explain.
This is fantastic! Not only is the scene outstanding, but the approach and constraints are fascinating too!
I understand the channels and maps part, but utilizing the different UV channels and the material expressions involved in UDK is what I cant quite grasp. Would you be able to post a preview of your material (even if its not quite done? :poly136:) and how that applies to an example mesh in the SM editor?
This would be of great help! Please and thank you!
The Dag Node: yes, more or less. But I also removed the decal alpha and put the monitor-textures there instead, and made the decalalfa in the b-channel aswell. The blue channel is used to separate the metal from the flat surfaces, so that I can use parameters for specular, colors, etc, instead of having dedicated maps for that. And yes, all models have lightmaps, since the lighting is baked. All this is one shader, more or less, im using shaderinstances with colorvariables that I can change how i want, so I can get any color-combination i want. I also added settings to have a third color aswell. I am not using vertex color, except for the traffic.
shabba: I will post something soon :]
Long time no update! Added some plants! And made the windows into a animatable material so i can get a cool effect when the windows morph from being pitch black to the state they are in the pictures. Need to sort out some issues with them though, like the shadows. Updated the traffic and city outside, still not done yet, looks alot better in motion though :] will post some videos as soon as I get my internet back, haha ^^
Also haxxed the textures a bit, normalmap-compression was to high so I changed to another compression and rebuilt the shader a bit. Also added some cables, postitnotes, etc. Lots of small stuff all over. Right now the scene looks a bit dark, specially when its static.
As per usual, you don't disappoint, Snefer - fantastic work!
I've even learnt a few things just by reading this thread (which seems to be the norm' when looking at your works :P).
I look forward to a snippet of your material tree to better understand how you get such great variation from essentially black and white base texture channels.
Thanks for explaining!
I understand most of it now, but it's quite crazy optimized
I now understand how the blue channel in the normal map is used. Btw, how
So you just plug in the channels to the shader and have the blue color derive from the shader to mix up with the red and green from the texture. Then you are free to use the blue channel, in this case to materials(but I don't understand this presicely). The materials are controlled by black and white values? So for instance, black means matte and white means shiny?
I reread all posts again, but I still couldn't understand how you add the color, since not using vertex color. How are the colors applied?
Did you change the grey value in the B-channel to black or are you able to just configure the shader to use the grey value and have the alpha apply itself only to this exact value?
When you started out, did you paint and set up the textures as normally in photoshop, then copied each image into it's corresponding channel in a new document? It seems a bit awkward to work with otherwise, if not, please explain.
Well, that's all for now. Looks really nice and looking forward to updates. I was wondering though, this shader, is it something one could get their hands on? I tried some mental mill 2 years ago, but I wouldn't remember much. I guess it's a good reason to pick it up again.
Alriiighty, finally have internet in my apartment!
The Dag Node: Hmm, my brain is melted right now, so i cant answer all of it, but yes, i work with the channels in separate documents, then just copy them over to the .tga that is imported into the engine.
Also this scene will most likely be released in some form aswell :] So people can look/laugh/learn etc :]
Oh yeah, added some more stuff to the scene, will record some footage when my brain is reassembled : D
Congrats to your internet
I see.
Wawaweewaa, that would be awesome of you to release that. perhaps as a christmas gift to all of us =D
Nice update. Just want to play around with that shader and build modular pieces!!
Yeaaa, just a really crappy commpressed video of me running around the enviro a bit. HORRIBLE compression, but atleast gives a bit of sense of the traffic, the animated windows etc :]
Been great watching this thread. You've made some really smart choices with so many of your props/infrastructure and have done a great job bringing it all together in a pretty well constructed scene. I know it's not your goal with this exercise but I'd love to see this scene done without using real time reflections and instead cheating it with cube maps/environment maps as that would really accentuate how optimized this scene is, and I can't imagine there would be much loss to the quality.
I also think you could tone down/kill the reflections in areas as such as the floor. The roof and walls both look great because they are defines so well with shape and colour, I personally find the reflections in the floor to take away from that and they become a distraction more than anything else. Perhaps adding colour to the sides of the floor instead and getting rid of the reflection altogether.
This is a very minor gripe, as this is stellar work. There is a lot to take from this thread and I'd love to see you release the map.
paulsvoboda: thanks : ) I am keeping the scenecapture-actor for the floor, but the cubemap for the walls etc are baked of course. I klled alot of the reflections now, been tweaking lighting and shaders alot now that i am in the end-phase.
Been populating the scene alot more with props now, adding some props here and there, some stuff where the rooms were empty before etc. Have a few tweaks left before Im done with it, just a few props left, also gonna TRY to squeeze the skybox into the texture aswell, hahaha Oh, managed to squeeze in lights for the buildings aswell! :]
Thanks :] Yeah, i already have on for when the car drives by, but would like to tweak that and add more, Still think the rendering can be improved quite a bit, and I havent even touched postprocessing yet. : )
Looks pretty cool! Not really digging all the 90 degree angles everywhere though, specially where the walls connect with the ceiling. You could try to break them up a little! The scale also seem a bit off, could you place some character meshes in the scene just so we could get a better idea on that?
I did a quick & shitty paintover with some ideas on how to improve the scale:
Minos: Yeah, i hear ya. The scale is pretty spot on though I think, I used centimetres for measurments, so everything should be real-world scale. Now it was so long ago I read in the thread so I forgot to add a character and show next update! I added some more shapes after your feedback, they are in another corridor that I havent shown yet, heh : D
Computron: Yup! They did indeed! : )
okimoki: thanks! : )
Anyway, more or less done with the enviro now, Needs a tiiny bit of tweaking maybe, and cleaning up some things for download etc... : ) There is alot I could add to it, with postprocessing, heavier shaders and more stuff, but I dont want to go overboard with it, that was never the purpose of this scene. Learned lots doing it though!
This is brilliant! Love your light sources throughout the environment. Makes the scene very interesting. On the first image you either have some bad lightmaps on the cieling near the orangish light or it just needs a production build.
Excellent job though. Really like what you've done with this!
paulsvoboda: thanks man : ] Yeah, I have had some problems with that area, not quite sure why it looks so messy, since this is a production build. Maybe I accidentally set the lightmaprez to low...
Wonderful job, Snefer.
I've been following this for a while and it is an inspiration.
In terms of the project ethos; is all of this super-optimisation improving performance noticeably? Or is there not enough going on in the scene to truly put it to the test?
When you're done, I'd love to see some framerate and memory statistics comparing this scene with a duplicate version that uses unique complex materials from some of your other projects.
The scene uses 1.3 mb of uncompressed texture memory for the entire environment. (not counting the lightmaps or the skydome)
Its kind of hard to estimate how much more it would have used if it was unique instead, but probably 30-40 mb or so.
As for framerate its no gain per se. If it was all unique it would be the same framerate, but if I would have used tiling materials in a less developed fashion I would have had to increase the number of materials and then the framerate would have gone down faster (specially on console) This was mostly a way to minimise texture memory, without having to go down in framerate.
The scene is not heavy enough to bother a normal PC, even an old one. My computer locks the framerate at 120 fps, so... However, the shaders are a bit too expensive for console, aswell as the cubemaps. In terms of object, polycount and texture memory its very cheap.
Nice work man, loved that shiny reflection on the white surface all over. Just one question did you make ur modular pieces with back faces or just planer, cause from the pics its hard to read. Reason i ask is that I am also working on modular pieces with single 1024 sheet, i have to cover large area and with too many pieces. The problem is SEAMS when two perfectly UVW lightmaps pieces come together side by side. The only solution i have seen from UT3 maps and my own is either chamfer the edges on each side inwards to create a cavity (indent) or put some trim piece on top of the two joining point of two pieces.
Dont wann pull ur leg , but I see seams on ur large window pieces when they join. Would b nice to get feedback on that.
but since everything is only using one shader per objects its only one drawcall per object
Is it actually only one draw call per object even though you use two textures in the material? I don't quite understand this fully and i have a bit to write about it in my dissertation.
HAWK12HT: Cant avoid lightmapseams and seams to 100% unfortunately : / But yes, placing seams in places where you already have seams in the mesh/texture is the best way to hide it.
Skillmister/Kbrom12: sure, I can post it. Ill also release the entire thing for download so people can poke around with it, hehe. :P And drawcalls are per material, not per texture : )
Skillmister/Kbrom12: sure, I can post it. Ill also release the entire thing for download so people can poke around with it, hehe. :P And drawcalls are per material, not per texture : )
Awesome!, thats some great news, I can't wait for this, I feel that I will learn so much from this, thank you
Replies
You still get a memory saving by using fewer textures. Since you need the lighting data no matter what you're doing.
When the final udk materials are done, are you showing them to us? :P
krateos: I will :]
Playing around a bit, added a bunch of new props, and did some optimsation, nothing to really show off by itself really. Im gonna add some traffic in the city aswell, right now its palceholder boxes flying around, but ill get around to building real spacecars instead. Also added a car that drives by close to the window, MMM SPOTLIGHT AND LENSFLARES! xD
Well, sure, I get that. But at this point you use a 512x256 diffuse/normal spec (which is awesome) and what seems to be a 256² for just the microscope lightmap. So in the end, going down from 1x1024² in textures and 10x1024² in lightmaps, to 1x512x256 in textures and 10x1024² in lightmaps gives very little reward for a lot of work.
Maybe it's more effective to look into painted lightmaps and UV them yourself? Or to try and optimize the geo for vert lighting?
Not to say what you're doing is very impressive and inspirational, but it feels somewhat dampened by using lightmaps at the end.
also, it could be considered a waste of time to optimize too much
The lightmap is a separate UV channel, unless you are texturing using unique UVs. If we are to follow your logic, game companies must be stupid to spend so much time optimizing textures and building game levels modularly...
Snader: The Lightmap for the microscope is a 64 or 32 texture, and rendered at 50% quality, so it doesnt look nearly as good as it will be when baked at production quality. the largest lightmap is a 256*256, which is for a huge segment of floors combined together. Also lightmaps are not compressed the same as normal dx1 and dxt5 textures, and I can optimise them down to 25% of their current size with a few clicks if needed.
Yes, it can definately be considered a waste to optimise too much, that is why I do this. I have learned some new tricks, explored new dead ends, learned alot. Also, if there is one point where you should spend optimisation, its where the benefits are the largest. Now I have built probably 50 assets with the same texture, the pipeline for building new assets is superfast. I dont need to import new textures, I dont need to create new shaders. Every new trick and optimisation I do now affect 50 assets, instead of just one. Every megabyte is worth alot. Every day of work is worth alot. If you can consistently free up a few 1k-textures from the environments and they look the same, then suddenly your main char can have a 2k texture instead of a 1k, etc.
I understand you have your own shader to be able to separate each channel.
So a texture made in photoshop you have the r-channel using a metal texture, g-channel using the occlusion, b-channel for decals and the alpha is used for the decals transparency.
Then another texture is used for the normal map, but I don't follow precisely. The normals are baked and in photoshop you edit the blue channel, painting it black in certain areas and I don't see why?
On top of this you use lightmaps for each model?(I'm not fully aware of how they are done) but I understand they need another UV-set as you unwrapped them without overlay.
So all this can be accomplished with one shader?
or do you have copies of one shader using the same textures, but change the lightmaps for each model?
Aren't the colors in the scene done as vertex color?`if not, please explain.
Thanks and keep it up!
I understand the channels and maps part, but utilizing the different UV channels and the material expressions involved in UDK is what I cant quite grasp. Would you be able to post a preview of your material (even if its not quite done? :poly136:) and how that applies to an example mesh in the SM editor?
This would be of great help! Please and thank you!
shabba: I will post something soon :]
Long time no update! Added some plants! And made the windows into a animatable material so i can get a cool effect when the windows morph from being pitch black to the state they are in the pictures. Need to sort out some issues with them though, like the shadows. Updated the traffic and city outside, still not done yet, looks alot better in motion though :] will post some videos as soon as I get my internet back, haha ^^
Also haxxed the textures a bit, normalmap-compression was to high so I changed to another compression and rebuilt the shader a bit. Also added some cables, postitnotes, etc. Lots of small stuff all over. Right now the scene looks a bit dark, specially when its static.
I've even learnt a few things just by reading this thread (which seems to be the norm' when looking at your works :P).
I look forward to a snippet of your material tree to better understand how you get such great variation from essentially black and white base texture channels.
I understand most of it now, but it's quite crazy optimized
I now understand how the blue channel in the normal map is used. Btw, how
So you just plug in the channels to the shader and have the blue color derive from the shader to mix up with the red and green from the texture. Then you are free to use the blue channel, in this case to materials(but I don't understand this presicely). The materials are controlled by black and white values? So for instance, black means matte and white means shiny?
I reread all posts again, but I still couldn't understand how you add the color, since not using vertex color. How are the colors applied?
Did you change the grey value in the B-channel to black or are you able to just configure the shader to use the grey value and have the alpha apply itself only to this exact value?
When you started out, did you paint and set up the textures as normally in photoshop, then copied each image into it's corresponding channel in a new document? It seems a bit awkward to work with otherwise, if not, please explain.
Well, that's all for now. Looks really nice and looking forward to updates. I was wondering though, this shader, is it something one could get their hands on? I tried some mental mill 2 years ago, but I wouldn't remember much. I guess it's a good reason to pick it up again.
Cheers dude, SK
The Dag Node: Hmm, my brain is melted right now, so i cant answer all of it, but yes, i work with the channels in separate documents, then just copy them over to the .tga that is imported into the engine.
Also this scene will most likely be released in some form aswell :] So people can look/laugh/learn etc :]
Oh yeah, added some more stuff to the scene, will record some footage when my brain is reassembled : D
I see.
Wawaweewaa, that would be awesome of you to release that. perhaps as a christmas gift to all of us =D
Nice update. Just want to play around with that shader and build modular pieces!!
[ame="http://www.youtube.com/watch?v=YyUWCOlOxoo"]ScifiLab WIP - YouTube[/ame]
I also think you could tone down/kill the reflections in areas as such as the floor. The roof and walls both look great because they are defines so well with shape and colour, I personally find the reflections in the floor to take away from that and they become a distraction more than anything else. Perhaps adding colour to the sides of the floor instead and getting rid of the reflection altogether.
This is a very minor gripe, as this is stellar work. There is a lot to take from this thread and I'd love to see you release the map.
Been populating the scene alot more with props now, adding some props here and there, some stuff where the rooms were empty before etc. Have a few tweaks left before Im done with it, just a few props left, also gonna TRY to squeeze the skybox into the texture aswell, hahaha Oh, managed to squeeze in lights for the buildings aswell! :]
Maybe add some big-ass lensflares mass-effect-style? You could do those procedurally stretching the sphere mask.
I did a quick & shitty paintover with some ideas on how to improve the scale:
Sooo, where are the zombies??
Computron: Yup! They did indeed! : )
okimoki: thanks! : )
Anyway, more or less done with the enviro now, Needs a tiiny bit of tweaking maybe, and cleaning up some things for download etc... : ) There is alot I could add to it, with postprocessing, heavier shaders and more stuff, but I dont want to go overboard with it, that was never the purpose of this scene. Learned lots doing it though!
Excellent job though. Really like what you've done with this!
paulsvoboda: thanks man : ] Yeah, I have had some problems with that area, not quite sure why it looks so messy, since this is a production build. Maybe I accidentally set the lightmaprez to low...
I've been following this for a while and it is an inspiration.
In terms of the project ethos; is all of this super-optimisation improving performance noticeably? Or is there not enough going on in the scene to truly put it to the test?
When you're done, I'd love to see some framerate and memory statistics comparing this scene with a duplicate version that uses unique complex materials from some of your other projects.
Its kind of hard to estimate how much more it would have used if it was unique instead, but probably 30-40 mb or so.
As for framerate its no gain per se. If it was all unique it would be the same framerate, but if I would have used tiling materials in a less developed fashion I would have had to increase the number of materials and then the framerate would have gone down faster (specially on console) This was mostly a way to minimise texture memory, without having to go down in framerate.
The scene is not heavy enough to bother a normal PC, even an old one. My computer locks the framerate at 120 fps, so... However, the shaders are a bit too expensive for console, aswell as the cubemaps. In terms of object, polycount and texture memory its very cheap.
Dont wann pull ur leg , but I see seams on ur large window pieces when they join. Would b nice to get feedback on that.
Are you able to show the final material setup?
Also
Is it actually only one draw call per object even though you use two textures in the material? I don't quite understand this fully and i have a bit to write about it in my dissertation.
I agree
That would be amazing if you can show that
Skillmister/Kbrom12: sure, I can post it. Ill also release the entire thing for download so people can poke around with it, hehe. :P And drawcalls are per material, not per texture : )
Awesome!, thats some great news, I can't wait for this, I feel that I will learn so much from this, thank you
[ame]http://www.youtube.com/watch?v=FGB-FnpNHO4[/ame]
Just one small thing, in the end of the video those wheeled tables are a bit above the floor so they appear to be floating in air.