コード例 #1
0
ファイル: photo.py プロジェクト: connoryang/1v1dec
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)
コード例 #2
0
ファイル: projectedDecals.py プロジェクト: connoryang/1v1dec
    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))
コード例 #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
コード例 #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)
コード例 #5
0
ファイル: planet.py プロジェクト: connoryang/1v1dec
 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)
コード例 #6
0
ファイル: uilib.py プロジェクト: connoryang/1v1dec
    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')
コード例 #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
コード例 #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
コード例 #9
0
ファイル: postprocess.py プロジェクト: connoryang/1v1dec
 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)
コード例 #10
0
ファイル: sceneRenderJobSpace.py プロジェクト: R4M80MrX/eve-1
 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()
コード例 #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)
コード例 #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)
コード例 #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')
コード例 #14
0
ファイル: postprocess.py プロジェクト: connoryang/1v1dec
 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
コード例 #15
0
ファイル: planet.py プロジェクト: connoryang/1v1dec
    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
コード例 #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')
コード例 #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)
コード例 #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')
コード例 #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()
コード例 #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')
コード例 #21
0
    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))
コード例 #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
コード例 #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)
コード例 #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)
コード例 #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()
コード例 #26
0
ファイル: desktop.py プロジェクト: connoryang/1v1dec
 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
コード例 #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)
コード例 #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
コード例 #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
コード例 #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()