Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Base closure pointer in layer is incorrect when using batched execute

Aperta
#1,801 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
38/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
cpp, linux

Direzione di ricerca

Inizia con il caso di test minimo allegato, in particolare test2.cpp, e riproduci il problema con USE_BATCHED abilitato e senza. Traccia process_bsdf_closure, MxLayerParams e la gestione delle layer closure di osl; il lavoro è concluso quando l’esecuzione batch segnala la diffuse closure come base e l’assertion esistente non fallisce più, mentre l’output non batch rimane corretto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

batch shading bug shading system
Problem

Base closure pointer in osl layer points to its parent layer closure when using batched execute while it should actually point to a diffuse closure.

void process_bsdf_closure(const ClosureColor* closure) {
const ClosureComponent* comp = closure->as_comp();
const MxLayerParams* srcparams = comp->as<MxLayerParams>();
assert(srcparams->base != closure);

minimal_test_case.zip

Steps to Reproduce

Download the attached minimal sample and issue the following commands:

g++ -DUSE_BATCHED -mavx2 -mfma -mtune=skylake -mf16c -g test2.cpp -loslcomp -loslexec -loslnoise -loslquery -lOpenImageIO -lOpenImageIO_Util
./a.out
parsing mx layer closure
parsing generalized schlick closure
Error: base closure in mx layer points back to currently parsed closure

g++ -mavx2 -mfma -mtune=skylake -mf16c -g test2.cpp -loslcomp -loslexec -loslnoise -loslquery -lOpenImageIO -lOpenImageIO_Util
./a.out
parsing mx layer closure
parsing generalized schlick closure
parsing diffuse closure
<correct output, no problem!>

Here's .osl shader codes in the .zip:

shader layer_test(
                            color base_color = color(0.8, 0.8, 0.8),
                            color specular_tint = color(1.0),
                            float roughness = 0.5,
                            normal Tangent = normalize(dPdu),
                            output closure color BSDF = 0)
{
BSDF = base_color * diffuse(N);
color F0 = specular_tint;
color F90 = color(1.0);
BSDF = layer(generalized_schlick_bsdf(N, Tangent, color(1.0), color(0.0), roughness, roughness, F0, F90, 0.0, "ggx"),BSDF);
}
surface output_surface(closure color Surface = 0)
{
  Ci = Surface;
}
Versions
  • OSL branch/version: v1.13.8.0
  • OS: linux 64-bit 5.10.0-18-amd64
  • C++ compiler: g++ 10.2.1
  • LLVM version: 11.0.1-2
  • OIIO version: v2.5.4.0
Lingua principale
C++
Stelle
2.3k
Fork
415
Merge medio
2g 14h
PR unite (30g)
13

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di AcademySoftwareFoundation/OpenShadingLanguage

Tutte le issue di AcademySoftwareFoundation/OpenShadingLanguage

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.