• Home
  • Documentation
  • Forum
  • Blog
  • Users
    • Map
    • Userlist
    • Businesses
    • Userpages
    • Connections
  • Contributions
    • All
    • Store
  • Downloads
    • vvvv beta
    • vvvv beta previews
  • Store
Show / Hide Table of Contents

SuperPhysical

Author: mburk
Date: 06 Nov, 2016
Category: effect
Credits:

vux, dottore, catweasel

Download

64bit

9-SuperPhysical.zip
14 Jan, 2021 - 17:29
latest github branch, updated for beta40
8-SuperPhysical.zip
18 Jan, 2019 - 18:21
latest github branch, updated for beta38.1
7-SuperPhysical 2.01.zip
04 Feb, 2018 - 16:29
compatibility with alpha 35.18
6-SuperPhysical 2.0.zip
28 Jan, 2018 - 22:04
5-SuperPhysical 1.01.zip
30 Jun, 2017 - 16:11
bugfix release
4-SuperPhysical.zip
22 Jun, 2017 - 16:18
3-superphong_1.3.zip
08 Apr, 2017 - 10:00
Bugfixing / Refactoring Lights Module
2-superphong_1.2.zip
28 Mar, 2017 - 20:52
new model for light blending; noTile option
1-SuperPhong 1.1.zip
17 Feb, 2017 - 16:59
added VSM Shadows, fixed some spreading issues, fixed alpha
0-superphong.zip
06 Nov, 2016 - 19:55

Description

SuperPhysical is a forward rendering setup and the successor of SuperPhong. It features cook-torrance shading, physically based rendering and image based lighting. The implementation is mainly based on https://learnopengl.com/#!PBR/Theory "focusing on the PBR approach as originally explored by Disney and adopted for real-time display by Epic Games".

Some Features:

  • Physical Based Rendering
  • Metalness workflow compatible to Substance Designer etc.
  • Image Based Lighting
  • VSM Shadows
  • Image Based Refraction
  • Parrallax Occlusion Mapping

Update 2.0:

  • Completely overhauled material and light setup powered by custom VL datatypes
  • New shadow mapping techniques: Exponential Shadow Maps (ESM) and Postfiltered VSM with varying penumbra size
  • Integrated volumetrics
  • Lot's of fixes and performance improvements

Installation: Put the contribution into packs. Check out SuperPhysical help patch for usage scenario. Compatible from Beta 36! All feedback welcome! Have fun!

https://github.com/michael-burk/SuperPhysical

Deferred version needs DX11 pack version 1.3.1.1. Built can be found here: https://www.dropbox.com/s/q62fefiwho5d2am/DX11andDX11girlpower.zip?dl=0

Comments

Comments are no longer accepted.
Please create a new topic in the vvvv beta forum to discuss this contribution.
Noir
06 Nov, 2016 - 22:21

Cool man

motzi
07 Nov, 2016 - 22:44

this is beautiful! thanks a lot!

screamer
08 Nov, 2016 - 15:13

wow, amazing shader, well done ;)

boplbopl
12 Nov, 2016 - 22:05

very cool!

catweasel
22 Nov, 2016 - 18:18

Lovely!

evvvvil
06 Dec, 2016 - 01:50

that's fucking sick bruh!

seltzdesign
12 Dec, 2016 - 10:32

Really like it! Is there a way to spread the texture transform? Right now it is always using the first slice of transforms for all instances of an object.

mburk
12 Dec, 2016 - 13:58

the texture transform is currently not spreadable as it should be. will fix this in next update. for now you could use a TransformTexture effect to scale the textures per instance.

matka
09 Feb, 2017 - 18:21

Does this work in 50beta35 64bit or did I miss something on the install?

mburk
09 Feb, 2017 - 19:32

Should be working in 50beta35. The problem is DX11 1.0, because all Dynamic Buffers are set to "Dynamic" now. If you set them back to "Default" in the Inspector it shoud be working. There is a whole bunch in the light module. Also, new version of Superphong will be out soon.

matka
09 Feb, 2017 - 20:57

Ok, cheers. Looking forward to new version!

vux
09 Feb, 2017 - 22:52

As a side note this has been fixed in 1.0.1 (which is in contrib page already)

mburk
09 Feb, 2017 - 22:58

Cool, thanks for the quick fix!

u7angel
17 Feb, 2017 - 20:22

crazy

