Page MenuHome

Regression: AOV passes doesn´t work on eevee
Closed, ResolvedPublic

Description

System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: NVIDIA GeForce GTX 1060/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 472.12

Blender Version
Broken: version: 3.2.0, branch: master, commit date: 2022-06-08 10:22, hash: rBe05e1e369187
Worked: (3.1)

Short description of error
When i setting up an aov pass on eevee doesn´t appear later on render pass

Exact steps for others to reproduce the error
1- Open blender
2- Create an aov pass for default cube ( doesn´t matter if is set to color or value)
3- Add an aov output node in shader editor
4- Render and check pass

File with first 3 steps included:

Event Timeline

Pratik Borhade (PratikPB2123) changed the task status from Needs Triage to Confirmed.Jun 16 2022, 8:04 AM

Thanks for the report. I can confirm.
Will do the bisect

Pratik Borhade (PratikPB2123) renamed this task from AOV passes doesn´t work on eevee to Regression: AOV passes doesn´t work on eevee.Jun 16 2022, 8:13 AM
Pratik Borhade (PratikPB2123) updated the task description. (Show Details)

Interesting that AOV test case is working... will start a debugging session.
Ok it is working when the output is connected to an input node.
I thing that the data is read from a variable that isn't set, unless it is connected.

Closure nodetree_exec()
{
vec3 tmp1;
world_normals_get(tmp1);

vec3 tmp2;
world_normals_get(tmp2);

vec3 cons27 = vec3(0, 0, 0);
float cons29 = float(1);
float cons30 = float(0);
float cons31 = float(0);
float cons32 = float(0);
Closure tmp34;
node_bsdf_principled(node_tree.u3, node_tree.u4, node_tree.u5, node_tree.u6, node_tree.u7, node_tree.u8, node_tree.u9, node_tree.u10, node_tree.u11, node_tree.u12, node_tree.u13, node_tree.u14, node_tree.u15, node_tree.u16, node_tree.u17, node_tree.u18, node_tree.u19, node_tree.u20, node_tree.u21, node_tree.u22, node_tree.u23, node_tree.u24, tmp1, tmp2, cons27, node_tree.u28, cons29, cons30, cons31, cons32, node_tree.u33, tmp34);

Closure tmp36;
node_output_material_surface(tmp34, tmp36);

return tmp36;
}

vs

Closure nodetree_exec()
{
vec3 tmp1;
world_normals_get(tmp1);

vec3 tmp2;
world_normals_get(tmp2);

vec3 cons27 = vec3(0, 0, 0);
float cons29 = float(1);
float cons30 = float(0);
float cons31 = float(0);
float cons32 = float(0);
Closure tmp34;
node_bsdf_principled(node_tree.u3, node_tree.u4, node_tree.u5, node_tree.u6, node_tree.u7, node_tree.u8, node_tree.u9, node_tree.u10, node_tree.u11, node_tree.u12, node_tree.u13, node_tree.u14, node_tree.u15, node_tree.u16, node_tree.u17, node_tree.u18, node_tree.u19, node_tree.u20, node_tree.u21, node_tree.u22, node_tree.u23, node_tree.u24, tmp1, tmp2, cons27, node_tree.u28, cons29, cons30, cons31, cons32, node_tree.u33, tmp34);

Closure tmp36;
node_output_material_surface(tmp34, tmp36);

float cons39 = float(4.98533088e-39);
Closure tmp40;
node_output_aov(node_tree.u37, node_tree.u38, cons39, tmp40);

return tmp36;
}

It seems that the unconnected aov node is pruned when calling ntree_shader_pruned_unused. Removing this call will show the AOV correctly.