Announcement

Collapse
No announcement yet.

NVIDIA GameWorks Integration

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by PLASTICA-MAN View Post
    Great job you did here!

    Can you please tell me how did you enable VXGI for flashlight you hold in NightRoomNoLights ? Bceause it is compound light with blueprint.

    Also how did you set up all the surface materials to be able to get VXGI on them? For example, when I click the couch, then on element 0 in the materails, it opens MI_Couch_NOSSS_Mat_Ins which doesn't have VXGI options, when I scroll down, in general tab, I click on MI_Couch_NOSSS_Mat inside it and it opens a tab where I can modify the VXGI options and enable it (Used with VXGI). Is that right?

    Well, even doing so doesn't get me colour bleeding like in your pics and r.VXGI.DebugMode 2 doesn't get me the same results as yours here: https://forums.unrealengine.com/atta...6&d=1424464446 as if VXGI is not correctly enabled in the scene.

    I hope you can tell me the steps that made you reach such results.

    Thank you very much !
    You can go inside flashlight Blueprint and Look for all the Light components and enable VXGI in all of them.
    As for materials, I opened all the master materials and enable VXGI one by one and Sometimes VXGI doesn't update automatically, you may have to disable/Enable PostProcess Volume.
    I am still not getting the right results with daylight "Room" Scene with a single directional light source. Still trying to figure that out.

    Thanks,

    Comment


      Originally posted by Shantaram View Post
      Here are some test I did with Realistic Rendering Demo
      Can I ask how you are getting the reflections to work?
      With r.VXGI.SpecularTracingEnable disabled, I get screenspace reflections - but that only works for high gloss surfaces.
      With r.VXGI.SpecularTracingEnable on, I find that reflective surfaces will only reflect direct light:



      All attempts to use reflection captures or environment maps with specular tracing just gave me completely black reflections...

      Comment


        Originally posted by melak47 View Post
        Can I ask how you are getting the reflections to work?
        With r.VXGI.SpecularTracingEnable disabled, I get screenspace reflections - but that only works for high gloss surfaces.
        With r.VXGI.SpecularTracingEnable on, I find that reflective surfaces will only reflect direct light:



        All attempts to use reflection captures or environment maps with specular tracing just gave me completely black reflections...
        Hmmm, not sure why that is happening. This comment from one of the engineers might be relevant: "we compute VXGI Specular Tracing only for pixels that contain a specular material."

        Comment


          Originally posted by Mike.Skolones View Post
          Hmmm, not sure why that is happening. This comment from one of the engineers might be relevant: "we compute VXGI Specular Tracing only for pixels that contain a specular material."
          Turning on vxgi specular replaces ssr and environmental reflections.
          I tried to bypass this in the code under ScreenSpaceReflections.cpp by changing return false to return true but it still doesn't fix it:

          Code:
          bool DoScreenSpaceReflections(const FViewInfo& View)
          {
          	// NVCHANGE_BEGIN: Add VXGI
          #if WITH_GFSDK_VXGI
          	if (View.FinalPostProcessSettings.VxgiSpecularTracingEnabled)
          	{
          		return true;
          	}
          #endif
          	// NVCHANGE_END: Add VXGI

          I have a request: it would be good if we could be allowed to choose which materials can use SSR and which materials can use vxgi specular. I'm sure there's some way of implementing this within the deferred pipeline.

          Comment


            I managed to get point light shadows working by adding in the following into bool FDeferredShadingSceneRenderer::RenderOnePassPointLightShadows class in ShadowRendering.cpp:

            Code:
            	// NVCHANGE_BEGIN: Add VXGI
            	#if WITH_GFSDK_VXGI
            	if (bVxgiPerformEmittanceVoxelization && bVxgiUseDiffuseMaterials && ProjectedShadowInfo != 0)
            	{
            		SCOPE_CYCLE_COUNTER(STAT_VxgiVoxelizeEmittanceFromDiffuseMaterialsShadowed);
            		SCOPED_DRAW_EVENT(RHICmdList, VXGIVoxelizeEmittanceFromDiffuseMaterialsShadowed);
            
            		RenderForVxgiVoxelization(VXGI::RenderMeshFilter::ALL_MESHES, LightSceneInfo, ProjectedShadowInfo);
            	}
            	#endif
            	// NVCHANGE_END: Add VXGI
            Click image for larger version

Name:	vxgi-shadow1.jpg
Views:	1
Size:	357.1 KB
ID:	1066831

            So it renders the vxgi with shadows for point lights but for some reason doesn't inject the shadow information into the voxelization process. Not sure what its doing differently from spotlight shadows.

            Point light shadow r.VXGI.DebugMode 3:

            Click image for larger version

Name:	vxgi-shadow2.jpg
Views:	1
Size:	402.9 KB
ID:	1066832

            Spotlight shadow r.VXGI.DebugMode 3:

            Click image for larger version

Name:	vxgi-shadow3.jpg
Views:	1
Size:	350.2 KB
ID:	1066833

            [edit] I figured out why it isn't voxelizing the point light shadows - its because that is done separately to the other shadows. The voxelization code needs to read from the point light shadow cubemap texture.
            Last edited by gboxentertainment; 02-21-2015, 10:28 AM.

            Comment


              Originally posted by tim.holm View Post
              Would someone like to try and see how inter-object reflections look? It sound pretty complicated to build a branch so I will wait until I see some more pictures or videos!
              This will only work with multiple indirect bounces (at least 2 bounces).

              It should be pretty straightforward to do this. Just need to revoxelize the scene again after the first bounce.
              In my opengl vctgi engine, I have an initial voxelization pass, that runs only for the first frame, to inject some light into the scene (even for only one object is enough). Then a second voxelization pass which runs once every frame where I perform a cone tracing feedback loop (i.e. cone trace the initial 3d texture; add direct light; then overwrite the original values in the 3d texture) to get recursive bounces (unlimited). Then in the third pass, I cone trace the 3d texture to composite with all other deferred effects.

              [edit] So I just discovered that you only need a single voxelization pass to get unlimited bounces. There are two cone tracing passes, one in the forward shading voxelization pass to sample the 3D texture and the second pass in deferred shading to sample the same 3D texture for outputting to the screen (which is already used for the single bounce implementation).

              I believe I can do this for vxgi in ue4 but I just need to figure out how to access the voxel storage (which I am assuming is a bunch of cascaded 3D textures) then write the cone tracing code in the voxelization shader. The problem is I think these textures are hidden in the GameWorks library and I can't find a way to access them.
              Last edited by gboxentertainment; 02-21-2015, 04:09 AM.

              Comment


                Just finished compiling and building VXGI... guys, I have a Nvidia 450 GTS and I get 30 FPS with cornell box, unlike with LPV that drops to 14 FPS with any luck and doesn't look as good as VXGI, unless a lot of finetuning is done, I'll upload tomorrow screens of my project with VXGI!

                And one more thing: THANK YOU GUYS! YOU ROCK!

                Click the tiny bird!
                It'll take you to my stuff!

                Comment


                  Originally posted by dvd.kh
                  How i can access to this github ? because seems that is private !!
                  You need to login to you GitHub account that is conneted to your UE 4 Subscription.
                  GitHub Setup

                  Check out the Account Page for you Unreal Engine Account.
                  Click image for larger version

Name:	2b11c7b3a42b39879092a56606c7922b.png
Views:	1
Size:	10.1 KB
ID:	1066850
                  Last edited by WCode; 02-21-2015, 08:54 AM.

                  Comment


                    Got a question, will things like flex/waveworks work on android/ios? Even at a very bad quality.

                    Comment


                      Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	872.0 KB
ID:	1066865

                      Just a basic red material to try this on... it's sooooooo lovely!

                      Click the tiny bird!
                      It'll take you to my stuff!

                      Comment


                        Originally posted by Cube2222 View Post
                        Got a question, will things like flex/waveworks work on android/ios? Even at a very bad quality.
                        We are working on it, but because most mobile devices do not have robust GPUs it will be some time before these technologies are deployed widely on mobile platforms.

                        Comment


                          Originally posted by gboxentertainment View Post
                          I managed to get point light shadows working by adding in the following into bool FDeferredShadingSceneRenderer::RenderOnePassPointLightShadows class in ShadowRendering.cpp:

                          Code:
                          	// NVCHANGE_BEGIN: Add VXGI
                          	#if WITH_GFSDK_VXGI
                          	if (bVxgiPerformEmittanceVoxelization && bVxgiUseDiffuseMaterials && ProjectedShadowInfo != 0)
                          	{
                          		SCOPE_CYCLE_COUNTER(STAT_VxgiVoxelizeEmittanceFromDiffuseMaterialsShadowed);
                          		SCOPED_DRAW_EVENT(RHICmdList, VXGIVoxelizeEmittanceFromDiffuseMaterialsShadowed);
                          
                          		RenderForVxgiVoxelization(VXGI::RenderMeshFilter::ALL_MESHES, LightSceneInfo, ProjectedShadowInfo);
                          	}
                          	#endif
                          	// NVCHANGE_END: Add VXGI
                          [ATTACH=CONFIG]26392[/ATTACH]

                          So it renders the vxgi with shadows for point lights but for some reason doesn't inject the shadow information into the voxelization process. Not sure what its doing differently from spotlight shadows.

                          Point light shadow r.VXGI.DebugMode 3:

                          [ATTACH=CONFIG]26393[/ATTACH]

                          Spotlight shadow r.VXGI.DebugMode 3:

                          [ATTACH=CONFIG]26394[/ATTACH]

                          [edit] I figured out why it isn't voxelizing the point light shadows - its because that is done separately to the other shadows. The voxelization code needs to read from the point light shadow cubemap texture.
                          Is the point light movable?

                          Comment


                            Originally posted by Mike.Skolones View Post
                            We are working on it, but because most mobile devices do not have robust GPUs it will be some time before these technologies are deployed widely on mobile platforms.
                            Well actually I just meant soemthing liek a proof of concept.

                            Also, because I think this topic was't continued, I can't get over 16800 particles in my fluid, although I've got a pretty powerful card (780ti) , so, is there any way to get this higher?

                            Comment


                              Question: is there a way to trigger VXGI enable console command automatically? I added it in the consolevariables.ini, but nothing happens.

                              Edit: Solve it! Add the = when assigning the value. Stupid me
                              Last edited by fdslk; 02-21-2015, 01:51 PM.

                              Click the tiny bird!
                              It'll take you to my stuff!

                              Comment


                                Originally posted by Cube2222 View Post
                                Well actually I just meant soemthing liek a proof of concept.

                                Also, because I think this topic was't continued, I can't get over 16800 particles in my fluid, although I've got a pretty powerful card (780ti) , so, is there any way to get this higher?
                                Sure. You have to increase the particle limit on the flex container, then increase the particle lifetime on the emitter.

                                Click image for larger version

Name:	IMG_03022015_140628.png
Views:	1
Size:	93.2 KB
ID:	1066877

                                Comment

                                Working...
                                X