graphicuserinterface
18 Feb, 2017 - 07:49

win

Noir
18 Feb, 2017 - 08:50

awesome

matka
20 Feb, 2017 - 18:38

massive! thanks

robotanton
17 Mar, 2017 - 14:36

Wow. Thank you!

mburk
28 Mar, 2017 - 20:58

Version 1.2 The new version has a couple of changes. The light blending has been overhauled a bit. Now all the lights - image based lighting and phong lights - are treated the same way and reflections are blended with the fresnel term. This means, there is no RimLight anymore, but Global Reflection Color, Global Diffuse Color and Material Color. Also there is only one set of fresnel values for everything reflective. See girlpower for how it works. This should feel a lot more natural. Also fixed some bugs and spreading problems. Also new: No tiling mode. This avoids strong repitition of textures by using this code by Inigo Quilez: http://www.iquilezles.org/www/articles/texturerepetition/texturerepetition.htm

Cheers

No Tiling

matka
08 Apr, 2017 - 11:10

Thanks, great work!

eno
10 Apr, 2017 - 15:43

This is a properly shaded teapot.

xxxlalala
27 May, 2017 - 19:06

i am so happy i found this :)

mburk
29 May, 2017 - 08:26

Stay tuned for proper PBR update (Unreal Engine implementaion) with cook-torrance, parallax occlusion mapping, you name it..

nodeforum
22 Jun, 2017 - 17:19

wow

Noir
22 Jun, 2017 - 19:45

cool

hrovac
23 Jun, 2017 - 06:23

great thx!!

small Thing: i have to use an old Version (34.2) - and maybe that is why in the directionalLight-module is a red node(select transform is missing..) what needs to be connected to have it working? - it is connected to the ViewProjection Shadow.

mburk
23 Jun, 2017 - 07:13

Hi hrovac, simply replace the node with a Select(Node). This should be it!

idab
27 Jun, 2017 - 09:30

Great contribution guys!

One question from a shader primer: is there a way to handle the alpha of the shader? I want to hide/make visible some geometries.

Thanks!

mburk
29 Jun, 2017 - 12:41

Hi idab, the alpha channel got a bit neglected. I will bring all features back as soon as possible. It should all work same as the standard shaders then.

letoast
01 Jul, 2017 - 07:45

wooooo!!! this is exactly what i was looking for!!

letoast
02 Jul, 2017 - 22:37

Noticed a problem with the lighting function - it behaves very badly on low poly flat geometry, you can notice the warping as the highlight goes from polygon to polygon.

low poly: low poly wire: high poly: high poly wire:

mburk
04 Jul, 2017 - 16:22

Hi letoast, that's a known limitation. I think it's due to calculating some stuff per vertex. As this improves performance I might not change this, but thanks for reporting!

andresc4
08 Jul, 2017 - 18:38

Wow men this looks amazing! Can I use 360 HDR images for global ilumination ?

mburk
10 Jul, 2017 - 09:46

Well, you can use them for the image based lighting, yes. I would recommend using this tool https://github.com/dariomanesku/cmftStudio for creating Radiance and Irradiance cube maps. See the IBL example for usage scenario.

letoast
18 Jul, 2017 - 12:00

Is there something wrong with the metallic part of the lighting function, because setting the "metallic" to "1.0" and "Global Reflection Color" even to "0.01" of a Value in HSV picker, sets the reflection color to a constantly white lit. Like this:

mburk
19 Jul, 2017 - 09:07

Yep, there is something wrong - I explained this in the workshop also: The "Global Reflection Color" is not really a correct part of the lighting equation, but somethin additional. i didn't combine this correctly yet, so that's were this bug comes from. If you do your lighting only with IBL and dynamic lights everything should be correct.

If you are brave enough go to superphysical.tfx and replace Line 271 with this Line:

IBL += (saturate(GlobalReflectionColor.rgb * (kS * envBRDF.x + envBRDF.y)) * iridescenceColor);

This will also be fixed in next release.

letoast
19 Jul, 2017 - 15:29

Oh lord, I never thought it would be that simple. I wanted to fix it so at first I started replacing variables one by one with constants to see what each one does. Then I was thinking that something might be wrong in the CookTorrance implementation, so I cross referenced an opengl implementation of it with yours, but I saw yours was ok and after that I kind of gave up... Didn't know it was the kD causing the problems, but going through all of the code out of nothing, just to remember what all of the variables stand for was also not something I was prepared to do :D

