Jump to content

PBR: Principles, Practice, and Prepwork


Azaezel

Recommended Posts

  • Replies 164
  • Created
  • Last Reply

Top Posters In This Topic

Adding something in the ao .g channel and adjusting gamma, bright, contrast...

Also took the resolution for DefaultCubeDesc data block to 1024.

Rez = 512 looks almost as good with lower fps impact.


I should probably create a pbr screenies thread instead of spamming this one with pics :?:

Hard to resist ;)


http://i1260.photobucket.com/albums/ii567/aurobooth/t3dpbr_zpsjtwdrs8w.png

Link to comment
Share on other sites

@Chelaru: mostly because I've got the artistic talent of a wookie and the memory of a gadfly. Had a hand-converted composite map before this latest rebuild, but looks like I forgot to upload it. Does bring up a point...


@koros: Don't have bitmap2material this end, just substance designer for pipeline matching... It'll be a bit tedious, but want to run the stock textures through yours and see what it makes of em?

Link to comment
Share on other sites

@Chelaru: mostly because I've got the artistic talent of a wookie and the memory of a gadfly. Had a hand-converted composite map before this latest rebuild, but looks like I forgot to upload it. Does bring up a point...


@koros: Don't have bitmap2material this end, just substance designer for pipeline matching... It'll be a bit tedious, but want to run the stock textures through yours and see what it makes of em?

 

I'm sure I can find the time to run a few of 'em through.


Busy time ahead with the kids/school starting so bear with me


:)

Link to comment
Share on other sites

For example, you could make the guns from torque use PBR. And then the player caracter.

 

Yup.

Working on that now but...warning... I'm no artist.


For now it's a matter of running the texture atlases for the player, guns and maybe some of the other objects through Bitmap2Material.

Won't be perfect but should give an idea of what it could look like.


The right way to do it would involve something like Substance Painter where you import the mesh

and can setup layer masks for each roughness/metallic area etc.


This is just for Torque3D demos though since everyone will want to produce or acquire art specific to their game.

Link to comment
Share on other sites

That and a second pair of eyes on the pipeline. The point that's been stressed to me is it's intended to make asset creation *less* of a pain in the rear. So hitches like bitmap2material vs substance designer smoothness/roughness inversion are definitely the kinds of things we'd need to track...

Link to comment
Share on other sites

For example, you could make the guns from torque use PBR. And then the player caracter.

 

Yup.

Working on that now but...warning... I'm no artist.


For now it's a matter of running the texture atlases for the player, guns and maybe some of the other objects through Bitmap2Material.

Won't be perfect but should give an idea of what it could look like.


The right way to do it would involve something like Substance Painter where you import the mesh

and can setup layer masks for each roughness/metallic area etc.


This is just for Torque3D demos though since everyone will want to produce or acquire art specific to their game.

 


I think it would look much better then what we have now. Add some images please.

Link to comment
Share on other sites

For example, you could make the guns from torque use PBR. And then the player caracter.

 

Yup.

Working on that now but...warning... I'm no artist.


For now it's a matter of running the texture atlases for the player, guns and maybe some of the other objects through Bitmap2Material.

Won't be perfect but should give an idea of what it could look like.


The right way to do it would involve something like Substance Painter where you import the mesh

and can setup layer masks for each roughness/metallic area etc.


This is just for Torque3D demos though since everyone will want to produce or acquire art specific to their game.

 


I think it would look much better then what we have now. Add some images please.

 

Still a bit of work to be done. Patience. :D

Link to comment
Share on other sites

That and a second pair of eyes on the pipeline. The point that's been stressed to me is it's intended to make asset creation *less* of a pain in the rear. So hitches like bitmap2material vs substance designer smoothness/roughness inversion are definitely the kinds of things we'd need to track...

 

Yeah. A bit of work left to do on the pipeline, that's for sure.

But the results are definitely pretty when it works. :)


Character maps

I'm working on it but not quite yet.

Metallic seems to be a bit strong, probably my maps.

Played around with png + dds formats, inverted rough, swapped r+b channels etc.


I'll try a few more variations on the rough/metallic maps.

Gotta put some time in this week on my mobile project so might be a few days.


https://www.dropbox.com/s/yeczql902o0dgh2/base%2Bnormal.png?dl=0

https://www.dropbox.com/s/lh009yaxopw3hhb/rough%2Bmetal.png?dl=0


