WIP: EEVEE: Implement FAST Blue Noise #123156
No reviewers
Labels
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 project
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#123156
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "fclem/blender:eevee-noise-decorelation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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?
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:
What Spatial Filter Should It Be Optimized For?
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:
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:
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.
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/
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
Commands to generate the noises:
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 ?
@blender-bot package
Package build started. Download here when ready.
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
@blender-bot package
Package build started. Download here when ready.
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
is it AMD vs Nvidia vs Intel drivers right now holding this up?
No, after testing, it introduces much more noise than the current technique. Need to research why and fix it.
EEVEE: Implement FAST Blue Noiseto WIP: EEVEE: Implement FAST Blue NoiseCheckout
From your project repository, check out a new branch and test the changes.