As far as I understood it you just wanted to colorize the cubemap with the global reflection color?

Thanks for the quick reply, though!

mburk
20 Jul, 2017 - 09:52

Yeah, sorry for sending you on a bughunt there. Actually this fix works for now, but is not totally correct, as any reflections of a metal surface should be colored as the material is. So e.g. only blue is reflected. I will integrate this in the next version.

guest
10 Aug, 2017 - 10:46

Hello guys,

A link to my question on the forum about using multiple assets in SuperPhysical

https://discourse.vvvv.org/t/superphysical-multiple-assets/15528

guest
05 Sep, 2017 - 16:34

First attempt to make an Assets Manager for SuperPhysical here: https://discourse.vvvv.org/t/superphysical-multiple-assets/15528

StiX
08 Nov, 2017 - 11:35

i really miss emission in here, i am making it by blending another pass into the pipeline but it would be great to have it as a base feature

mburk
08 Nov, 2017 - 16:09

Good call, already implemented this in my dev version.

StiX
17 Nov, 2017 - 14:57

thoughts and prayers with you!

seltzdesign
19 Dec, 2017 - 14:25

Trying to understand the IAtt values in Superphysical and why white lights increase saturation and not brightness: https://discourse.vvvv.org/t/superphysical-lights-increase-saturation-not-brightness/15940

veevee
29 Jan, 2018 - 11:44

Hi Mr. Burk, awesome stuff, really! Wouldn't it make sense to also save a name for each material in the new VL (yay!) object? In case you have a lot of materials that you want to use in different places..

mburk
29 Jan, 2018 - 17:50

thanks and yes, that's definitely on my list. will be especially important for instancing to have a name or an ID.

matka
29 Jan, 2018 - 18:34

Wow, mburk, the update looks amazing and comes right in time. Thanks for your massive work!

seltzdesign
31 Jan, 2018 - 12:55

mburk the update looks great and from the new image I can tell that you solved the saturation issue already. Will give it a spin and integrate into our patch once I get the chance. Just instancing left now, but seems like that's on the horizon.

tgd
02 Feb, 2018 - 19:47

for me this works with vvvv_50alpha35.15_x64 but i get a red error about craftlie when trying to start with the newest alpha vvvv_50alpha35.16_x64. looks great btw! cheers :)

vvvv_50alpha35.16_x64:

tonfilm
02 Feb, 2018 - 22:27

hello @tgd and @mburk

the nodes seem to reference the old CraftLie ones, they have moved into the CoreLib and are now called ToBufferDescription. Please update accordingly, thx!

andresc4
03 Feb, 2018 - 02:09

@tgd try a clean install with beta36-release-candidate I had the same problem, that solved

mburk
04 Feb, 2018 - 16:30

uploaded the fix for alpha 35.18

tonfilm
04 Feb, 2018 - 17:27

great, thanks a lot!

StiX
05 Feb, 2018 - 11:48

i cant run it, its crashing every time i try to open help file 35.8, clean install not helping

mburk
05 Feb, 2018 - 13:50

hey @StiX. it's only working with latest alpha because of new VL features atm.

StiX
05 Feb, 2018 - 14:17

ah i overlooked that, runs maxed 120 even with volumetrics and multiple lights, really good

andresc4
07 Feb, 2018 - 13:43

I have this problem that is not contribution related, but maybe you can help me out Im would like to animate the light rotation as if they were a DMX moving head, but the rotation point of the light is not the light source Its rotating from the X, what would be the best way to fix that ?

mburk
08 Feb, 2018 - 14:50

I think you have to set distance to 0. Can't check atm.

andresc4
19 Feb, 2018 - 03:54

@mburk you were right thanks Did you saw the GGX shader that flux posted here https://discourse.vvvv.org/t/community-coding-the-new-vvvv-standard-shader/15188/34 ? That way of dealing with Ligths buffers looks awesome. Will you add DOF on the next release?

nilsfrid
20 Feb, 2018 - 12:56

Thanks! Awesome!

Johannes Merkt
25 Apr, 2018 - 14:05

Thanks for this great Shader!

Unfortunatly I have a Problem with it. Every Light Source casts a black dot on the my objects.

Sphere

It always occures in the center of the light spot. How can I fix this?

mburk
27 Apr, 2018 - 13:53