Cheers

:D

Link to comment
Share on other sites

I started looking at setting up some substance designer template graphs that people could use to quickly convert existing textures into 'fairly close' baselines. From there you'd tweak it to be perfect.


I figure having a breadth of them to cover most of the general material types you'd get would be most useful, and anything REAL specific would still be up to the artist.


So in effect, it'd look like this:


http://ghc-games.com/public/PBRizer_test.png


You'd open up the template you figure is closest to the texture you're trying to convert, such as 'concrete' or 'dirt', and have a simple graph like that. It uses a node that functions off the bitmap2material stuff, so you'd drag-n-drop your texture into the graph, link it to the B2M node, and it'll generate maps for Torque's PBR setup.


So it'll generate a albedo color map, normal map, and the PBR map(roughness, metalness and ambient occlusion, in the appropriate channels).


Then tweak the B2M node's outputs until your happy, or you'd just export the maps and then they're ready to be used in the PBR build's materials.


Sound like a decent approach to you guys?

Link to comment
Share on other sites

While you two are sorting the good from the ugly, I'll be poking at the bad.


Took a second look at parallax on terrain with the absolute latest merged in: http://i.imgur.com/jU79nCf.jpg


so. story time:

Back when they were cooking it up, they were bound by dx9 vertex to pixel shader variable count constraints (can only add so many in a communications struct)

What that translates to when you're talking base, detail, normal, (macro was added later) was that constrained folks to using just 3 layers per shader-pair.

So what they did was embed a blend value lookup in alpha, and used that to blend the last render onto the next till the layers were done, hence that big chunk

https://github.com/GarageGames/Torque3D/compare/development...Azaezel:PBR#diff-6ae195560dc0b5c40cbbfcafe4a14727R40 did go ahead and make that future-scalable, just haven't gotten around to altering that per-renderer. Figure one of those things we'll up for dx11 and opengl (ogl doesn't have a limit, but for now leaving it with parity).


