Ejemplo n.º 1
0
def RenderSpaceObject(outPath,
                      scenePath='',
                      objectPath='',
                      sofDNA=None,
                      size=128,
                      bgColor=None,
                      transparent=False,
                      backgroundPath=None,
                      overlayPath=None,
                      techPath=None,
                      cameraAngle=None,
                      freezeTime=True,
                      postProcessingQuality=2,
                      supersampleQuality=2,
                      modifyScene=None,
                      sunDirection=None,
                      animationStates=[]):
    if freezeTime:
        FreezeTime()
    trinity.GetVariableStore().RegisterVariable('DepthMap',
                                                trinity.TriTextureRes())
    trinity.GetVariableStore().RegisterVariable('DepthMapMsaa',
                                                trinity.TriTextureRes())
    if scenePath:
        scene = blue.resMan.LoadObject(scenePath)
    else:
        scene = trinity.EveSpaceScene()
    model = LoadSpaceObject(objectPath, sofDNA, scene, animationStates)
    view, projection = GetViewProjectionForModel(model, scene, cameraAngle)
    if modifyScene:
        view, projection = modifyScene(scene, view, projection)
    sunDirection = sunDirection or (-view.transform[0][2],
                                    -view.transform[1][2],
                                    -view.transform[2][2])
    SetupScene(scene,
               transparentBackground=transparent,
               sunDirection=sunDirection,
               pbr=bool(sofDNA))
    hostBitmap = RenderToSurface(scene=scene,
                                 view=view,
                                 projection=projection,
                                 size=size,
                                 bgColor=bgColor,
                                 transparent=transparent,
                                 backgroundPath=backgroundPath,
                                 overlayPath=overlayPath,
                                 techPath=techPath,
                                 postProcessingQuality=postProcessingQuality,
                                 supersampleQuality=supersampleQuality)
    hostBitmap.Save(outPath)
Ejemplo n.º 2
0
    def CreateTargetsOnModifier(self, modifier, asRenderTargets = False):
        textureFormat = trinity.PIXEL_FORMAT.B8G8R8A8_UNORM

        def validateTarget(target, width, height):
            if not (target and target.isGood and target.depth > 0):
                return False
            if target.width != width or target.height != height:
                return False
            return True

        if modifier.decalData.bodyEnabled:
            modifier.mapD[pdDef.DOLL_PARTS.BODY] = trinity.TriTextureRes(trinity.Tr2RenderTarget(self.size[0] / 2, self.size[1], 1, textureFormat))
        if modifier.decalData.headEnabled:
            modifier.mapD[pdDef.DOLL_PARTS.HEAD] = trinity.TriTextureRes(trinity.Tr2RenderTarget(self.size[0] / 2, self.size[1] / 2, 1, textureFormat))
Ejemplo n.º 3
0
 def ApplyAttributes(self, attributes):
     Sprite.ApplyAttributes(self, attributes)
     sm.RegisterNotify(self)
     self.textureRes = trinity.TriTextureRes()
     self.texture = trinity.Tr2Sprite2dTexture()
     self.player = None
     self.path = None
     self.audioTrack = 0
     self.videoLoop = False
     self.emitter = None
     self._updateStep = None
     self._isFetchingFile = False
     RO = self.GetRenderObject()
     self.disableAudio = attributes.get('disableAudio',
                                        self.default_disableAudio)
     self._positionComponent = attributes.get('positionComponent', None)
     self.positionComponent = None
     if 'videoPath' in attributes and attributes[
             'videoPath'] and attributes.get('videoAutoPlay',
                                             self.default_videoAutoPlay):
         self.SetVideoPath(
             attributes['videoPath'], attributes.get('audioTrack', 0),
             attributes.get('videoLoop', self.default_videoLoop))
     if 'pos' in attributes:
         pos = attributes.get('pos',
                              (self.default_left, self.default_top,
                               self.default_width, self.default_height))
         RO.displayX, RO.displayY, RO.displayWidth, RO.displayHeight = pos
