Please refer to this blogpost to get an overview.
Replace *-INSTANCE with one of the public instances listed in the scrapers section. Replace CAPITALIZED words with their corresponding identifiers on the website.
Please refer to this blogpost to get an overview.
Replace *-INSTANCE with one of the public instances listed in the scrapers section. Replace CAPITALIZED words with their corresponding identifiers on the website.
Original Tweet - June 6, 2020
I really should have known this "shadow terminator" ray tracing issue was going to happen, but I stumbled into it anyway. It is a surprisingly tricky / annoying / common problem, but I got it fixed with some help from @pointinpolygon and others.
This arises from a difference between shading normals and geometric normals, particularly with low-poly geometry. This POV-Ray page has a nice diagram that explains it: http://wiki.povray.org/content/Knowledgebase:The_Shadow_Line_Artifact. This is not a floating-point precision issue.
This is also different from the "bump" terminator problem, which is about normal maps and not low-poly self-shadowing. See "Ray Tracing Gems" chapter 12 for details on that. The solution there is to modify the BSDF to add shadowin
| Shader "WorldNormalFromDepthTexture" | |
| { | |
| Properties { | |
| [KeywordEnum(3 Tap, 4 Tap, Improved, Accurate)] _ReconstructionMethod ("Normal Reconstruction Method", Float) = 0 | |
| } | |
| SubShader | |
| { | |
| Tags { "RenderType"="Transparent" "Queue"="Transparent" } | |
| LOD 100 |
| #pragma section(".remotery_code", read, execute) | |
| __declspec(allocate(".remotery_code")) | |
| static const uint8_t code[] = | |
| { | |
| 0x50, // push rax | |
| 0x9C, // pushfq | |
| 0x53, // push rbx | |
| 0x51, // push rcx | |
| 0x52, // push rdx |
| (** User Mathematica initialization file **) | |
| (** See https://reference.wolfram.com/language/tutorial/ConfigurationFiles.html for info on instaling this file **) | |
| (** Display graphics inline in iTerm2. I don't know an easy way to test if we're running in iTerm2 without looking at the process table. **) | |
| imgcat[image_Graphics]:=( | |
| WriteString[$Output, "\033]1337;File=inline=1:"<>ExportString[ExportString[image,"PNG"],"Base64"]<>"\007"]; | |
| Null | |
| ) |
A quick breakdown of lighting in the restir-meets-surfel branch of my renderer, where I revive some olde surfel experiments, and generously sprinkle ReSTIR on top.
Please note that this is all based on work-in-progress experimental software, and represents a single snapshot in development history. Things will certainly change 😛
Due to how I'm capturing this, there's frame-to-frame variability, e.g. different rays being shot, TAA shimmering slightly. Some of the images come from a dedicated visualization pass, and are anti-aliased, and some show internal buffers which are not anti-aliased.
| // Copyright (c) 2023 Tomasz Stachowiak | |
| // | |
| // This contribution is dual licensed under EITHER OF | |
| // | |
| // Apache License, Version 2.0, (http://www.apache.org/licenses/LICENSE-2.0) | |
| // MIT license (http://opensource.org/licenses/MIT) | |
| // | |
| // at your option. | |
| #include "/inc/frame_constants.hlsl" |