(see subtask 7: http://wiki.torque3d.org/testing:pre-release-checklist#toc4)

Link to comment
Share on other sites

I started looking at setting up some substance designer template graphs that people could use to quickly convert existing textures into 'fairly close' baselines. From there you'd tweak it to be perfect.


I figure having a breadth of them to cover most of the general material types you'd get would be most useful, and anything REAL specific would still be up to the artist.



You'd open up the template you figure is closest to the texture you're trying to convert, such as 'concrete' or 'dirt', and have a simple graph like that. It uses a node that functions off the bitmap2material stuff, so you'd drag-n-drop your texture into the graph, link it to the B2M node, and it'll generate maps for Torque's PBR setup.


So it'll generate a albedo color map, normal map, and the PBR map(roughness, metalness and ambient occlusion, in the appropriate channels).


Then tweak the B2M node's outputs until your happy, or you'd just export the maps and then they're ready to be used in the PBR build's materials.


Sound like a decent approach to you guys?

@JeffR

Designer Workflow

Sounds good to me.

A consistent workflow without manual channel manipulation and a tutorial for noobs (like me :D) would be great.



@Azaezel

TODO

Still have to sort out the player materials. Not quite right. Maybe my maps or something in the shaders / code.


No Shadows for Point + Spot Lights

In lighting\advanced\gl\pointLightP.glsl it always seems to come in at #ifdef NO_SHADOW whether

shadows are checked or not in the editor. The rough/metal and Cook Torrence look ok , just no shadows.

Was assuming you had them turned off for now.


Not pretending to be up to speed on the PBR branch but I'm working on it. ;)

Link to comment
Share on other sites

@Azaezel

TODO

Still have to sort out the player materials. Not quite right. Maybe my maps or something in the shaders / code.


No Shadows for Point + Spot Lights

In lighting\advanced\gl\pointLightP.glsl it always seems to come in at #ifdef NO_SHADOW whether

shadows are checked or not in the editor. The rough/metal and Cook Torrence look ok , just no shadows.

Was assuming you had them turned off for now.

 

er... elaborate? got http://i.imgur.com/JhkiJ1W.png + http://i.imgur.com/nM1FLFY.jpg with http://i.imgur.com/XQ0ne6Q.png this end... (Ignore the craptastic terrain normals up close. That's due to bad personal generation tools.)


What we did do, to re-itterate is make a second material switch to throw mats in one of two bins (the cast dynamic flag in the second pic) and update em at different rates (tweakable per-light so you can up the static shadow updates for mobile lights by reducing the latency and the like. see static and dynamic refresh entries in the first pic). maybe something playing up with one of the combos there, or something we need to account for in terms of hardware capacities?


(edit, and ignore this mornings commit about a fix for parallax. false-positive on my part from swapping back and forth between it and dev-head. Though the simplification ones might assist with insight into that end of the code-alts)

Link to comment
Share on other sites

@Azaezel

TODO

Still have to sort out the player materials. Not quite right. Maybe my maps or something in the shaders / code.


No Shadows for Point + Spot Lights

In lighting\advanced\gl\pointLightP.glsl it always seems to come in at #ifdef NO_SHADOW whether

shadows are checked or not in the editor. The rough/metal and Cook Torrence look ok , just no shadows.

Was assuming you had them turned off for now.

 

er... elaborate? got http://i.imgur.com/JhkiJ1W.png + http://i.imgur.com/nM1FLFY.jpg with http://i.imgur.com/XQ0ne6Q.png this end... (Ignore the craptastic terrain normals up close. That's due to bad personal generation tools.)


What we did do, to re-itterate is make a second material switch to throw mats in one of two bins (the cast dynamic flag in the second pic) and update em at different rates (tweakable per-light so you can up the static shadow updates for mobile lights by reducing the latency and the like. see static and dynamic refresh entries in the first pic). maybe something playing up with one of the combos there, or something we need to account for in terms of hardware capacities?

 

...or I'm just not paying attention ;)


I'll check point / spot lights out again and put up some pics if my feeble brain can't figure it out.

I am stuck with 2 AMD GPUs so can't test on Nvidia. Tried with OpenGL and DirectX.

Link to comment
Share on other sites

Character Mats

Dropped the "PBR" character material on our pretty cubes just to illustrate the difference with/without DefaultCubeDesc

Base color is washed out without the dynamic cubemap in there.


Logo Cubes: right has DefaultCubeDesc

http://i1260.photobucket.com/albums/ii567/aurobooth/Right-has_DefaultCubeDesc__zpsmafsaula.png



Character Material: right has DefaultCubeDesc

http://i1260.photobucket.com/albums/ii567/aurobooth/Right-has_DefaultCubeDesc_2_zps8nxh7jsc.png


Character Pic from earlier post

http://i1260.photobucket.com/albums/ii567/aurobooth/roughmetal_zps345aitnn.png


Just putting all this stuff up for reference, I know there are other fish to fry.


:D

Link to comment
Share on other sites

Character Mats

Dropped the "PBR" character material on our pretty cubes just to illustrate the difference with/without DefaultCubeDesc

Base color is washed out without the dynamic cubemap in there.


Logo Cubes: right has DefaultCubeDesc

http://i1260.photobucket.com/albums/ii567/aurobooth/Right-has_DefaultCubeDesc__zpsmafsaula.png



Character Material: right has DefaultCubeDesc

http://i1260.photobucket.com/albums/ii567/aurobooth/Right-has_DefaultCubeDesc_2_zps8nxh7jsc.png


Character Pic from earlier post

http://i1260.photobucket.com/albums/ii567/aurobooth/roughmetal_zps345aitnn.png


Just putting all this stuff up for reference, I know there are other fish to fry.


:D

 

Isn't that a bit to reflective ?

Link to comment
Share on other sites

Still hunting the last bits of terrain multipass blend flaw.


Mean time: https://github.com/Azaezel/Torque3D/commit/db3dc279e3e861d091755de07d168ac919b43fb4 = http://i.imgur.com/txO27cH.jpg -> http://i.imgur.com/27WHmXh.jpg


Bonus track:

https://github.com/Azaezel/Torque3D/blob/PBR/Templates/Full/game/shaders/common/lighting/advanced/deferredShadingP.hlsl#L41 to

colorBuffer = diffuseColor + pow(reflectColor,2.2); nets us http://i.imgur.com/toimoW0.jpg without hdr, and http://i.imgur.com/ImlmC3U.jpg with at 0.5 brightness. though re-linearizing the math there doesn't make a whole heck of a lot of sense unless it's getting desaturated someplace along the line...

Link to comment
Share on other sites

Still hunting the last bits of terrain multipass blend flaw.


Mean time: https://github.com/Azaezel/Torque3D/commit/db3dc279e3e861d091755de07d168ac919b43fb4 = http://i.imgur.com/txO27cH.jpg -> http://i.imgur.com/27WHmXh.jpg


Bonus track:

https://github.com/Azaezel/Torque3D/blob/PBR/Templates/Full/game/shaders/common/lighting/advanced/deferredShadingP.hlsl#L41 to

colorBuffer = diffuseColor + pow(reflectColor,2.2); nets us http://i.imgur.com/toimoW0.jpg without hdr, and http://i.imgur.com/ImlmC3U.jpg with at 0.5 brightness. though re-linearizing the math there doesn't make a whole heck of a lot of sense unless it's getting desaturated someplace along the line...

 

Keeping up with you is tough. ;)

