WIP: EEVEE: Implement FAST Blue Noise #123156

Draft
Clément Foucault wants to merge 37 commits from fclem/blender:eevee-noise-decorelation into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.

EEVEE in its current form has a lot of correlation issue with effects taking a long time to converge to noise free results.

The recently published FAST noise paper and design documentation have some great insight about robust sampling for
spatio-temporal denoising.
https://github.com/electronicarts/fastnoise/

This patch aim to replace the current blue noise by FAST noises adapted to our needs.

Answering the questions asked in this document to try to get a clearer picture of what we need.
https://github.com/electronicarts/fastnoise/blob/main/FastNoiseDesign.md

What Type Should The Pixels Contain?

  • Shadow PCF
    • Uniform disk > Derived Cosine Hemisphere
  • Shadow Ray
    • Uniform cone > Derived Cosine Hemisphere
    • Uniform real (direction jitter)
  • BSDF ray
    • Uniform sphere (translucent) > Should use dedicated sphere noise, but hard to justify the storage.
    • Cosine Hemisphere (diffuse, translucent)
    • Uniform circle + Uniform real (microfacet) > Derived Cosine Hemisphere + Real?
  • Fast GI
    • Uniform circle (rotation)
    • Uniform real (direction jitter)
  • Closure
  • Light-Probe
  • Motion Blur
    • Uniform real
  • SubSurface
    • Uniform circle for per pixel rotation
  • Volume
    • Uniform real (offset Z)

As explained in the reference material, we can derive uniform disk samples from Cosine Hemisphere samples.
The uniform sphere storage cost is difficult to justify so we will only use .
So after this simplification, we get:

  • Shadow PCF
  • Shadow Ray
  • BSDF ray
    • Cosine Hemisphere
    • Uniform real
  • Fast GI
    • Uniform circle
    • Uniform real
  • Closure
  • Light-Probe
  • Volume
  • Motion Blur
    • Uniform real
  • SubSurface
    • Uniform circle

What Spatial Filter Should It Be Optimized For?

  • Shadow PCF
    • Binomial 3x3 (Box 3x3 later)
  • Shadow Ray
  • BSDF ray
    • Box 5x5 ? uncertain which size. Depends on filter radius / roughness
  • Fast GI
    • Box 3x3
  • Closure
  • Light-Probe
  • Volume
  • Motion Blur
    • Binomial 3x3 (there is no denoising, only temporal accumulation)
  • SubSurface
    • Binomial 3x3 (Box 3x3 later?)

Except BSDF ray sampling, everything is using either Box 3x3 or Binomial 3x3.
We can simplify BSDF ray sampling and only use Box 3x3 for now.
Shadow should use Binomial given we don't have spatial denoising, but we can use Box 3x3 to avoid storage cost for now.
Same thing for SubSurface.
So after this simplification, we get:

  • BSDF ray
  • Fast GI
    • Box 3x3
  • SubSurface
  • Shadow PCF
  • Shadow Ray
  • Closure
  • Light-Probe
  • Volume
  • Motion Blur
    • Binomial 3x3

What Temporal Filter Should It Be Optimized For?

Exponential Moving Average.

Should I Combine Spatial & Temporal Filters Using Product Or Separate?

Anything using binomial in the list above doesn't use spatial filter.
So bottom line, Binomial use separate and Box use product.

Final set

Combining all previous questions we get:

  • Box 3x3, EMA, Product
    • Cosine Hemisphere (stored as vec3)
    • Uniform real
  • Binomial 3x3, EMA, Separate
    • Cosine Hemisphere (stored as vec3)
    • Uniform real

The uniform circle one being only used for Fast GI and SSS (isolated pipelines), it can be stored in its own texture with lower/higher resolution.

  • Box 3x3, EMA, Separate (because Fast GI has no temporal denoising)
    • Uniform circle (stored as angle)
    • Uniform real
  • Binomial 3x3, EMA, Separate
    • Uniform circle (stored as angle)
    • Uniform real

What Width And Height Should The Texture Be?

64px for common binomial noise that need to be accessed everywhere.
Can choose higher or lower resolutions for cases where we can just bind another texture.

What Depth Should The Texture Be?

Use 32 slices and change exponential moving average weight to 0.1 in film.

What format should we use

Cost of 64 * 64 * 32 * 4 * sizeof(half) = 1 048 576 Bytes
If we ship both binomial and box version, that doubles the cost.
It is unclear if RGBA16_UNORM would be better at storing the values for precision than RGBA16F.

More Samples Per Frame

After initial testing, the white noise property of the R2 technique makes the technique only desirable if using temporal accumulation.
So this can only be done if using texture with temporal slices.

The "advance time faster" doesn't look good from an architecture point of view. We can't take a large number of samples.

More Temporal Samples

