I am implementing a deferred shading system which uses the compute shader(in DirectX 11) to cull lights in tiles, so I can get thousands of lights at a stable framerate.The problem comes when I have to determine whether a light is blocked by scene geometry.I mean my point lights pass trough walls and bridges.I have a shadow map on the main light's(the sun) point of view, but generating a shadow map for each point light on the scene would require generating a thousand cubemaps and that's not possible.So how is this problem usually dealt with?Games like Dead Space 3 and Battlefield 3 have a lot of lights on scene, yet they don't bleed trough solid objects.
How to implement light occlusion in deferred shading system?
1.3k views Asked by ulak blade At
1
There are 1 answers
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in SHADOW
- How to create a CSS shadow that applies transparency to an element behind it
- Three js Shadow casting with 3dmLoader
- CSS - Element with 2 background images - How to drop shadow just around one of them?
- Applying shadows in react native
- Gradle Shadow plugin relocate an SPI service while preserving the service file name in META-INF/services
- Point light shadows work wrong, how can I debug it?
- Android: No CardView elevation on dark theme
- Ursina Python Engine: Question about the Lighting System
- Compose Card shadow behavior when inside a column
- Light occlusion Godot
- Unity - shadows not showing in WebGL / Game view only?
- Can I make IDEA show a hint to use a Kotlin extension function instead of a Java original?
- got stuck with python code. can someone help to solve the highlighted errors. thanks a lot
- Figma Drop Shadow In Android
- I can't see any shadows in r3f
Related Questions in DIRECTX-11
- Why do we only create one render target view?
- Missing HLSL Debug Symbols with D3Dcompile in Visual Studio
- Cube Rotation Only Triggered by Mouse Movement or Key Press
- Unable to Display Cube in Direct3D Application
- Slow D3DX11CreateShaderResourceViewFromFile relatively CrystalDiskMark speed
- Attempt to convert pData provided by Direct3d11 to buffer, but error when resize window
- d3d11 triangle rendering failure despite everything being properly initialized
- Initialize DirectX 11 using 'SwapChainPanel' in C#, UWP, XAML
- Qt 5.15, ANGLE: use DirectComposition, i.e. Flip Model SwapChain
- Unresolved external symbol DXGetErrorStringA
- DirectX 3d 11 after using the Depth Stencil view in OMSetRenderTarget nothing is rendering at alllll
- Graphics.DrawString not drawing when picturebox handle is outputsource of directX11 device
- Possible way of implementing Constant buffer in direct x
- Why does CreateDevice() for ID3D11Device return error 0x80070057: "The parameter is incorrect"?
- Unable to see render when I use the .exe
Related Questions in DEFERRED-SHADING
- How to handle material textures when deferred shading?
- Opengl 3/4 : Can I bind the same buffer object to different targets
- A Point Light in Opengl Deferred lighting is ~ 180 degrees?
- Resolution of multi-sampled frame-buffer with multiple color attachments
- Making position buffer for deferred rendering - noise in the generated textures
- How to add countless lights in framebuffer
- OpenGL Deferred Pixelated Lighting
- Shadow mapping: project world-space pixel to light-space
- Point light Dual-paraboloid VSM in deferred rendering
- Multiple Render Targets (MRT) and OSG
- Using gl_FragData[] from multiple shader files
- Tiled deferred shading without compute shader
- stencil buffer for deferred shading with open scene graph
- OpenGL shading pipeline efficiency with FBOs
- Deferred Shading and attenuation
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
One straight forward solution would be the use of Screen-Space Ambient Occlusion approaches. There you try to estimate the occlusion based on sampling of the neighbourhood. One approach I know is SSDO which directly targets the creation of shadows in screen-space. Probably you will end up with lots of artifacts in complex scenes. The advantage is that SSDO also adds some global illumination effects.
I think most games/engines are trying to overcome such problems by preprocessing steps.
Static Lightening: If your light source does not move around (lights in buildings...) compute Lightmaps or some extra vertex attributes containing the light.
Tweak the lights: Just adjust falloff distance or intensity or location until there is no noticeable bleeding.
Some own ideas: Depending on your representation of the light (sphere/disc?) you could compute a pruned shape for the lights. Pixels behind a wall would not lie inside the new light volume and are not lightened this way. If you can't shape your light volume arbitrary you probably could add one or two planes per light defining walls. These planes can be undefined for most lights and only pushed to the GPU for a light near a wall. Than a pixel can be checked on which side it lies during the lightening process for the respective light.