Size: a a a

2021 April 08

KR

Kai Ren in rust_offtopic
Попробуй тогда сделать контекст, куда ебануть все буферы. Для этого контекста ебануть Extract trait, который экстрактит необходиые буферы, и реализуй этот трейт для каждого из шейдеров. Потом ебашишь шейдеры в глист и разворачиваешь рекурсивно.
источник

p

polunin.ai in rust_offtopic
там половина это типы из одного имени
источник

p

polunin.ai in rust_offtopic
у меня примерно так и сделано уровнем повыше, только там вместо глистов Box<dyn Shader>
источник

p

polunin.ai in rust_offtopic
но бля эти буферы разрастаются, и в одной структуре держать неудобно
источник

p

polunin.ai in rust_offtopic
вот в этом прикол
источник

KR

Kai Ren in rust_offtopic
У тебя в структуре кроме буферов какие-то ещё жава-стайл фабрики
источник

p

polunin.ai in rust_offtopic
ну да фабрики
источник

p

polunin.ai in rust_offtopic
они условно говоря производят шейдеры к которым цепляются буферы
источник

KR

Kai Ren in rust_offtopic
Но твой поинт понятен, можно опять же завернуть буферы в глист, и формировать на ходу какой тебе надо.
источник

KR

Kai Ren in rust_offtopic
Положил в контекст, потом экстрактнул из контекста.
источник

DS

Doge Shibu in rust_offtopic
type OneBufferSetOf<T> =  OneBufferSet<Arc<DeviceLocalBuffer<[T]>>>;
type MutableOneBufferSet<T> = Mutable<usize, OneBufferSetOf<T>>;

pub struct LightningV2CommandFactory {
   divide_factory: DivideWorkgroupsCommandFactory,
   trace_rays_factory: TraceRaysToLightCommandFactory,
   lights_factory: LightsDiffuseCommandFactory,
   trace_mirrors_factory: ReflectFromMirrorsCommandFactory,
   copy_factory: CopyFromBufferToImageCommandFactory,
   make_gi_rays_factory: MakeGiRaysCommandFactory,
   lights_gi_factory: LightsGiCommandFactory,
   intersections_set: MutableOneBufferSet<LightRay>,
   reflects_intersections_set: MutableOneBufferSet<[IntersectionUniform]>,
   image_buffer_set: MutableOneBufferSet<[u32; 4]>,
   gi_intersections_set: MutableOneBufferSet<IntersectionUniform>,
   gi_thetas_set: MutableOneBufferSet<f32>,
   workgroups: OnceCell<[OneBufferSetOf<DispatchIndirectCommand>; 3]>,
   samples_per_bounce: u32,
}
источник

p

polunin.ai in rust_offtopic
я думал о хеш-мапе
источник

p

polunin.ai in rust_offtopic
глист неудобно
источник

p

polunin.ai in rust_offtopic
там типы будут длиннее чем пиписька у коня
источник

DS

Doge Shibu in rust_offtopic
Фигачь в тайпалиасы опять-таки
источник

KR

Kai Ren in rust_offtopic
Вот это место тебе и надо декомпозировать. Буферы отдельно, а шейдеры отдельно. А не всё в куче.
источник

KR

Kai Ren in rust_offtopic
+
источник

DS

Doge Shibu in rust_offtopic
+++
источник

H

Hirrolot in rust_offtopic
+, ещё чешется в жопе постоянно
источник

H

Hirrolot in rust_offtopic
Таблетки пью
источник