This should remove the need for the CPU random sample rotations.
Visiting all values in the noise overtime is possible using a traversing tactic like this one:
https://lemire.me/blog/2017/09/18/visiting-all-values-in-an-array-exactly-once-in-random-order/

EEVEE in its current form has a lot of correlation issue with effects taking a long time to converge to noise free results. The recently published FAST noise paper and design documentation have some great insight about robust sampling for spatio-temporal denoising. https://github.com/electronicarts/fastnoise/ This patch aim to replace the current blue noise by FAST noises adapted to our needs. Answering the questions asked in this document to try to get a clearer picture of what we need. https://github.com/electronicarts/fastnoise/blob/main/FastNoiseDesign.md # What Type Should The Pixels Contain? - Shadow PCF - Uniform disk > Derived Cosine Hemisphere - Shadow Ray - Uniform cone > Derived Cosine Hemisphere - Uniform real (direction jitter) - BSDF ray - Uniform sphere (translucent) > Should use dedicated sphere noise, but hard to justify the storage. - Cosine Hemisphere (diffuse, translucent) - Uniform circle + Uniform real (microfacet) > Derived Cosine Hemisphere + Real? - Fast GI - Uniform circle (rotation) - Uniform real (direction jitter) - Closure - Light-Probe - Motion Blur - Uniform real - SubSurface - Uniform circle for per pixel rotation - Volume - Uniform real (offset Z) As explained in the reference material, we can derive uniform disk samples from Cosine Hemisphere samples. The uniform sphere storage cost is difficult to justify so we will only use . So after this simplification, we get: - Shadow PCF - Shadow Ray - BSDF ray - Cosine Hemisphere - Uniform real - Fast GI - Uniform circle - Uniform real - Closure - Light-Probe - Volume - Motion Blur - Uniform real - SubSurface - Uniform circle # What Spatial Filter Should It Be Optimized For? - Shadow PCF - Binomial 3x3 (Box 3x3 later) - Shadow Ray - BSDF ray - Box 5x5 ? uncertain which size. Depends on filter radius / roughness - Fast GI - Box 3x3 - Closure - Light-Probe - Volume - Motion Blur - Binomial 3x3 (there is no denoising, only temporal accumulation) - SubSurface - Binomial 3x3 (Box 3x3 later?) Except BSDF ray sampling, everything is using either Box 3x3 or Binomial 3x3. We can simplify BSDF ray sampling and only use Box 3x3 for now. Shadow should use Binomial given we don't have spatial denoising, but we can use Box 3x3 to avoid storage cost for now. Same thing for SubSurface. So after this simplification, we get: - BSDF ray - Fast GI - Box 3x3 - SubSurface - Shadow PCF - Shadow Ray - Closure - Light-Probe - Volume - Motion Blur - Binomial 3x3 # What Temporal Filter Should It Be Optimized For? Exponential Moving Average. # Should I Combine Spatial & Temporal Filters Using Product Or Separate? Anything using binomial in the list above doesn't use spatial filter. So bottom line, Binomial use separate and Box use product. # Final set Combining all previous questions we get: - Box 3x3, EMA, Product - Cosine Hemisphere (stored as vec3) - Uniform real - Binomial 3x3, EMA, Separate - Cosine Hemisphere (stored as vec3) - Uniform real The uniform circle one being only used for Fast GI and SSS (isolated pipelines), it can be stored in its own texture with lower/higher resolution. - Box 3x3, EMA, Separate (because Fast GI has no temporal denoising) - Uniform circle (stored as angle) - Uniform real - Binomial 3x3, EMA, Separate - Uniform circle (stored as angle) - Uniform real # What Width And Height Should The Texture Be? 64px for common binomial noise that need to be accessed everywhere. Can choose higher or lower resolutions for cases where we can just bind another texture. # What Depth Should The Texture Be? Use 32 slices and change exponential moving average weight to 0.1 in film. # What format should we use Cost of 64 * 64 * 32 * 4 * sizeof(half) = 1 048 576 Bytes If we ship both binomial and box version, that doubles the cost. It is unclear if RGBA16_UNORM would be better at storing the values for precision than RGBA16F. # More Samples Per Frame After initial testing, the white noise property of the R2 technique makes the technique only desirable if using temporal accumulation. So this can only be done if using texture with temporal slices. The "advance time faster" doesn't look good from an architecture point of view. We can't take a large number of samples. # More Temporal Samples This should remove the need for the CPU random sample rotations. Visiting all values in the noise overtime is possible using a traversing tactic like this one: https://lemire.me/blog/2017/09/18/visiting-all-values-in-an-array-exactly-once-in-random-order/
Clément Foucault added this to the 4.3 milestone 2024-06-12 23:34:35 +02:00
Clément Foucault added the
Interest
EEVEE
label 2024-06-12 23:34:35 +02:00
Clément Foucault added 2 commits 2024-06-12 23:34:45 +02:00
Clément Foucault added this to the Viewport & EEVEE project 2024-06-12 23:34:50 +02:00
First-time contributor