Link to comment
Share on other sites

First, thanks a lot for your PBR works Azaezel, I have been quietly following this thread and I think this feature will allow Torque3D to catchup a bit on other engines.


I have start experimenting with your PBR ressource and I have start implementing it in my TorqueLab editor. I'm still just starting and the PBR stuff is quite new to me. I'd like to understand more what I should do with the texture maps (I think some of the previous post will answer some of my interogations). I have some PBR-ready textures from GameTextures.com and I don't think they are 100% compatible with your PBR implementation. I will start tweaking and experimenting with them later but maybe some of you can help me with how I should use those textures. Here's a images showing the various maps included for 1 textures:

http://mud-h.com/miscweb/t3dforum/PBR/MapsSample.jpg

Which should be used as MetalMap and SmoothnessMap? I guess the AmbientOcclusion one is for AmbientOcclusion map and the mask is for the lights mask. About the normal, do the y+ is related to PBR or only a general preference?


And what's the composite map exactly? I'm assuming that it can be use to combine the smoothness, ao and metal maps into one image using the RGB channels, right? So it can be left empty if using single maps?


Now, about TorqueLab, everything seem to work quite right except that the Metalness/Smoothness slider does nothing and the Accumulation Properties neither. (I still need to compare with the standard editor setup, maybe I have missed something...) I will keep investigating how those things works, just let me know if there's something "special" I should be aware of to make it work rights...

Here's a screenshot from my current experiments, it's not perfect but it' a start. (I need to fix the Cubemap setting in my custom material editors to test with cubemaps...)

http://mud-h.com/miscweb/t3dforum/PBR/TLab_PBR_01.jpg


Ok enough for now, I will get up to date with the latest discussion and start experimenting with Substance designer to get better results.

Link to comment
Share on other sites

Closest parallel you'll find to metalness will be gloss (it's how much light is reflected raw) Specular coloration isn't a thing in the adopted system. It's all about either using the albedo, or reflecting, with smoothness/roughness being the amount it's scattered by what are termed in most writeups as microfacets.


So that leaves the breakdown going off of your list as:

Albedo

Normal

If Composite:

Red Chanel = A greyscale mask of either that Specular, or Mask one, denotich what should sharply reflect and what shouldn't.

Green Channel = AmbientOcc.

Blue Channel = Gloss.


And yeah. Due to feedback earlier in the thread, it's an either/or there. Composite or pick per.


For the sliders:

https://github.com/Azaezel/Torque3D/blob/PBR/Templates/Full/game/tools/materialEditor/scripts/materialEditor.ed.cs#L1003-L1004 + https://github.com/Azaezel/Torque3D/blob/PBR/Templates/Full/game/tools/materialEditor/gui/guiMaterialPropertiesWindow.ed.gui#L3241-L3290 would be a sample of the metalness one.


As far as setting cubemaps per material - Don't. Half the point to PBR is having assets cooked up so they react to conditions, like that cubemap setting for levelinfo, or the envVolumes to name a couple quickie ones that are largely set up for simple static application that updates on the fly without having two different variants of material per room, and that's what the older cubemap system was for.


Edit: should note on cubemaps, and roughness/smoothness, the head artist was kind enough to generate a texture with a different color/number combo per-mip, the results of which can be used for testing via: http://i.imgur.com/ai8uGYO.png (note the lack of reflectordesc, and the selected mipCubeMap, the defs and assets of which can be found: https://github.com/Azaezel/Torque3D/tree/PBR/Templates/Full/game/tools/debugger/mipTest with a quickier ryder fake composite http://i.imgur.com/IVGkzkt.png. reason for the mip trick is that's used to aproximate scattering for that blur effect.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...