def initVoxelStorage(self): """ Creates t he 3D Texture to store the voxel generation grid """ self.voxelGenTex = Texture("VoxelsTemp") self.voxelGenTex.setup3dTexture(self.voxelGridResolution.x, self.voxelGridResolution.y, self.voxelGridResolution.z, Texture.TInt, Texture.FR32i) # Set appropriate filter types self.voxelGenTex.setMinfilter(SamplerState.FTNearest) self.voxelGenTex.setMagfilter(Texture.FTNearest) self.voxelGenTex.setWrapU(Texture.WMClamp) self.voxelGenTex.setWrapV(Texture.WMClamp) self.voxelGenTex.setWrapW(Texture.WMClamp) self.voxelGenTex.setClearColor(Vec4(0)) # Register texture MemoryMonitor.addTexture("Voxel Temp Texture", self.voxelGenTex)
def makePerTileStorage(self): """ Creates the buffer which stores which lights affect which tiles. The first 16 entries are counters which store how many lights of that type were rendered, and the following entries store the light indices """ self.tileStride = 0 self.tileStride += 16 # Counters for the light types self.tileStride += LightLimits.maxPerTileLights["PointLight"] self.tileStride += LightLimits.maxPerTileLights["PointLightShadow"] self.tileStride += LightLimits.maxPerTileLights["DirectionalLight"] self.tileStride += LightLimits.maxPerTileLights["DirectionalLightShadow"] self.tileStride += LightLimits.maxPerTileLights["SpotLight"] self.tileStride += LightLimits.maxPerTileLights["SpotLightShadow"] tileBufferSize = self.size.x * self.size.y * self.tileStride self.lightPerTileBuffer = Texture("LightsPerTileBuffer") self.lightPerTileBuffer.setupBufferTexture( tileBufferSize, Texture.TInt, Texture.FR32i, GeomEnums.UHDynamic) MemoryMonitor.addTexture("Light Per Tile Buffer", self.lightPerTileBuffer)