You can looking this video for helping you ;) he explain some things about a lot of things
Beyond White Noise for Real-Time Rendering - EA

You can looking this video for helping you ;) he explain some things about a lot of things [Beyond White Noise for Real-Time Rendering - EA](https://www.youtube.com/watch?v=tethAU66xaA)
Author
Member

Commands to generate the noises:

FastNoise.exe sphere cosine box 3 exponential 0.1 0.1 product 64 64 32 sphere_cosine_box3_64x32 -output exr
FastNoise.exe real uniform box 3 exponential 0.1 0.1 product 64 64 32 real_uniform_box3_64x32 -output exr
FastNoise.exe sphere cosine binomial 2 exponential 0.1 0.1 separate 0.5 64 64 32 sphere_cosine_binomial3_64x32 -output exr
FastNoise.exe real uniform binomial 2 exponential 0.1 0.1 separate 0.5 64 64 32 real_uniform_binomial3_64x32 -output exr

FastNoise.exe circle uniform box 3 exponential 0.1 0.1 separate 0.5 32 32 32 circle_uniform_box3_32x32 -output exr
FastNoise.exe real uniform box 3 exponential 0.1 0.1 separate 0.5 32 32 32 real_uniform_box3_32x32 -output exr
FastNoise.exe circle uniform binomial 2 exponential 0.1 0.1 separate 0.5 32 32 32 circle_uniform_binomial3_32x32 -output exr
FastNoise.exe real uniform binomial 2 exponential 0.1 0.1 separate 0.5 32 32 32 real_uniform_binomial3_32x32 -output exr
Commands to generate the noises: ``` FastNoise.exe sphere cosine box 3 exponential 0.1 0.1 product 64 64 32 sphere_cosine_box3_64x32 -output exr FastNoise.exe real uniform box 3 exponential 0.1 0.1 product 64 64 32 real_uniform_box3_64x32 -output exr FastNoise.exe sphere cosine binomial 2 exponential 0.1 0.1 separate 0.5 64 64 32 sphere_cosine_binomial3_64x32 -output exr FastNoise.exe real uniform binomial 2 exponential 0.1 0.1 separate 0.5 64 64 32 real_uniform_binomial3_64x32 -output exr FastNoise.exe circle uniform box 3 exponential 0.1 0.1 separate 0.5 32 32 32 circle_uniform_box3_32x32 -output exr FastNoise.exe real uniform box 3 exponential 0.1 0.1 separate 0.5 32 32 32 real_uniform_box3_32x32 -output exr FastNoise.exe circle uniform binomial 2 exponential 0.1 0.1 separate 0.5 32 32 32 circle_uniform_binomial3_32x32 -output exr FastNoise.exe real uniform binomial 2 exponential 0.1 0.1 separate 0.5 32 32 32 real_uniform_binomial3_32x32 -output exr ```
Clément Foucault added 5 commits 2024-06-18 22:39:02 +02:00
Clément Foucault added 3 commits 2024-06-21 22:31:03 +02:00
Clément Foucault added 1 commit 2024-06-22 14:22:42 +02:00
Clément Foucault added 6 commits 2024-06-22 19:45:50 +02:00
Clément Foucault added 4 commits 2024-06-23 01:54:32 +02:00
Clément Foucault added 10 commits 2024-06-24 00:08:56 +02:00
Clément Foucault added 1 commit 2024-06-24 00:21:27 +02:00
Rescale RNG array dimension
Some checks failed
buildbot/vexp-code-patch-lint Build done.
buildbot/vexp-code-patch-darwin-x86_64 Build done.
buildbot/vexp-code-patch-darwin-arm64 Build done.
buildbot/vexp-code-patch-linux-x86_64 Build done.
buildbot/vexp-code-patch-windows-amd64 Build done.
buildbot/vexp-code-patch-coordinator Build done.
efe16748f6
Author
Member

Everything should be done now. I went the extra mile trying to remove most of the CPU RNGs.

What is left to do is to assess if that really makes a difference and compare variance reduction.

Also have ensure no render tests are broken by this changes.

Should be committed to main after the release as this changes many areas that could still be patched.

Everything should be done now. I went the extra mile trying to remove most of the CPU RNGs. What is left to do is to assess if that really makes a difference and compare variance reduction. Also have ensure no render tests are broken by this changes. Should be committed to main after the release as this changes many areas that could still be patched.
First-time contributor

Everything should be done now. I went the extra mile trying to remove most of the CPU RNGs.

What is left to do is to assess if that really makes a difference and compare variance reduction.

Also have ensure no render tests are broken by this changes.

Should be committed to main after the release as this changes many areas that could still be patched.

Could you make a package ?

> Everything should be done now. I went the extra mile trying to remove most of the CPU RNGs. > > What is left to do is to assess if that really makes a difference and compare variance reduction. > > Also have ensure no render tests are broken by this changes. > > Should be committed to main after the release as this changes many areas that could still be patched. Could you make a package ?
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR123156) when ready.
First-time contributor