Ejemplo n.º 4
0
 def GetResourceAndRender(self, resourceTypeID):
     """
     Get the spherical harmonic from planetSvc going to server if nessesasary.
     We render the SH in slices yielding in between so we won't stall the client.
     We check if we are still rendering the correct resournce whenever we have yielded the thread.
     """
     self.LogInfo('GetResourceAndRender resourceTypeID', resourceTypeID)
     planet = sm.GetService('planetSvc').GetPlanet(self.planetID)
     inRange, sh = planet.GetResourceData(resourceTypeID)
     self.currSphericalHarmonic = sh
     sh = builder.CopySH(sh)
     builder.ScaleSH(sh, 1.0 / const.planetResourceMaxValue)
     chart = self.ChartResourceLayer(sh)
     buf = chart.makeChart2(chart.PNG)
     if resourceTypeID != self.selectedResourceTypeID:
         raise ResourceRenderAbortedError
     bmp = trinity.Tr2HostBitmap(PLANET_RESOURCE_TEX_WIDTH,
                                 PLANET_RESOURCE_TEX_HEIGHT, 1,
                                 trinity.PIXEL_FORMAT.B8G8R8X8_UNORM)
     bmp.LoadFromPngInMemory(buf)
     texture = trinity.TriTextureRes()
     if resourceTypeID != self.selectedResourceTypeID:
         raise ResourceRenderAbortedError
     texture.CreateFromHostBitmap(bmp)
     if resourceTypeID != self.selectedResourceTypeID:
         raise ResourceRenderAbortedError
     return (inRange, texture)