Are you using a custom model? Looks like the normals are inverted.

Johannes Merkt
03 May, 2018 - 13:55

No, this is the Default Sphere out of vvvv, but with custom models i have the same Problem too, no matter what i Change with the normals.

mburk
04 May, 2018 - 19:00

strange..can't reproduce this here. make sure to use the latest version of the contribution from github. if the problem persists, please open a forum thread and share your patch.

io
06 May, 2018 - 12:05

Hallo, would it be possible to use a Dynamic Buffers to feed the transformations of the objects instead of CPU transforms? tx Simone

nissidis
06 May, 2018 - 16:58

@io absolutely, combine this great contr with another great contr known as "instance noodles" ;)

mburk
06 May, 2018 - 17:15

@io the easiest way would probably be to use instance noodles, do all the geometry magic and then use "Merge Geometry" to create a single mesh out of it. Deferred version of superphysical that also has a module for instancing is coming up, but using instance noodles like that will probably also do the job.

io
06 May, 2018 - 17:50

Yes, ok I was taking the wrong approach (trying to work with the transformation input to the shader), of course it is way easier to multiply the geometry and then feed it, thanks.

KT100_
23 May, 2018 - 10:34

Red nodes Preview window

I got these red nodes. Is there a way for fixing them? Also my preview window is like tinted grey. I'm working on 50beta36_x64 version.

mburk
24 May, 2018 - 09:34

Hi, seems like the volumetrics isn't quite working for you. That's probably why the preview looks tinted..the blend node is just adding white. You could just not use the volumetrics and everything shoudld be fine. You can also try the newest version on github and see if that fixes it for you. Proper update to upload here is still in the making..

https://github.com/michael-burk/SuperPhysical

io
05 Jun, 2018 - 15:48

Ok now that I have merged the geometries, how do can I set a single color per instance? Got lost there..

mburk
05 Jun, 2018 - 18:46

hey. that's not really possible in that workflow. once you have merged it, you can only assign a single material. you could check out the WIP deferred version with instancing on github. but it's not quite ready for release yet. will upload it here, as soon as it is usable. that version will allow you to assign different materials to single instances.

Radion
24 Jun, 2018 - 18:56

My problems already start by opening fbx and collada files in the SuperPhysical help patch. The geometry always seems to be invisible. The only change happens in the background from file to file it gets brighter oder darker. (The geometry was created in blender and works fine with the dx9 geometry setup)

mburk
25 Jun, 2018 - 08:14

hey @Radion, please open a forum thread and share your patch and fbx file if possible. Generally there is no show-stopper here. I'm using imported geometry all the time.

io
04 Jul, 2018 - 16:57

I have tried https://github.com/michael-burk/SuperPhysical/tree/Deferred , spreading either ALbedo Color or Textures (thus creating multiple materials) does not allow to index the color of each instance. Is that the right approach? tx S.

mburk
04 Jul, 2018 - 21:00

hey. have a look in the subpatch "GBUFFER - from instanced geometry". there you will find a material ID buffer, which specifies what material to use per instance. sorry - not really documented at all - yet. The material IDs buffer VL module is just an experimental feature at the moment. it allows you to select a material in the material visualizer when pressing "m" and then applying that material to any object in the active renderer by again pressing "m". but as I said, that's just some playful experimentation..just use the buffer directly.

mburk
04 Jul, 2018 - 21:03

Also make sure to use this branch: https://github.com/michael-burk/SuperPhysical/tree/Deferred+Forward

io
05 Jul, 2018 - 14:52

Which version of DX11 are you using?

mburk
05 Jul, 2018 - 14:53

latest one. please open forum thread, that would make discussion easier.

ggml
07 Aug, 2018 - 11:53

@mburk regarding the deferred branch, is the getslice(texturearray to array) somewhere to be found ? thanks

mburk
07 Aug, 2018 - 12:36

hey. it should be in the latest dx11 version.

tonfilm
18 Jan, 2019 - 18:23

since everyone seems to have problems, i've updated the zip file to contain the latest github branch and tested it with beta38.1

mburk
18 Jan, 2019 - 19:20

Thanks for that tonfilm. I also merged the fix and also merged everything to the master branch on github. This version also includes an implementation of ForwardPlus (by kopffarben)). Have a look at the example. Speaking of which: At the moment there are only quite overloaded help patches. So if anyone feels like contributing some easy examples - please do so on github.

