本文整理汇总了Python中panda3d.core.PTAInt.emptyArray方法的典型用法代码示例。如果您正苦于以下问题:Python PTAInt.emptyArray方法的具体用法?Python PTAInt.emptyArray怎么用?Python PTAInt.emptyArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类panda3d.core.PTAInt
的用法示例。
在下文中一共展示了PTAInt.emptyArray方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def __init__(self):
""" Constructs a new Light, subclasses have to call this """
DebugObject.__init__(self, "AbstractLight")
ShaderStructElement.__init__(self)
self.debugNode = NodePath("LightDebug")
self.visualizationNumSteps = 32
self.dataNeedsUpdate = False
self.castShadows = False
self.debugEnabled = False
self.bounds = OmniBoundingVolume()
self.shadowSources = []
self.lightType = self.getLightType()
self.position = Vec3(0)
self.color = Vec3(1)
self.posterIndex = -1
self.direction = Vec3(0)
self.radius = 10.0
self.typeName = ""
self.sourceIndexes = PTAInt.emptyArray(6)
self.attached = False
self.shadowResolution = 512
self.index = -1
self.iesProfile = -1
self.iesProfileName = None
self.mvp = Mat4()
# A light can have up to 6 sources
for i in range(6):
self.sourceIndexes[i] = -1
示例2: _createInputHandles
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def _createInputHandles(self):
""" Defines various inputs to be used in the shader passes. Most inputs
use pta-arrays, so updating them is faster than using setShaderInput all the
time. """
self.cameraPosition = PTAVecBase3f.emptyArray(1)
self.currentViewMat = PTALMatrix4f.emptyArray(1)
self.currentProjMatInv = PTALMatrix4f.emptyArray(1)
self.lastMVP = PTALMatrix4f.emptyArray(1)
self.currentMVP = PTALMatrix4f.emptyArray(1)
self.frameIndex = PTAInt.emptyArray(1)
self.frameDelta = PTAFloat.emptyArray(1)
self.renderPassManager.registerStaticVariable("lastMVP", self.lastMVP)
self.renderPassManager.registerStaticVariable("currentMVP", self.currentMVP)
self.renderPassManager.registerStaticVariable("frameIndex", self.frameIndex)
self.renderPassManager.registerStaticVariable("cameraPosition", self.cameraPosition)
self.renderPassManager.registerStaticVariable("mainCam", self.showbase.cam)
self.renderPassManager.registerStaticVariable("mainRender", self.showbase.render)
self.renderPassManager.registerStaticVariable("frameDelta", self.frameDelta)
self.renderPassManager.registerStaticVariable("currentViewMat", self.currentViewMat)
self.renderPassManager.registerStaticVariable("currentProjMatInv", self.currentProjMatInv)
self.renderPassManager.registerStaticVariable("zeroVec2", Vec2(0))
self.renderPassManager.registerStaticVariable("zeroVec3", Vec3(0))
self.renderPassManager.registerStaticVariable("zeroVec4", Vec4(0))
self.transformMat = TransformState.makeMat(Mat4.convertMat(CSYupRight, CSZupRight))
示例3: _initArrays
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def _initArrays(self):
""" Inits the light arrays which are passed to the shaders """
# If you change this, don't forget to change it also in
# Shader/Includes/Configuration.include!
self.maxLights = {
"PointLight": 16,
"DirectionalLight": 1
}
# Max shadow casting lights
self.maxShadowLights = {
"PointLight": 16,
"DirectionalLight": 1
}
self.maxTotalLights = 8
for lightType, maxCount in self.maxShadowLights.items():
self.maxLights[lightType + "Shadow"] = maxCount
# Create array to store number of rendered lights this frame
self.numRenderedLights = {}
# Also create a PTAInt for every light type, which stores only the
# light id, the lighting shader will then lookup the light in the
# global lights array.
self.renderedLightsArrays = {}
for lightType, maxCount in self.maxLights.items():
self.renderedLightsArrays[lightType] = PTAInt.emptyArray(maxCount)
self.numRenderedLights[lightType] = PTAInt.emptyArray(1)
for lightType, maxCount in self.maxShadowLights.items():
self.renderedLightsArrays[
lightType + "Shadow"] = PTAInt.emptyArray(maxCount)
self.numRenderedLights[lightType + "Shadow"] = PTAInt.emptyArray(1)
示例4: __init__
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def __init__(self):
RenderPass.__init__(self)
self.currentIndex = PTAInt.emptyArray(1)
self.currentIndex[0] = 0
示例5: __init__
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def __init__(self, pipeline):
""" Creates a new LightManager. It expects a RenderPipeline as parameter. """
DebugObject.__init__(self, "LightManager")
self._initArrays()
self.pipeline = pipeline
self.settings = pipeline.getSettings()
# Create arrays to store lights & shadow sources
self.lights = []
self.shadowSources = []
self.queuedShadowUpdates = []
self.allLightsArray = ShaderStructArray(Light, self.maxTotalLights)
self.updateCallbacks = []
self.cullBounds = None
self.shadowScene = Globals.render
# Create atlas
self.shadowAtlas = ShadowAtlas()
self.shadowAtlas.setSize(self.settings.shadowAtlasSize)
self.shadowAtlas.create()
self.maxShadowMaps = 24
self.maxShadowUpdatesPerFrame = self.settings.maxShadowUpdatesPerFrame
self.numShadowUpdatesPTA = PTAInt.emptyArray(1)
self.updateShadowsArray = ShaderStructArray(
ShadowSource, self.maxShadowUpdatesPerFrame)
self.allShadowsArray = ShaderStructArray(
ShadowSource, self.maxShadowMaps)
# Create shadow compute buffer
self._createShadowComputationBuffer()
# Create the initial shadow state
self.shadowComputeCamera.setTagStateKey("ShadowPassShader")
# self.shadowComputeCamera.setInitialState(RenderState.make(
# ColorWriteAttrib.make(ColorWriteAttrib.C_off),
# ColorWriteAttrib.make(ColorWriteAttrib.C_rgb),
# DepthWriteAttrib.make(DepthWriteAttrib.M_on),
# CullFaceAttrib.make(CullFaceAttrib.MCullNone),
# 100))
self._createTagStates()
self.shadowScene.setTag("ShadowPassShader", "Default")
# Create debug overlay
self._createDebugTexts()
# Disable buffer on start
self.shadowComputeTarget.setActive(False)
# Bind arrays
self.updateShadowsArray.bindTo(self.shadowScene, "updateSources")
self.updateShadowsArray.bindTo(
self.shadowComputeTarget, "updateSources")
# Set initial inputs
for target in [self.shadowComputeTarget, self.shadowScene]:
target.setShaderInput("numUpdates", self.numShadowUpdatesPTA)
self.lightingComputator = None
self.lightCuller = None
self.skip = 0
self.skipRate = 0
示例6: __init__
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def __init__(self, pipeline):
""" Creates a new LightManager. It expects a RenderPipeline as parameter. """
DebugObject.__init__(self, "LightManager")
self.lightSlots = [None] * LightLimits.maxTotalLights
self.shadowSourceSlots = [None] * LightLimits.maxShadowMaps
self.queuedShadowUpdates = []
self.renderedLights = {}
self.pipeline = pipeline
# Create arrays to store lights & shadow sources
self.allLightsArray = ShaderStructArray(Light, LightLimits.maxTotalLights)
self.updateCallbacks = []
self.cullBounds = None
self.shadowScene = Globals.render
# Create atlas
self.shadowAtlas = ShadowAtlas()
self.shadowAtlas.setSize(self.pipeline.settings.shadowAtlasSize)
self.shadowAtlas.create()
self.maxShadowUpdatesPerFrame = self.pipeline.settings.maxShadowUpdatesPerFrame
self.numShadowUpdatesPTA = PTAInt.emptyArray(1)
self.updateShadowsArray = ShaderStructArray(
ShadowSource, self.maxShadowUpdatesPerFrame)
self.allShadowsArray = ShaderStructArray(
ShadowSource, LightLimits.maxShadowMaps)
# Create shadow compute buffer
self._createShadowPass()
self._createUnshadowedLightsPass()
self._createShadowedLightsPass()
if self.pipeline.settings.enableScattering:
self._createScatteringPass()
self._initLightCulling()
# Create the initial shadow state
self.shadowScene.setTag("ShadowPassShader", "Default")
# Register variables & arrays
self.pipeline.getRenderPassManager().registerDynamicVariable("shadowUpdateSources",
self._bindUpdateSources)
self.pipeline.getRenderPassManager().registerDynamicVariable("allLights",
self._bindAllLights)
self.pipeline.getRenderPassManager().registerDynamicVariable("allShadowSources",
self._bindAllSources)
self.pipeline.getRenderPassManager().registerStaticVariable("numShadowUpdates",
self.numShadowUpdatesPTA)
self._loadIESProfiles()
self._addShaderDefines()
self.lightingComputator = None
self._createDebugTexts()
示例7: create
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def create(self):
""" Creates this pipeline """
self.debug("Setting up render pipeline")
if self.settings is None:
self.error("You have to call loadSettings first!")
return
# Mount everything first
self.mountManager.mount()
# Store globals, as cython can't handle them
self.debug("Setting up globals")
Globals.load(self.showbase)
# Setting up shader loading
BetterShader._DumpShaders = self.settings.dumpGeneratedShaders
# We use PTA's for shader inputs, because that's faster than
# using setShaderInput
self.temporalProjXOffs = PTAInt.emptyArray(1)
self.cameraPosition = PTAVecBase3f.emptyArray(1)
self.motionBlurFactor = PTAFloat.emptyArray(1)
self.lastMVP = PTALMatrix4f.emptyArray(1)
self.currentMVP = PTALMatrix4f.emptyArray(1)
# Create onscreen gui
# For the temporal reprojection it is important that the window width
# is a multiple of 2
if self.showbase.win.getXSize() % 2 == 1:
self.error(
"The window has to have a width which is a multiple of 2 "
"(Current: ", self.showbase.win.getXSize(), ")")
self.error(
"I'll correct that for you, but next time pass the correct "
"window size!")
wp = WindowProperties()
wp.setSize(
self.showbase.win.getXSize() + 1, self.showbase.win.getYSize())
self.showbase.win.requestProperties(wp)
self.showbase.graphicsEngine.openWindows()
self.camera = self.showbase.cam
self.size = self._getSize()
self.cullBounds = None
# Debug variables to disable specific features
self.haveLightingPass = True
# haveCombiner can only be true when haveLightingPass is enabled
self.haveCombiner = True
self.haveMRT = True
# Not as good as I want it, so disabled. I'll work on it.
self.blurEnabled = False
self.debug("Window size is", self.size.x, "x", self.size.y)
self.showbase.camLens.setNearFar(0.1, 50000)
self.showbase.camLens.setFov(90)
self.showbase.win.setClearColor(Vec4(1.0,0.0,1.0,1.0))
# Create occlusion handler
self._setupOcclusion()
if self.settings.displayOnscreenDebugger:
self.guiManager = PipelineGuiManager(self)
self.guiManager.setup()
# Generate auto-configuration for shaders
self._generateShaderConfiguration()
# Create light manager, which handles lighting + shadows
if self.haveLightingPass:
self.lightManager = LightManager(self)
self.patchSize = LVecBase2i(
self.settings.computePatchSizeX,
self.settings.computePatchSizeY)
# Create separate scene graphs. The deferred graph is render
self.forwardScene = NodePath("Forward-Rendering")
self.transparencyScene = NodePath("Transparency-Rendering")
# We need no transparency (we store other information in the alpha
# channel)
self.showbase.render.setAttrib(
TransparencyAttrib.make(TransparencyAttrib.MNone), 100)
# Now create deferred render buffers
self._makeDeferredTargets()
#.........这里部分代码省略.........
示例8: create
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def create(self):
""" Creates this pipeline """
self.debug("Setting up render pipeline")
if self.settings is None:
self.error("You have to call loadSettings first!")
return
self.debug("Analyzing system ..")
SystemAnalyzer.analyze()
self.debug("Checking required Panda3D version ..")
SystemAnalyzer.checkPandaVersionOutOfDate(7,8,2014)
# Mount everything first
self.mountManager.mount()
# Store globals, as cython can't handle them
self.debug("Setting up globals")
Globals.load(self.showbase)
Globals.font = loader.loadFont("Data/Font/SourceSansPro-Semibold.otf")
Globals.font.setPixelsPerUnit(25)
# Setting up shader loading
BetterShader._DumpShaders = self.settings.dumpGeneratedShaders
# We use PTA's for shader inputs, because that's faster than
# using setShaderInput
self.temporalProjXOffs = PTAInt.emptyArray(1)
self.cameraPosition = PTAVecBase3f.emptyArray(1)
self.motionBlurFactor = PTAFloat.emptyArray(1)
self.lastMVP = PTALMatrix4f.emptyArray(1)
self.currentMVP = PTALMatrix4f.emptyArray(1)
self.currentShiftIndex = PTAInt.emptyArray(1)
# Initialize variables
self.camera = self.showbase.cam
self.size = self._getSize()
self.cullBounds = None
# For the temporal reprojection it is important that the window width
# is a multiple of 2
if self.settings.enableTemporalReprojection and self.size.x % 2 == 1:
self.error(
"The window has to have a width which is a multiple of 2 "
"(Current: ", self.showbase.win.getXSize(), ")")
self.error(
"I'll correct that for you, but next time pass the correct "
"window size!")
wp = WindowProperties()
wp.setSize(
self.showbase.win.getXSize() + 1, self.showbase.win.getYSize())
self.showbase.win.requestProperties(wp)
self.showbase.graphicsEngine.openWindows()
# Get new size
self.size = self._getSize()
# Debug variables to disable specific features
self.haveLightingPass = True
# haveCombiner can only be true when haveLightingPass is enabled
self.haveCombiner = True
self.haveMRT = True
# Not as good as I want it, so disabled. I'll work on it.
self.blurEnabled = False
self.debug("Window size is", self.size.x, "x", self.size.y)
self.showbase.camLens.setNearFar(0.1, 50000)
self.showbase.camLens.setFov(115)
self.showbase.win.setClearColor(Vec4(1.0, 0.0, 1.0, 1.0))
# Create GI handleer
if self.settings.enableGlobalIllumination:
self._setupGlobalIllumination()
# Create occlusion handler
self._setupOcclusion()
if self.settings.displayOnscreenDebugger:
self.guiManager = PipelineGuiManager(self)
self.guiManager.setup()
# Generate auto-configuration for shaders
self._generateShaderConfiguration()
# Create light manager, which handles lighting + shadows
if self.haveLightingPass:
self.lightManager = LightManager(self)
self.patchSize = LVecBase2i(
self.settings.computePatchSizeX,
self.settings.computePatchSizeY)
#.........这里部分代码省略.........
示例9: __init__
# 需要导入模块: from panda3d.core import PTAInt [as 别名]
# 或者: from panda3d.core.PTAInt import emptyArray [as 别名]
def __init__(self):
""" Creates this Technique """
AntialiasingTechnique.__init__(self, "SMAA")
self.currentIndex = PTAInt.emptyArray(1)
self.currentIndex[0] = 0