A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Works In Progress' started by drcrck, Jan 25, 2019.
No, the current version is Windows Standalone PC only
Do you know this work ?
Integrating Occlusion Culling into LOD on GPU
Real-time rendering of complex 3D models is still a very challenging task. Recently, GPU-based level-of-detail (LOD) approaches have been proposed to fast decrease the complexity of a 3D model, but applying only LOD approaches is usually not sufficient to achieve highly interactive rendering rate for the complex model that contains hundreds of millions of triangles. Visibility culling, especially occlusion culling, needs to be introduced to further reduce the amount of triangles being rendered at each frame. In this paper, we present a novel rendering approach that seamlessly integrates occlusion culling with the LOD approach in a unified scheme towards the GPU architecture. The result shows that the integration significantly reduces the complexity of the 3D model and satisfies the demands of both memory efficiency and performance.
Couple of Questions:
1. Does this work with Weather maker?
2. Does this work with multiple directional lights? i.e. one light set up for day(Sun) and one light set for night(Moon)
3. Will there be support for additive scenes? I have a project where scenes are separated into sub scenes (main, Sound, VFX). I downloaded the demo project, I couldn't assign the directional light. I am assuming this is because the script was on the camera in the main sub scene, but the directional light is in the vfx sub scene.
I'll check it out, thanks
1. Never used it, does it do something unusual that can prevent GDOC from working? It works with EnviroSky and should support any similar system.
2. It supports only with 1 directional light at a time, but you can switch them with GDOC.SetDirectionalLight
3. It will be auto assigned automatically when you load the second scene. If not, do it manually with GDOC.SetDirectionalLight
buying once it hits hdrp.
oh yea and multi cameras, I doing a fix camera game. Once either one is added, I'm buying asap, if I don't find anything else that fits my needs by that time, of coarse.
It's really a good asset to use for reducing batches!
Thanks for sharing GDOC.
However it seems GDOC causes memory leaks.
Our game keeps loading different scenes and we call GDOC.Disable()/GDOC.Enable() to scan scene objects every round.
And we measure the memory utility, GDOC causes memory leaks.
Is there any suggestions about lifetime control of GDOC?
Should we only enable/disable GDOC only once instead of every round?
Both will be supported in 1-2 weeks!
You don't need to call Disable/Enable if "scan new scenes" is checked. Or it doesn't work for you?
Also, do you mean managed or unmanaged memory?
Anyway, new version will be released soon and these issues might already be fixed
Since we use LoadSceneMode.Additive and move scenes(race track combination) after it finishes scanning.
The moved scene seems to have wrong position and would be culled incorrectly.
Manually call Disable()/Enable() fits our need (we can do scanning after track combination).
I think the memory leak comes from unmanaged memory (when calling Enable()).
Managed memory should be fine since garbage collection.
I noticed you mention he work on Vulkan and VR, do you think he could work on mobile hardware like the Snapdragon 835 of the Oculus Quest ?
Hi, Vulkan is not supported yet
Hi, just purchased GDOC.
The asset itself is promising, dropped batch count by at least same amount as OC for me, no need to waste hours on baking.
Warning, major critique ahead:
But the initial scan is painfully slow. Just by looking through the source I can tell where the problem lies - in the component creation / attachment, null checks, allocations via GetComponents that do not have list buffer send to them.
Perhaps using GetComponentsInChildren<T>(true, List<T> buffer) would be much faster when dealing with large hierarchies, rather than manually fetching components via GetComponent<T>.
-> public void GetComponentsInChildren(bool includeInactive, List<T> results))
(I guess I can disable auto-detection and hook up GDOC_Occludee to each prefab / renderer?)
If you're interesting in improving initial scan time, move the whole attachment process to the editor.
I've done similar component attachment on static objects in editor time, so it shouldn't be that hard to implement (albeit it can be tricky when handling prefabs).
This will reduce scan time to about zero, you'd just need to hook the GDOC_Occludee components to the GDOC in OnEnable / OnDisable.
Also, please don't do:
component.transform.position = ...
component.transform.rotation = ...
Do it like so
Transform cTrm = component.transform;
cTrm. ... = ...
cTrm. ... = ...
Transform is native call, which by its own is not a lot, but when it comes to thousands of calls, its not nice.
Vector3.one * e.range * 2
is slower than:
e.range * 2 * Vector3.one
Result is the same. Order maters.
TL;DR: C# source would love to have a couple of refactoring passes done to it.
I don't want to sound like an asshole, and at the same time I don't want to sit a couple of nights refactoring purchased assets' code.
Hope to see some improvements in this area in the future.
Hi, I have a game on Steam, and I think this asset could help us with our performance problem, but before buying I need some information.
1) Our game has a part of the scenario that is generated randomly.
2) Except for some very specific materials, we use only standard materials.
3) We are using volumetric lights.
4) We are not using Directional Lights, only Spot and Point light.
5) Our shadows are Realtime.
6) We have only one camera active (we are using Cinemachine)
Question: 1- How this asset works?, just to understand what you do in the GPU. I read the posts, and it makes a scan at the beginning. 2- Do you trigger some event when this process ends?
3- Do you have plans to support PS4 & xbox? I know this asset took a lot of research and work, the questions are simply to orientate me
Hey, I sent you a message on Discord about trying out the asset before we buy it for our project. We really want to try it out to make sure it fits our game. You mentioned on the asset store that we can contact you on Discord for some kind of demo version that we could try out.
@xVergilx thanks for the comments, the upcoming version has many improvements in both C++ and C# parts
1. It disables components/gameobjects (depends on settings) that are not seen by any camera (note in the current version it supports only 1 camera, but it will be unlimited in the next one)
2. Scanning will be improved in the next version and yes, I can add an even if you need it
3. I do, but there's still a lot to do so no eta
Hi, just answered
The demo is posted on the #news channel on discord
will there be a GDoc update soon with improvements? Is this working with Unity 2019.2 already?
I am planning to update my project to Unity 2019.2 soon
Can it cull Terrains?
If not is there an API where we can make a custom rule for culling the terrain?
We have Terrain Chunks generated with Map Magic at runtime, what we could do is to make the chunks smaller like maybe 10x10 or 100x100 and cull it because these terrains slow down our game too much.
A better approach is using world streaming.
If its rendered via default Mesh Renderer it will.
Otherwise - probably not.
Latest release seems to work well with Unity 2019.2.
Has this been integrated with Vegetation Studios Pro yet? Thanks.
This is an amazing Tech and, increasing frame-rates ten times is crazy-wonderful ! !
You have revolutionized video-games, if every-one did this we'd have much finer games ! !
Okay, thank you for the info
How easy would this be to use for someone interested in drawing a lot of instanced models using Graphics.DrawMeshInstancedIndirect. Would it be possible to create a custom made instanced shader, that would use the GPU culling data?
Yeah, very broad question. I was mostly interested in the authors thoughts on this.
Is there a way to build GDOC with IL2CPP scripting backend? It only seems to work with Mono in our project.
Just noticed something weird. Like a race condition between GDOC and the camera.
If the camera is rotated too fast (e.g. via user input) objects stay invisible for about 1~2 frames. Have anyone else encountered that? Any ideas how to fix that?
Is the Switch supported? How is performance?
Okay, so I've somehow managed to hang Unity Editor with this plugin. I've added another layer and different culling mask setup for the lights, and its now hanging constantly after scan completes.
If I disable scanning everything works just fine.
Not sure what's causing this though. Need to investigate.
When using LWRP with GDOC, there is no UnityEngine.Experimental.Rendering in the 5.16.1 version of LWRP.
How should I handle it?
It's a very good asset but It's still not working in HDRP, the developer does not answer for almost 5 months.
Hello. We plan to integrate GDOC deeper in our BuildIn RP scenario.
Do you plan to further support the Asset.
Latest version was released
Released: Apr 3, 2019
Do you plan to further support it.
An Roadmap would be great.
Hey everyone, I'm back. New version is coming soon!
I'll answer to your questions and post more details later this/next week.
The upcoming version will support the latest LWRP (currently testing with 6.9.2) and even HDRP (because unity finally fixed its extension API).
Not yet, and the upcoming version will still be Windows-only
But I'm also working on GDOC 2.0 that will work without the currently used native dll
It will require Unity 2019.1+ (older versions don't support all the required functions) and will support most modern platforms except mobile.
Also curious about this! Looks very cool =)
I hope it will be released soon I really need HDRP support
@drcrck Any news on the HDRP support or 2.0?
This asset support LWRP for VR?