Info: Registering menu class: 'NWSwitchNodeTypeMenu', bl_idname 'NODE_MT_nw_switch_node_type_menu' has been registered before, unregistering previous
ERROR (gpu.shader): eevee_deferred_capture_eval FragShader:
|
12628 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_light_double FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_light_triple FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_planar_eval FragShader:
|
12632 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12776 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_light_single FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_horizon_resolve ComputeShader:
|
10385 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
11382 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_light_shadow_setup ComputeShader:
|
6238 | vec2 rand = r_2d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:270:0: Error: C7011: implicit cast from "uint" to "int"
|
6263 | vec2 rand = r_2d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:295:0: Error: C7011: implicit cast from "uint" to "int"
|
6276 | vec3 rand = r_3d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:308:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_fallback ComputeShader:
|
9239 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10236 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_planar ComputeShader:
|
9244 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10241 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"
|
11853 | float noise_offset = r_1d(sampling_buf.sample_index);
|
| eevee_ray_trace_planar_comp.glsl:75:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_screen ComputeShader:
|
9245 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10242 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"
|
11857 | float noise_offset = r_1d(sampling_buf.sample_index);
|
| eevee_ray_trace_screen_comp.glsl:78:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_lightprobe_sphere_select ComputeShader:
|
5449 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_surfel_light ComputeShader:
|
9664 | vec3 rand = sampling_blue_noise_fetch(pixel, RNG_SHADOW_FILTER, NOISE_BINOMIAL).rga;
|
| eevee_shadow_tracing_lib.glsl:421:0: Error: C1503: undefined variable "sampling_blue_noise_fetch"
|
9708 | vec4 rand_ray = sampling_blue_noise_fetch(
|
| eevee_shadow_tracing_lib.glsl:465:0: Error: C1503: undefined variable "sampling_blue_noise_fetch"

ERROR (gpu.shader): eevee_volume_scatter ComputeShader:
|
9248 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10245 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_volume_scatter_with_lights ComputeShader:
|
9252 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10249 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

EEVEE: error: Could not compile static shader "eevee_deferred_light_single"
EEVEE: error: Could not compile static shader "eevee_deferred_light_double"
EEVEE: error: Could not compile static shader "eevee_deferred_light_triple"
Error : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF697E99520
Module : blender.exe
Thread : 000025b8

Info: Registering menu class: 'NWSwitchNodeTypeMenu', bl_idname 'NODE_MT_nw_switch_node_type_menu' has been registered before, unregistering previous ERROR (gpu.shader): eevee_deferred_capture_eval FragShader: | 12628 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_light_double FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_light_triple FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_planar_eval FragShader: | 12632 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12776 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_light_single FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_horizon_resolve ComputeShader: | 10385 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 11382 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_light_shadow_setup ComputeShader: | 6238 | vec2 rand = r_2d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:270:0: Error: C7011: implicit cast from "uint" to "int" | 6263 | vec2 rand = r_2d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:295:0: Error: C7011: implicit cast from "uint" to "int" | 6276 | vec3 rand = r_3d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:308:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_fallback ComputeShader: | 9239 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10236 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_planar ComputeShader: | 9244 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10241 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" | 11853 | float noise_offset = r_1d(sampling_buf.sample_index); | | eevee_ray_trace_planar_comp.glsl:75:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_screen ComputeShader: | 9245 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10242 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" | 11857 | float noise_offset = r_1d(sampling_buf.sample_index); | | eevee_ray_trace_screen_comp.glsl:78:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_lightprobe_sphere_select ComputeShader: | 5449 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_surfel_light ComputeShader: | 9664 | vec3 rand = sampling_blue_noise_fetch(pixel, RNG_SHADOW_FILTER, NOISE_BINOMIAL).rga; | | eevee_shadow_tracing_lib.glsl:421:0: Error: C1503: undefined variable "sampling_blue_noise_fetch" | 9708 | vec4 rand_ray = sampling_blue_noise_fetch( | | eevee_shadow_tracing_lib.glsl:465:0: Error: C1503: undefined variable "sampling_blue_noise_fetch" ERROR (gpu.shader): eevee_volume_scatter ComputeShader: | 9248 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10245 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_volume_scatter_with_lights ComputeShader: | 9252 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10249 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" EEVEE: error: Could not compile static shader "eevee_deferred_light_single" EEVEE: error: Could not compile static shader "eevee_deferred_light_double" EEVEE: error: Could not compile static shader "eevee_deferred_light_triple" Error : EXCEPTION_ACCESS_VIOLATION Address : 0x00007FF697E99520 Module : blender.exe Thread : 000025b8
Clément Foucault added 5 commits 2024-06-30 23:22:00 +02:00
# Conflicts:
#	source/blender/draw/engines/eevee_next/shaders/eevee_light_shadow_setup_comp.glsl
Merge branch 'main' into eevee-noise-decorelation
All checks were successful
buildbot/vexp-code-patch-lint Build done.
buildbot/vexp-code-patch-darwin-arm64 Build done.
buildbot/vexp-code-patch-darwin-x86_64 Build done.
buildbot/vexp-code-patch-linux-x86_64 Build done.
buildbot/vexp-code-patch-windows-amd64 Build done.
buildbot/vexp-code-patch-coordinator Build done.
1fa91d1f04
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR123156) when ready.
First-time contributor

I still get some errors

register_class(...):
Info: Registering operator class: 'NWLazyMix', bl_idname 'node.nw_lazy_mix' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWLazyConnect', bl_idname 'node.nw_lazy_connect' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWDeleteUnused', bl_idname 'node.nw_del_unused' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWSwapLinks', bl_idname 'node.nw_swap_links' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWResetBG', bl_idname 'node.nw_bg_reset' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddAttrNode', bl_idname 'node.nw_add_attr_node' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWFrameSelected', bl_idname 'node.nw_frame_selected' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWReloadImages', bl_idname 'node.nw_reload_images' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWMergeNodes', bl_idname 'node.nw_merge_nodes' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWBatchChangeNodes', bl_idname 'node.nw_batch_change' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWChangeMixFactor', bl_idname 'node.nw_factor' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWCopySettings', bl_idname 'node.nw_copy_settings' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWCopyLabel', bl_idname 'node.nw_copy_label' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWClearLabel', bl_idname 'node.nw_clear_label' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWModifyLabels', bl_idname 'node.nw_modify_labels' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddTextureSetup', bl_idname 'node.nw_add_texture' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddPrincipledSetup', bl_idname 'node.nw_add_textures_for_principled' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddReroutes', bl_idname 'node.nw_add_reroutes' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWLinkActiveToSelected', bl_idname 'node.nw_link_active_to_selected' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAlignNodes', bl_idname 'node.nw_align_nodes' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWSelectParentChildren', bl_idname 'node.nw_select_parent_child' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWDetachOutputs', bl_idname 'node.nw_detach_outputs' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWLinkToOutputNode', bl_idname 'node.nw_link_out' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWMakeLink', bl_idname 'node.nw_make_link' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWCallInputsMenu', bl_idname 'node.nw_call_inputs_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddSequence', bl_idname 'node.nw_add_sequence' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWAddMultipleImages', bl_idname 'node.nw_add_multiple_images' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWSaveViewer', bl_idname 'node.nw_save_viewer' has been registered before, unregistering previous
register_class(...):
Info: Registering operator class: 'NWResetNodes', bl_idname 'node.nw_reset_nodes' has been registered before, unregistering previous
register_class(...):
Info: Registering panel class: 'NodeWranglerPanel', bl_idname 'NODE_PT_nw_node_wrangler' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NodeWranglerMenu', bl_idname 'NODE_MT_nw_node_wrangler_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWMergeNodesMenu', bl_idname 'NODE_MT_nw_merge_nodes_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWMergeGeometryMenu', bl_idname 'NODE_MT_nw_merge_geometry_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWMergeShadersMenu', bl_idname 'NODE_MT_nw_merge_shaders_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWMergeMixMenu', bl_idname 'NODE_MT_nw_merge_mix_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWConnectionListOutputs', bl_idname 'NODE_MT_nw_connection_list_out' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWConnectionListInputs', bl_idname 'NODE_MT_nw_connection_list_in' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWMergeMathMenu', bl_idname 'NODE_MT_nw_merge_math_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWBatchChangeNodesMenu', bl_idname 'NODE_MT_nw_batch_change_nodes_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWBatchChangeBlendTypeMenu', bl_idname 'NODE_MT_nw_batch_change_blend_type_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWBatchChangeOperationMenu', bl_idname 'NODE_MT_nw_batch_change_operation_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWCopyToSelectedMenu', bl_idname 'NODE_MT_nw_copy_node_properties_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWCopyLabelMenu', bl_idname 'NODE_MT_nw_copy_label_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWAddReroutesMenu', bl_idname 'NODE_MT_nw_add_reroutes_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWLinkActiveToSelectedMenu', bl_idname 'NODE_MT_nw_link_active_to_selected_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWLinkStandardMenu', bl_idname 'NODE_MT_nw_link_standard_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWLinkUseNodeNameMenu', bl_idname 'NODE_MT_nw_link_use_node_name_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWLinkUseOutputsNamesMenu', bl_idname 'NODE_MT_nw_link_use_outputs_names_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWAttributeMenu', bl_idname 'NODE_MT_nw_node_attribute_menu' has been registered before, unregistering previous
register_class(...):
Info: Registering menu class: 'NWSwitchNodeTypeMenu', bl_idname 'NODE_MT_nw_switch_node_type_menu' has been registered before, unregistering previous
Compilation Subprocess: Failed to load cached shader binary 14034514437211212158
Compilation Subprocess: Failed to load cached shader binary 12040690470092275928
Compilation Subprocess: Failed to load cached shader binary 12880461565638251524_10614178732356668607
Compilation Subprocess: Failed to load cached shader binary 6093458811469418399_13469143218050124856
Compilation Subprocess: Failed to load cached shader binary 4945140193945094752_4510924210238896921
ERROR (gpu.shader): eevee_horizon_resolve ComputeShader:
|
10385 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
11382 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_light_shadow_setup ComputeShader:
|
6238 | vec2 rand = r_2d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:270:0: Error: C7011: implicit cast from "uint" to "int"
|
6263 | vec2 rand = r_2d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:295:0: Error: C7011: implicit cast from "uint" to "int"
|
6276 | vec3 rand = r_3d(sampling_buf.sample_index);
|
| eevee_light_shadow_setup_comp.glsl:308:0: Error: C7011: implicit cast from "uint" to "int"

Compilation Subprocess: Failed to load cached shader binary 9400718703074430754
Compilation Subprocess: Failed to load cached shader binary 13251480095309663018
Compilation Subprocess: Failed to load cached shader binary 5985055716324778104
Compilation Subprocess: Failed to load cached shader binary 3796821576420771105_13999449276137220602
Compilation Subprocess: Failed to load cached shader binary 8723202885159569403_5443186260491257033
ERROR (gpu.shader): eevee_deferred_capture_eval FragShader:
|
12628 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"

Compilation Subprocess: Failed to load cached shader binary 16162444421797835798
ERROR (gpu.shader): eevee_deferred_light_single FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_light_double FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_fallback ComputeShader:
|
9239 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10236 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_planar ComputeShader:
|
9244 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10241 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"
|
11853 | float noise_offset = r_1d(sampling_buf.sample_index);
|
| eevee_ray_trace_planar_comp.glsl:75:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_ray_trace_screen ComputeShader:
|
9245 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10242 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"
|
11857 | float noise_offset = r_1d(sampling_buf.sample_index);
|
| eevee_ray_trace_screen_comp.glsl:78:0: Error: C7011: implicit cast from "uint" to "int"

Compilation Subprocess: Failed to load cached shader binary 13383448207499965680
ERROR (gpu.shader): eevee_deferred_light_triple FragShader:
|
12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12928 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_deferred_planar_eval FragShader:
|
12632 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
12776 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_lightprobe_sphere_select ComputeShader:
|
5449 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"

Compilation Subprocess: Failed to load cached shader binary 12339060973368292256
Compilation Subprocess: Failed to load cached shader binary 3762856150455709947
ERROR (gpu.shader): eevee_surfel_light ComputeShader:
|
9664 | vec3 rand = sampling_blue_noise_fetch(pixel, RNG_SHADOW_FILTER, NOISE_BINOMIAL).rga;
|
| eevee_shadow_tracing_lib.glsl:421:0: Error: C1503: undefined variable "sampling_blue_noise_fetch"
|
9708 | vec4 rand_ray = sampling_blue_noise_fetch(
|
| eevee_shadow_tracing_lib.glsl:465:0: Error: C1503: undefined variable "sampling_blue_noise_fetch"

ERROR (gpu.shader): eevee_volume_scatter ComputeShader:
|
9248 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10245 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

ERROR (gpu.shader): eevee_volume_scatter_with_lights ComputeShader:
|
9252 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75;
|
| eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int"
|
10249 | noise = fract(noise + r_1d(sampling_buf.sample_index));
|
| eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int"

EEVEE: error: Could not compile static shader "eevee_deferred_light_single"
EEVEE: error: Could not compile static shader "eevee_deferred_light_double"
EEVEE: error: Could not compile static shader "eevee_deferred_light_triple"
Error : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF6B7FF9520
Module : blender.exe
Thread : 00005f5c
Writing: C:\Users\Donovane\AppData\Local\Temp\blender.crash.txt

I still get some errors register_class(...): Info: Registering operator class: 'NWLazyMix', bl_idname 'node.nw_lazy_mix' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWLazyConnect', bl_idname 'node.nw_lazy_connect' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWDeleteUnused', bl_idname 'node.nw_del_unused' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWSwapLinks', bl_idname 'node.nw_swap_links' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWResetBG', bl_idname 'node.nw_bg_reset' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddAttrNode', bl_idname 'node.nw_add_attr_node' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWFrameSelected', bl_idname 'node.nw_frame_selected' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWReloadImages', bl_idname 'node.nw_reload_images' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWMergeNodes', bl_idname 'node.nw_merge_nodes' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWBatchChangeNodes', bl_idname 'node.nw_batch_change' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWChangeMixFactor', bl_idname 'node.nw_factor' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWCopySettings', bl_idname 'node.nw_copy_settings' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWCopyLabel', bl_idname 'node.nw_copy_label' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWClearLabel', bl_idname 'node.nw_clear_label' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWModifyLabels', bl_idname 'node.nw_modify_labels' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddTextureSetup', bl_idname 'node.nw_add_texture' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddPrincipledSetup', bl_idname 'node.nw_add_textures_for_principled' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddReroutes', bl_idname 'node.nw_add_reroutes' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWLinkActiveToSelected', bl_idname 'node.nw_link_active_to_selected' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAlignNodes', bl_idname 'node.nw_align_nodes' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWSelectParentChildren', bl_idname 'node.nw_select_parent_child' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWDetachOutputs', bl_idname 'node.nw_detach_outputs' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWLinkToOutputNode', bl_idname 'node.nw_link_out' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWMakeLink', bl_idname 'node.nw_make_link' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWCallInputsMenu', bl_idname 'node.nw_call_inputs_menu' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddSequence', bl_idname 'node.nw_add_sequence' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWAddMultipleImages', bl_idname 'node.nw_add_multiple_images' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWSaveViewer', bl_idname 'node.nw_save_viewer' has been registered before, unregistering previous register_class(...): Info: Registering operator class: 'NWResetNodes', bl_idname 'node.nw_reset_nodes' has been registered before, unregistering previous register_class(...): Info: Registering panel class: 'NodeWranglerPanel', bl_idname 'NODE_PT_nw_node_wrangler' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NodeWranglerMenu', bl_idname 'NODE_MT_nw_node_wrangler_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWMergeNodesMenu', bl_idname 'NODE_MT_nw_merge_nodes_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWMergeGeometryMenu', bl_idname 'NODE_MT_nw_merge_geometry_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWMergeShadersMenu', bl_idname 'NODE_MT_nw_merge_shaders_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWMergeMixMenu', bl_idname 'NODE_MT_nw_merge_mix_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWConnectionListOutputs', bl_idname 'NODE_MT_nw_connection_list_out' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWConnectionListInputs', bl_idname 'NODE_MT_nw_connection_list_in' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWMergeMathMenu', bl_idname 'NODE_MT_nw_merge_math_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWBatchChangeNodesMenu', bl_idname 'NODE_MT_nw_batch_change_nodes_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWBatchChangeBlendTypeMenu', bl_idname 'NODE_MT_nw_batch_change_blend_type_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWBatchChangeOperationMenu', bl_idname 'NODE_MT_nw_batch_change_operation_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWCopyToSelectedMenu', bl_idname 'NODE_MT_nw_copy_node_properties_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWCopyLabelMenu', bl_idname 'NODE_MT_nw_copy_label_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWAddReroutesMenu', bl_idname 'NODE_MT_nw_add_reroutes_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWLinkActiveToSelectedMenu', bl_idname 'NODE_MT_nw_link_active_to_selected_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWLinkStandardMenu', bl_idname 'NODE_MT_nw_link_standard_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWLinkUseNodeNameMenu', bl_idname 'NODE_MT_nw_link_use_node_name_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWLinkUseOutputsNamesMenu', bl_idname 'NODE_MT_nw_link_use_outputs_names_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWAttributeMenu', bl_idname 'NODE_MT_nw_node_attribute_menu' has been registered before, unregistering previous register_class(...): Info: Registering menu class: 'NWSwitchNodeTypeMenu', bl_idname 'NODE_MT_nw_switch_node_type_menu' has been registered before, unregistering previous Compilation Subprocess: Failed to load cached shader binary _14034514437211212158_ Compilation Subprocess: Failed to load cached shader binary _12040690470092275928_ Compilation Subprocess: Failed to load cached shader binary _12880461565638251524_10614178732356668607_ Compilation Subprocess: Failed to load cached shader binary _6093458811469418399_13469143218050124856_ Compilation Subprocess: Failed to load cached shader binary _4945140193945094752_4510924210238896921_ ERROR (gpu.shader): eevee_horizon_resolve ComputeShader: | 10385 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 11382 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_light_shadow_setup ComputeShader: | 6238 | vec2 rand = r_2d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:270:0: Error: C7011: implicit cast from "uint" to "int" | 6263 | vec2 rand = r_2d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:295:0: Error: C7011: implicit cast from "uint" to "int" | 6276 | vec3 rand = r_3d(sampling_buf.sample_index); | | eevee_light_shadow_setup_comp.glsl:308:0: Error: C7011: implicit cast from "uint" to "int" Compilation Subprocess: Failed to load cached shader binary _9400718703074430754_ Compilation Subprocess: Failed to load cached shader binary _13251480095309663018_ Compilation Subprocess: Failed to load cached shader binary _5985055716324778104_ Compilation Subprocess: Failed to load cached shader binary _3796821576420771105_13999449276137220602_ Compilation Subprocess: Failed to load cached shader binary _8723202885159569403_5443186260491257033_ ERROR (gpu.shader): eevee_deferred_capture_eval FragShader: | 12628 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" Compilation Subprocess: Failed to load cached shader binary _16162444421797835798_ ERROR (gpu.shader): eevee_deferred_light_single FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_light_double FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_fallback ComputeShader: | 9239 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10236 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_planar ComputeShader: | 9244 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10241 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" | 11853 | float noise_offset = r_1d(sampling_buf.sample_index); | | eevee_ray_trace_planar_comp.glsl:75:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_ray_trace_screen ComputeShader: | 9245 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10242 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" | 11857 | float noise_offset = r_1d(sampling_buf.sample_index); | | eevee_ray_trace_screen_comp.glsl:78:0: Error: C7011: implicit cast from "uint" to "int" Compilation Subprocess: Failed to load cached shader binary _13383448207499965680_ ERROR (gpu.shader): eevee_deferred_light_triple FragShader: | 12784 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12928 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_deferred_planar_eval FragShader: | 12632 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 12776 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_lightprobe_sphere_select ComputeShader: | 5449 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" Compilation Subprocess: Failed to load cached shader binary _12339060973368292256_ Compilation Subprocess: Failed to load cached shader binary _3762856150455709947_ ERROR (gpu.shader): eevee_surfel_light ComputeShader: | 9664 | vec3 rand = sampling_blue_noise_fetch(pixel, RNG_SHADOW_FILTER, NOISE_BINOMIAL).rga; | | eevee_shadow_tracing_lib.glsl:421:0: Error: C1503: undefined variable "sampling_blue_noise_fetch" | 9708 | vec4 rand_ray = sampling_blue_noise_fetch( | | eevee_shadow_tracing_lib.glsl:465:0: Error: C1503: undefined variable "sampling_blue_noise_fetch" ERROR (gpu.shader): eevee_volume_scatter ComputeShader: | 9248 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10245 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" ERROR (gpu.shader): eevee_volume_scatter_with_lights ComputeShader: | 9252 | float random = square(pcg4d(vec4(P, r_1d(sampling_buf.sample_index))).x) * 0.75; | | eevee_lightprobe_volume_eval_lib.glsl:137:0: Error: C7011: implicit cast from "uint" to "int" | 10249 | noise = fract(noise + r_1d(sampling_buf.sample_index)); | | eevee_lightprobe_eval_lib.glsl:33:0: Error: C7011: implicit cast from "uint" to "int" EEVEE: error: Could not compile static shader "eevee_deferred_light_single" EEVEE: error: Could not compile static shader "eevee_deferred_light_double" EEVEE: error: Could not compile static shader "eevee_deferred_light_triple" Error : EXCEPTION_ACCESS_VIOLATION Address : 0x00007FF6B7FF9520 Module : blender.exe Thread : 00005f5c Writing: C:\Users\Donovane\AppData\Local\Temp\blender.crash.txt
First-time contributor

is it AMD vs Nvidia vs Intel drivers right now holding this up?

is it AMD vs Nvidia vs Intel drivers right now holding this up?
Author
Member

No, after testing, it introduces much more noise than the current technique. Need to research why and fix it.

No, after testing, it introduces much more noise than the current technique. Need to research why and fix it.
Clément Foucault changed title from EEVEE: Implement FAST Blue Noise to WIP: EEVEE: Implement FAST Blue Noise 2024-08-26 15:51:27 +02:00
All checks were successful
buildbot/vexp-code-patch-lint Build done.
buildbot/vexp-code-patch-darwin-arm64 Build done.
buildbot/vexp-code-patch-darwin-x86_64 Build done.
buildbot/vexp-code-patch-linux-x86_64 Build done.
buildbot/vexp-code-patch-windows-amd64 Build done.
buildbot/vexp-code-patch-coordinator Build done.
This pull request is marked as a work in progress.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u eevee-noise-decorelation:fclem-eevee-noise-decorelation
git checkout fclem-eevee-noise-decorelation
Sign in to join this conversation.
No reviewers
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#123156
No description provided.