synth
25 Feb, 2019 - 16:14

Hey! I am probably missing something, but do you have any advice regarding managing transforms on imported meshes with multiple subsets. It gets confusing really fast with massive spreads for the transforms. Also material management. I started working on something like a material manager that writes xml files but it is going to be a long way till (if) it ever gets done. Mostly due to my limited skills in vvvv.

Thanks!

mburk
26 Feb, 2019 - 10:10

hey. there is no real solution to conveniently handle those situations. the best way would be to finish VL.GLTF implementation. I was working on an adapter, but have no time to pursue this atm. I usually don't work with complex hierarchies of importet assets, but would recommend to merge as much geometry as possible, for example with the instance noodles merge node. right now material handling is done the oldschool way and works by usual spreading. the deferred version already has the concept of material IDs, which are assigend to different meshes. check out the help patch and press "m" in the material preview to select a material. then press "m" and click a mesh on the renderer to assign it. this is only a proof of concept implementation atm. to manage materials you can have multiple material nodes and cons them together, to not have total spreading chaos.

synth
05 Mar, 2019 - 12:22

mburk Thank you for the input. To be completely hones it never occurred to me that i can merge material nodes ... As for the geometry i suspected that there is a node to merge geometries, but i never found it as it turned out my noodles pack was trowing an error due to missing stuff. Reinstalled and all works now.

Thank you again for the awesome work!

manuel
29 Apr, 2019 - 02:53

@mrburk hello

on last version, should aspect ratio be added here ?

tgd
09 Aug, 2019 - 15:32

Hi i was playing with the new? planar reflection and have a little issue when used with render state nodes. As soon as i connect a blend node, the reflection seems to have wrong culling. The blend node does not even need to be set to a mode, just disabled. Can i fix this myself somehow?

mburk
15 Aug, 2019 - 10:31

hi tgd. the problem seems to be how the render state node in the planar reflections module overrides the render state upstream. just add your blend in the module like that:

tgd
15 Aug, 2019 - 13:13

hi thanks, just tried it but this does not solve the culling issue for me. does this work for you? i want to be able to set alpha for the geometry and need a blend node on the superphysiscal module. the alpha blending works just fine, it is just the wrong culling in the reflection

mburk
20 Aug, 2019 - 07:06

hi. yes, tested and works for me. make sure to only use the blend at that point and not additionally on the SuperPhysical node upstream. If problem persists, please move to forum.

mrboni
29 Aug, 2019 - 11:36

Issues using latest alpha - (VL 0624)

VL nodes are red - 'AsyncHelpers.Run method threw an exception.'

synth
01 Sep, 2019 - 12:33

mrboni Heya I am playing around with a few patches i made based on Superphysical and i do have a question: What would be the best way to give my object dynamic textures for lets say Albedo, roughness and so on? In the help patches there is a ToPointer node that gets a bang on the start but how can i do it for every frame?

Thanks!

manuel
08 Oct, 2019 - 06:09

Hi @mburk , is planar reflection only working for the non Instanced version ?

BTW, whats the difference between instanced IID and deferred? I mean, whats the better performance approach ?

manuel
18 Oct, 2019 - 23:52

mburk any hint or what im doing wrong ?

mburk
21 Oct, 2019 - 16:53

Hi manuel. Should work fine even with the instanced version. You might need a SuperPhysical node for the reflective plane and another one which supports instancing. I just tried this and it works great: Open instancing example. Alsp open SuperPhysical (SuperPhysical) helppatch with planar reflection. Send layer from instancing example to help patch and connect layer before all other layers -> reflection of instanced elements. If it is still not working please open forum thread. Also IID is for compatibillity with instance noodles. Differences in performance should be neglectable.

manuel
25 Oct, 2019 - 19:50

mburk thanks a lot

another question, im not able to see refraction working. I ve been trying turnin on and off all other textures/parameters but it doesnt seem to work

mburk
26 Oct, 2019 - 15:14

Hi manuel, I cannot reproduce the refraction issue. Please move these questions to the forum, I think it's more convenient to discuss there. Also please attach an example patch - this would help figure out the problem. My guess is, that refraction is not configured correctly in the material, but let's see.

  • Improve this Doc

© 2020 by vvvv group. Imprint | Privacy Policy.
Thanks to DocFX for building this website. Analytics by Plausible.

Back to top