Ejemplo n.º 5
0
 def DoPreProcessEffectForPhotoSvc(self, size):
     renderTarget = trinity.Tr2RenderTarget(2 * size, size, 0, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
     vp = trinity.TriViewport()
     vp.width = 2 * size
     vp.height = size
     if not self.LoadRedFiles():
         return
     trinity.WaitForResourceLoads()
     heightMapParam1 = self.__GetBakeShaderParameter('NormalHeight1', 'trinity.TriTextureParameter')
     if heightMapParam1 is not None:
         heightMapParam1.resourcePath = self.heightMapResPath1
     heightMapParam2 = self.__GetBakeShaderParameter('NormalHeight2', 'trinity.TriTextureParameter')
     if heightMapParam2 is not None:
         heightMapParam2.resourcePath = self.heightMapResPath2
     renderTargetSizeParam = self.__GetBakeShaderParameter('TargetTextureHeight', 'trinity.TriTextureParameter')
     if renderTargetSizeParam is not None:
         renderTargetSizeParam.value = size
     trinity.WaitForResourceLoads()
     rj = trinity.CreateRenderJob('Height normal Compositing')
     rj.PushRenderTarget(renderTarget)
     rj.SetViewport(vp)
     rj.PushDepthStencil(None)
     rj.Clear((0.0, 0.0, 0.0, 0.0))
     rj.RenderEffect(self.effectHeight)
     rj.PopDepthStencil()
     rj.PopRenderTarget()
     rj.GenerateMipMaps(renderTarget)
     rj.ScheduleOnce()
     rj.WaitForFinish()
     tex = trinity.TriTextureRes()
     tex.CreateAndCopyFromRenderTarget(renderTarget)
     heightMapParamList = self.__GetPlanetShaderParameters('HeightMap', 'trinity.TriTextureParameter')
     for heightMapParam in heightMapParamList:
         heightMapParam.SetResource(tex)
Ejemplo n.º 6
0
    def PrepareBlurredBackBuffer(self):
        if self.blurredBackBufferRenderJob:
            renderJob = self.blurredBackBufferRenderJob
            renderJob.enabled = True
            for step in renderJob.steps[:]:
                renderJob.steps.remove(step)

        else:
            renderJob = trinity.CreateRenderJob()
            renderJob.name = 'Blurred Back Buffer'
            renderJob.ScheduleRecurring(insertFront=True)
            self.blurredBackBufferRenderJob = renderJob
        if not settings.char.windows.Get('enableWindowBlur', True):
            if self.blurredBackBufferRenderJob:
                self.blurredBackBufferRenderJob.enabled = False
            return
        backbuffer = trinity.device.GetRenderContext().GetDefaultBackBuffer()
        self.spaceSceneBackBufferCopy = trinity.Tr2RenderTarget()
        self.spaceSceneBackBufferCopy.Create(trinity.app.width,
                                             trinity.app.height, 1,
                                             backbuffer.format)
        self.spaceSceneBackBufferDownSizedCopy = trinity.Tr2RenderTarget()
        self.spaceSceneBackBufferDownSizedCopy.name = 'spaceSceneBackBufferDownSizedCopy'
        self.spaceSceneBackBufferDownSizedCopy.Create(trinity.app.width / 4,
                                                      trinity.app.height / 4,
                                                      1, backbuffer.format)
        step = trinity.TriStepResolve(self.spaceSceneBackBufferCopy,
                                      backbuffer)
        step.name = 'Resolve back buffer'
        renderJob.steps.append(step)
        if self.desktopBlurredBg:
            self.RemoveRootObject(self.desktopBlurredBg)
            self.desktopBlurredBg.Close()
        self.desktopBlurredBg = self.CreateRootObject(
            name='desktopBlurred',
            renderTarget=self.spaceSceneBackBufferCopy,
            renderJob=renderJob,
            isFullscreen=True)
        self.desktopBlurredBg.renderObject.clearBackground = False
        renderJob.PushDepthStencil().pushCurrent = False
        renderJob.SetVariableStore(
            'BlitCurrent',
            self.spaceSceneBackBufferCopy).name = 'Set BlitCurrent variable'
        value = (1.0 / trinity.app.width, 1.0 / trinity.app.height,
                 trinity.app.width, trinity.app.height)
        renderJob.SetVariableStore('g_texelSize',
                                   value).name = 'Set g_texelSize variable'
        renderJob.PushRenderTarget(self.spaceSceneBackBufferDownSizedCopy)
        renderJob.Clear((0, 0, 0, 0))
        effect = trinity.Tr2Effect()
        effect.effectFilePath = 'res:/Graphics/Effect/Managed/Space/PostProcess/ColorDownFilter4.fx'
        renderJob.RenderEffect(effect)
        renderJob.PopRenderTarget()
        renderJob.PopDepthStencil()
        textureRes = trinity.TriTextureRes()
        textureRes.SetFromRenderTarget(self.spaceSceneBackBufferDownSizedCopy)
        atlasTexture = trinity.Tr2AtlasTexture()
        atlasTexture.textureRes = textureRes
        self.blurredBackBufferAtlas = atlasTexture
        sm.ScatterEvent('OnBlurredBufferCreated')
Ejemplo n.º 7
0
def CreateSceneWithUI():
    del trinity.renderJobs.recurring[:]
    scene2d = trinity.Tr2Sprite2dScene()
    scene2d.width = 512
    scene2d.height = 512
    scene2d.clearBackground = True
    scene2d.isFullScreen = False
    tex = trinity.Tr2RenderTarget(512, 512, 1,
                                  trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
    scene, screen = CreateScene3d(trinity.TriTextureRes(tex))
    scene2d.translation = screen.translation
    scene2d.rotation = screen.rotation
    scene2d.scaling = screen.scaling
    SetupAnimation(scene2d)
    rj = trinity.CreateRenderJob()
    rj.name = 'Scene with UI'
    rj.Update(scene).name = 'Update 3D scene'
    rj.Update(scene2d).name = 'Update 2D scene'
    rj.SetPushRenderTarget(tex).name = 'Set texture as render target'
    rj.RenderScene(scene2d).name = 'Render 2D scene'
    rj.SetPopRenderTarget().name = 'Set framebuffer as render target'
    rj.RenderScene(scene).name = 'Render 3D scene'
    rj.ScheduleRecurring()
    picker = Scene2dPicker(scene2d)
    trinity.device.tickInterval = 0
Ejemplo n.º 8
0
 def Create3DRender(self):
     self.renderTexture = trinity.TriTexture2DParameter()
     self.renderTexture.name = 'DiffuseMap'
     self.renderColor = trinity.TriVector4Parameter()
     self.renderColor.name = 'DiffuseColor'
     self.renderColor.value = (1, 1, 1, 1)
     self.renderEffect = trinity.Tr2Effect()
     self.renderEffect.effectFilePath = 'res:/Graphics/Effect/Managed/Space/SpecialFX/TextureColor.fx'
     self.renderEffect.resources.append(self.renderTexture)
     self.renderEffect.parameters.append(self.renderColor)
     self.renderArea = trinity.Tr2MeshArea()
     self.renderArea.effect = self.renderEffect
     self.renderMesh = trinity.Tr2Mesh()
     self.renderMesh.name = 'orbitalBombardmentTarget'
     self.renderMesh.geometryResPath = 'res:/Graphics/Generic/UnitPlane/UnitPlane.gr2'
     self.renderMesh.transparentAreas.append(self.renderArea)
     self.transform = trinity.EveRootTransform()
     self.transform.mesh = self.renderMesh
     self.renderScene.objects.append(self.transform)
     self.renderJob = trinity.CreateRenderJob()
     self.renderJob.Update(self.renderScene)
     self.renderObject = self.GetRenderObject()
     self.renderObject.is2dPick = False
     self.renderTarget = trinity.Tr2RenderTarget(
         self.width, self.height, 1, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
     self.renderJob.PushRenderTarget(self.renderTarget)
     self.renderJob.RenderScene(self.renderObject)
     self.renderJob.PopRenderTarget()
     self.renderJob.ScheduleRecurring(insertFront=True)
     self.renderTexture.SetResource(trinity.TriTextureRes(
         self.renderTarget))
     self.renderSteps[-1].enabled = False
     return self.transform
Ejemplo n.º 9
0
 def __init__(self, name, rt):
     super(BuiltinRenderTargetParameter,
           self).__init__(name, {'type': 'rendertarget'})
     self.rt = rt
     self.texture = trinity.TriTextureRes()
     self.texture.name = self.name
     self.texture.SetFromRenderTarget(self.rt)
Ejemplo n.º 10
0
 def SetRenderTargets(self, customBackBuffer, customDepthStencil, depthTexture, blitTexture, distortionTexture):
     self.RemoveStep('SET_DEPTH')
     if self.GetSwapChain() is not None:
         self.AddStep('SET_SWAPCHAIN_RT', trinity.TriStepSetRenderTarget(self.GetSwapChain().backBuffer))
         self.AddStep('SET_SWAPCHAIN_DEPTH', trinity.TriStepSetDepthStencil(self.GetSwapChain().depthStencilBuffer))
     else:
         self.RemoveStep('SET_SWAPCHAIN_RT')
         self.RemoveStep('SET_SWAPCHAIN_DEPTH')
     activePostProcessing = self.usePostProcessing and self.postProcessingJob.liveCount > 0
     if customBackBuffer is not None:
         self.AddStep('SET_CUSTOM_RT', trinity.TriStepPushRenderTarget(customBackBuffer))
         self.AddStep('SET_FINAL_RT', trinity.TriStepPopRenderTarget())
         if self.msaaEnabled and not activePostProcessing:
             if self.hdrEnabled:
                 self.AddStep('FINAL_BLIT', self._DoFormatConversionStep(blitTexture, customBackBuffer))
             else:
                 self.AddStep('FINAL_BLIT', trinity.TriStepResolve(self.GetBackBufferRenderTarget(), customBackBuffer))
         elif self.hdrEnabled and not activePostProcessing and not self.msaaEnabled:
             self.AddStep('FINAL_BLIT', self._DoFormatConversionStep(customBackBuffer))
         else:
             self.RemoveStep('FINAL_BLIT')
         if self.fxaaEnabled:
             self.AddStep('SET_VAR_GATHER', trinity.TriStepSetVariableStore('GatherMap', customBackBuffer))
             self.RemoveStep('FINAL_BLIT')
         else:
             self.RemoveStep('SET_VAR_GATHER')
     else:
         self.RemoveStep('SET_CUSTOM_RT')
         self.RemoveStep('FINAL_BLIT')
         self.RemoveStep('SET_FINAL_RT')
         self.RemoveStep('SET_VAR_GATHER')
     if customDepthStencil is not None:
         self.AddStep('SET_DEPTH', trinity.TriStepPushDepthStencil(customDepthStencil))
         self.AddStep('RESTORE_DEPTH', trinity.TriStepPopDepthStencil())
     else:
         self.RemoveStep('RESTORE_DEPTH')
     if self.depthTexture is not None:
         if not self.doDepthPass:
             self.AddStep('SET_DEPTH', trinity.TriStepPushDepthStencil(depthTexture))
             self.AddStep('RESTORE_DEPTH', trinity.TriStepPopDepthStencil())
         self._SetDepthMap()
         self.AddStep('SET_VAR_DEPTH', trinity.TriStepSetVariableStore('DepthMap', depthTexture))
     else:
         if not self.msaaEnabled:
             self.RemoveStep('SET_DEPTH')
             self.RemoveStep('RESTORE_DEPTH')
         self.RemoveStep('SET_VAR_DEPTH')
     self._RefreshPostProcessingJob(self.postProcessingJob, self.usePostProcessing and self.prepared)
     self._RefreshPostProcessingJob(self.distortionJob, self.distortionEffectsEnabled and self.prepared)
     self._RefreshPostProcessingJob(self.backgroundDistortionJob, self.distortionEffectsEnabled and self.prepared)
     if distortionTexture is not None:
         self.AddStep('DO_DISTORTIONS', trinity.TriStepRunJob(self.distortionJob))
         distortionTriTextureRes = trinity.TriTextureRes()
         distortionTriTextureRes.SetFromRenderTarget(distortionTexture)
         self.distortionJob.SetPostProcessVariable('Distortion', 'TexDistortion', distortionTriTextureRes)
         self.backgroundDistortionJob.SetPostProcessVariable('Distortion', 'TexDistortion', distortionTriTextureRes)
     else:
         self.RemoveStep('DO_DISTORTIONS')
     self._CreateDepthPass()
Ejemplo n.º 11
0
 def RebuildResource(self):
     height = self.measurer.ascender - self.measurer.descender
     width = self.measurer.cursorX
     tr = trinity.TriTextureRes(width, height, 1,
                                trinity.PIXEL_FORMAT.B8G8R8A8_UNORM,
                                trinity.BUFFER_USAGE_FLAGS.CPU_WRITE)
     self.measurer.DrawToTexture(tr)
     self.diffuseMap.SetResource(tr)
Ejemplo n.º 12
0
 def OnCreate(self, device):
     texture = trinity.TriTextureRes(self.textureWidth, self.textureHeight,
                                     1, trinity.PIXEL_FORMAT.B8G8R8X8_UNORM)
     self.textureAwaitingSwap = texture
     self.surface = texture
     if self.browserSession is not None:
         self.browserSession.SetBrowserSurface(self.surface,
                                               self._OnSurfaceReady)
Ejemplo n.º 13
0
def SetupCqStationLogo(paramString):
    """
    Resource constructor for the station name decal object.
    """
    if uicore.isRunning:
        return trinity.TriTextureRes()
    else:
        return blue.resMan.GetResource('res:/UI/Texture/Corps/1_128_1.png')
Ejemplo n.º 14
0
 def __init__(self, name, data):
     super(RenderTargetParameter, self).__init__(name, data)
     if self._type != 'rendertarget':
         raise RuntimeError()
     self._data = data
     self.rt = None
     self.texture = trinity.TriTextureRes()
     self.texture.name = self.name
Ejemplo n.º 15
0
    def DoPreProcessEffect(self, size, format, renderTarget):
        if renderTarget is None:
            self.model.resourceActionPending = False
            self.model.ready = True
            return
        vp = trinity.TriViewport()
        vp.width = 2 * size
        vp.height = size
        trinity.WaitForResourceLoads()
        if self.model is None:
            return
        if len(self.modelRes) == 0:
            if not self.LoadRedFiles():
                self.model.resourceActionPending = False
                self.model.ready = True
                return
        else:
            self.__ReloadLargeResources()
        heightMapParam1 = self.__GetBakeShaderParameter('NormalHeight1', 'trinity.TriTextureParameter')
        if heightMapParam1 is not None:
            heightMapParam1.resourcePath = self.heightMapResPath1
        heightMapParam2 = self.__GetBakeShaderParameter('NormalHeight2', 'trinity.TriTextureParameter')
        if heightMapParam2 is not None:
            heightMapParam2.resourcePath = self.heightMapResPath2
        renderTargetSizeParam = self.__GetBakeShaderParameter('TargetTextureHeight', 'trinity.TriTextureParameter')
        if renderTargetSizeParam is not None:
            renderTargetSizeParam.value = size
        trinity.WaitForResourceLoads()
        if self.model is None:
            return
        rj = trinity.CreateRenderJob('Height normal Compositing')
        rj.PushRenderTarget(renderTarget)
        rj.SetViewport(vp)
        rj.PushDepthStencil(None)
        step = rj.Clear((0.0, 0.0, 0.0, 0.0), 1.0)
        step.isDepthCleared = False
        rj.RenderEffect(self.effectHeight)
        rj.PopDepthStencil()
        rj.PopRenderTarget()
        rj.GenerateMipMaps(renderTarget)
        rj.ScheduleOnce()
        rj.WaitForFinish()
        if self.model is None:
            return
        tex = trinity.TriTextureRes()
        tex.CreateAndCopyFromRenderTargetWithSize(renderTarget, size * 2, size)
        if heightMapParam1 is not None:
            heightMapParam1.resourcePath = ''
            heightMapParam1.SetResource(None)
        if heightMapParam2 is not None:
            heightMapParam2.resourcePath = ''
            heightMapParam2.SetResource(None)
        heightMapParamList = self.__GetPlanetShaderParameters('HeightMap', 'trinity.TriTextureParameter')
        for heightMapParam in heightMapParamList:
            heightMapParam.SetResource(tex)

        self.model.ready = True
        self.model.resourceActionPending = False
Ejemplo n.º 16
0
 def _OnCreateTextures(self, player, width, height):
     try:
         self.textureRes = trinity.TriTextureRes(
             width, height, 1, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
         player.bgra_texture = self.textureRes
         self.texture.atlasTexture = trinity.Tr2AtlasTexture()
         self.texture.atlasTexture.textureRes = self.textureRes
     except:
         logging.exception('Exception in VideoPlayer.on_create_textures')
Ejemplo n.º 17
0
 def OnCreate(self, device):
     """
         This is called by Trinity whenever we need to recreate the texture.
         e.g. When the graphics device has been lost and restored.
     """
     texture = trinity.TriTextureRes(self.textureWidth, self.textureHeight, 1, trinity.PIXEL_FORMAT.B8G8R8X8_UNORM)
     self.textureAwaitingSwap = texture
     self.surface = texture
     if self.browserSession is not None:
         self.browserSession.SetBrowserSurface(self.surface, self._OnSurfaceReady)
Ejemplo n.º 18
0
def SetupCqPIScreen(paramString):
    """
    Dynamic resource constructor for Captain's Quarters planetary interaction screen in scene.
    Right Screen
    """
    if uicore.isRunning:
        return trinity.TriTextureRes()
    else:
        return blue.resMan.GetResource(
            'res:/Graphics/Shared_Texture/Global/Screen_Right_Fallback.dds')
Ejemplo n.º 19
0
 def _DestroyVideo(self):
     if self.positionComponent:
         self.positionComponent.UnRegisterPlacementObserverWrapper(
             self.positionObserver)
         self.positionComponent = None
         self.positionObserver = None
     self.emitter = None
     self.player = None
     self._updateStep = None
     self.textureRes = trinity.TriTextureRes()
Ejemplo n.º 20
0
def SetupCqAgentFinderScreen(paramString):
    """
    Dynamic resource constructor for Captain's Quarters agent finder screen in scene.
    Left Screen
    """
    if uicore.isRunning:
        return trinity.TriTextureRes()
    else:
        return blue.resMan.GetResource(
            'res:/Graphics/Shared_Texture/Global/Screen_Left_Fallback.dds')
    def CreateTargetsOnModifier(self, modifier, asRenderTargets = False):
        """
        Checks for existance of valid targets on the modifier according to size and rendertarget usage.
        If that check fails the method will create targets so the modifier contains valid maps for 
        rendering out the decal.
        """
        textureFormat = trinity.PIXEL_FORMAT.B8G8R8A8_UNORM

        def validateTarget(target, width, height):
            if not (target and target.isGood and target.depth > 0):
                return False
            if target.width != width or target.height != height:
                return False
            return True

        if modifier.decalData.bodyEnabled:
            modifier.mapD[pdDef.DOLL_PARTS.BODY] = trinity.TriTextureRes(trinity.Tr2RenderTarget(self.size[0] / 2, self.size[1], 1, textureFormat))
        if modifier.decalData.headEnabled:
            modifier.mapD[pdDef.DOLL_PARTS.HEAD] = trinity.TriTextureRes(trinity.Tr2RenderTarget(self.size[0] / 2, self.size[1] / 2, 1, textureFormat))
Ejemplo n.º 22
0
def AddMaterialParam(material, name, value):
    if type(value) == trinity.TriTextureRes:
        param = trinity.TriTexture2DParameter()
        param.name = name
        param.SetResource(value)
    elif type(value) == trinity.Tr2RenderTarget:
        param = trinity.TriTexture2DParameter()
        param.name = name
        t = trinity.TriTextureRes(value)
        param.SetResource(t)
    elif type(value) == trinity.Tr2DepthStencil:
        param = trinity.TriTexture2DParameter()
        param.name = name
        t = trinity.TriTextureRes(value)
        param.SetResource(t)
    else:
        param = trinity.Tr2Vector4Parameter()
        param.name = name
        param.value = value
    material.parameters[name] = param
Ejemplo n.º 23
0
 def OnCreate(self, dev):
     if self.diffuseMap is None:
         return
     if self.diffuseMap.resource is not None and self.diffuseMap.resource.isGood:
         return
     height = self.measurer.ascender - self.measurer.descender
     width = self.measurer.cursorX
     tr = trinity.TriTextureRes(width, height, 1,
                                trinity.PIXEL_FORMAT.B8G8R8A8_UNORM,
                                trinity.BUFFER_USAGE_FLAGS.CPU_WRITE)
     self.measurer.DrawToTexture(tr)
     self.diffuseMap.SetResource(tr)
Ejemplo n.º 24
0
 def ShowSH(self, sh, scaleIt=True):
     if scaleIt:
         builder.ScaleSH(sh, 1.0 / const.planetResourceMaxValue)
     chart = self.ChartResourceLayer(sh)
     buf = chart.makeChart2(chart.PNG)
     bmp = trinity.Tr2HostBitmap(PLANET_RESOURCE_TEX_WIDTH,
                                 PLANET_RESOURCE_TEX_HEIGHT, 1,
                                 trinity.TRIFMT_X8R8G8B8)
     bmp.LoadFromPngInMemory(buf)
     texture = trinity.TriTextureRes()
     texture.CreateFromHostBitmap(bmp)
     if self.planetTransform is not None:
         self.EnableResourceLayer()
         self.SetResourceTexture(texture)
Ejemplo n.º 25
0
 def createEffectParamsForLight(self, effect, index, light, shadowMapRenderTarget, debugNoFiltering):
     map = pdCcf.SetOrAddMap(effect, 'spotLightMap' + str(index))
     map.SetResource(trinity.TriTextureRes(shadowMapRenderTarget))
     if SkinSpotLightShadows.REUSE_ENGINE_MAPS:
         self.maps[light].append(map)
     map = pdCcf.SetOrAddMap(effect, 'Noisemap')
     map.resourcePath = 'res:/texture/global/noise.png'
     viewProj = pdCcf.FindOrAddMat4(effect, 'spotLightViewProj' + str(index))
     self.viewProjParams[light].append(viewProj)
     lightData = pdCcf.FindOrAddVec4(effect, 'spotLightData' + str(index))
     lightData.value = (1.0,
      1.0 / self.shadowResolution,
      float(debugNoFiltering),
      0)
     self.dataParams[light].append(lightData)
     effect.RebuildCachedData()
Ejemplo n.º 26
0
 def Create3DRenderTarget(self, destscene):
     sprite = blue.resMan.LoadObject('res:/uicore/uiInSpace.red')
     area = sprite.mesh.opaqueAreas[0]
     texture = area.effect.resources[0]
     destscene.objects.append(sprite)
     rj = trinity.CreateRenderJob()
     rj.Update(destscene)
     myScene = self.GetRenderObject()
     renderTarget = trinity.Tr2RenderTarget(self.width, self.height, 1, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
     rj.PushRenderTarget(renderTarget)
     rj.RenderScene(myScene).name = 'Render 2D scene'
     rj.PopRenderTarget()
     rj.ScheduleRecurring(insertFront=True)
     texture.SetResource(trinity.TriTextureRes(renderTarget))
     myScene.is2dRender = True
     self.sceneObject = blue.BluePythonWeakRef(sprite)
     self.renderSteps[-1].enabled = False
Ejemplo n.º 27
0
    def Initialize(self, size, speed, amplitude, tiling, texturePath):
        """
        Initializes the output texture, render job, builds render steps.
        Returns the output texture.
        """
        def TextureDestroyed():
            """
            Closure for weakref callback. Destroys the
            render job.
            """
            self.Destroy()

        texture = trinity.Tr2RenderTarget(size, size, 1,
                                          trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
        self.name = 'Caustics'
        self.size = size
        self.texture = blue.BluePythonWeakRef(texture)
        self.texture.callback = TextureDestroyed
        self.steps.append(trinity.TriStepPushRenderTarget(texture))
        self.steps.append(trinity.TriStepClear((0, 0, 0, 0)))
        self.steps.append(trinity.TriStepSetStdRndStates(
            trinity.RM_FULLSCREEN))
        material = trinity.Tr2ShaderMaterial()
        material.highLevelShaderName = 'Caustics'
        param = trinity.TriTexture2DParameter()
        param.name = 'Texture'
        param.resourcePath = texturePath
        material.parameters['Texture'] = param
        param = trinity.Tr2FloatParameter()
        param.name = 'Speed'
        param.value = speed
        material.parameters['Speed'] = param
        param = trinity.Tr2FloatParameter()
        param.name = 'Amplitude'
        param.value = amplitude
        material.parameters['Amplitude'] = param
        param = trinity.Tr2FloatParameter()
        param.name = 'Tiling'
        param.value = tiling
        material.parameters['Tiling'] = param
        material.BindLowLevelShader([])
        self.steps.append(trinity.TriStepRenderFullScreenShader(material))
        self.steps.append(trinity.TriStepPopRenderTarget())
        trinity.renderJobs.recurring.append(self)
        return trinity.TriTextureRes(texture)
Ejemplo n.º 28
0
                    def TransferArrayToTexture(cut, mat1, mat2, spec):
                        pixels = []

                        def GetFromArray(array, index, component=0, default=0):
                            if array is None or not hasattr(
                                    array,
                                    'value') or index >= len(array.value):
                                return default
                            v = array.value[index]
                            if type(v) == trinity.TriVector4:
                                return v.data[component]
                            return v

                        OPT_CUTOUT = 8
                        OPT_DOUBLE_MATERIAL = 16
                        for x in xrange(32):
                            infoList = collapsedMeshes.get(mesh, [])
                            infoTuple = infoList[x] if x < len(infoList) else (
                                0, 0, 0, 0)
                            permute = infoTuple[3]
                            table = paperDollPrePassFixup.MATERIAL_ID_TRANSPARENT_HACK_EXACT if infoTuple[
                                1] == 2 else paperDollPrePassFixup.MATERIAL_ID_EXACT
                            r = int(0.5 + 100 * GetFromArray(cut, x))
                            if permute & OPT_CUTOUT:
                                r += 128
                            g = int(GetFromArray(mat1, x))
                            if permute & OPT_DOUBLE_MATERIAL:
                                b = int(GetFromArray(mat2, x))
                            else:
                                b = g
                            a = int(0.5 +
                                    50 * GetFromArray(spec, x, component=2))
                            pixels.append(
                                (x, 0, (a << 24) + (r << 16) + (g << 8) + b))

                        hb = trinity.Tr2HostBitmap(
                            32, 1, 1, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM)
                        hb.SetPixels(0, pixels, 0)
                        lookup = trinity.TriTextureRes()
                        lookup.CreateFromHostBitmap(hb)
                        texParam = trinity.TriTexture2DParameter()
                        texParam.name = 'CollapsedMeshArrayLookup'
                        texParam.SetResource(lookup)
                        return texParam
Ejemplo n.º 29
0
def CreateRandomTexture(options):
    randomBitmap = trinity.Tr2HostBitmap(
        options.randomTextureWidth, options.randomTextureWidth, 1,
        trinity.PIXEL_FORMAT.R32G32B32A32_FLOAT)
    data = randomBitmap.GetRawData()
    values = []
    dataFormat = ''
    for i in range(options.randomTextureWidth * options.randomTextureWidth):
        angle = 2.0 * math.pi * random.random() / options.numDirections
        values.append(math.sin(angle))
        values.append(math.cos(angle))
        values.append(random.random())
        values.append(random.random())
        dataFormat += 'ffff'

    struct.pack_into(dataFormat, data[0], 0, *values)
    randomTexture = trinity.TriTextureRes()
    randomTexture.CreateFromHostBitmap(randomBitmap)
    return randomTexture
Ejemplo n.º 30
0
 def Startup(self, *args):
     self.texture = trinity.TriTextureRes(
         4, 4, 1, trinity.PIXEL_FORMAT.B8G8R8X8_UNORM)
     self.isTabStop = True
     self.cursor = 0
     self.browserSessionSurfaceManager = None
     self._browserSession = None
     self.surface = None
     self.textureAwaitingSwap = None
     self.textureWidth = 0
     self.textureHeight = 0
     self.renderJob = trinity.CreateRenderJob('Browser')
     self.renderObject.renderJob = self.renderJob
     self.renderJob.PythonCB(self.AdjustViewport)
     self.renderJob.SetViewport(self.viewport)
     self.renderJob.SetStdRndStates(trinity.RM_SPRITE2D)
     self.renderTextureStep = self.renderJob.RenderTexture(self.texture)
     trinity.device.RegisterResource(self)
     self.StartBrowserView()