ITADN

TSL: Add support for BatchIndirectIndex

#34078OpenMicolaL 创建于 2026-07-20
M
MicolaLcommented
### Description If I want to extend BatchedMesh with per instance emissive I need access to indirectIndex. ### Solution Similar solution as TSL.batchColor ### Alternatives Custom fetch: const getIndirectIndex = Fn( ( [ indirectTexture, id ] : [any, any] ) => { const size = int(textureSize(textureLoad(indirectTexture),0).x).toConst(); const x = int(id).mod(size).toConst(); const y = int(id).div(size).toConst(); return textureLoad(indirectTexture,ivec2(x,y)).x; } ); const batchingIdNode = TSL.instanceIndex; const indirectIndex = getIndirectIndex(indirectTexture, TSL.int( batchingIdNode ));` ### Additional context Solution with emissive fetch: ``` const getBatchingEmissive = Fn( ( [ emissiveTexture, id ]: [any, any] ) => { const size = int(textureSize(textureLoad(emissiveTexture),0).x).toConst(); const x = int(id).mod(size).toConst(); const y = int(id).div(size).toConst(); return textureLoad(emissiveTexture,ivec2(x,y)).x; } ); ` const getIndirectIndex = Fn( ( [ indirectTexture, id ] : [any, any] ) => { const size = int(textureSize(textureLoad(indirectTexture),0).x).toConst(); const x = int(id).mod(size).toConst(); const y = int(id).div(size).toConst(); return textureLoad(indirectTexture,ivec2(x,y)).x; } ); const batchingIdNode = TSL.instanceIndex; const indirectIndex = getIndirectIndex(indirectTexture, TSL.int( batchingIdNode )); const emissive = TSL.vertexStage(TSL.float(getBatchingEmissive(emissiveTexture,indirectIndex))); ```
0 条评论