NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

__init__.py (6210B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\trinity\__init__.py
      2 from __future__ import absolute_import
      3 import logging
      4 import blue
      5 from . import _utils
      6 _utils.AssertNotOnProxyOrServer()
      7 from d3dinfo import availablePlatforms
      8 from ._singletons import *
      9 from ._trinity import *
     10 from .renderJob import CreateRenderJob
     11 from .renderJobUtils import *
     12 logger = logging.getLogger(__name__)
     13 
     14 def GetEnumValueName(enumName, value):
     15     if enumName in globals():
     16         enum = globals()[enumName]
     17         result = ''
     18         for enumKeyName, (enumKeyValue, enumKeydocString) in enum.values.iteritems():
     19             if enumKeyValue == value:
     20                 if result != '':
     21                     result += ' | '
     22                 result += enumKeyName
     23 
     24         return result
     25 
     26 
     27 def GetEnumValueNameAsBitMask(enumName, value):
     28     if enumName in globals():
     29         enum = globals()[enumName]
     30         result = ''
     31         for enumKeyName, (enumKeyValue, enumKeydocString) in enum.values.iteritems():
     32             if enumKeyValue & value == enumKeyValue:
     33                 if result != '':
     34                     result += ' | '
     35                 result += enumKeyName
     36 
     37         return result
     38 
     39 
     40 def ConvertTriFileToGranny(path):
     41     helper = TriGeometryRes()
     42     return helper.ConvertTriFileToGranny(path)
     43 
     44 
     45 def LoadDone(evt):
     46     evt.isDone = True
     47 
     48 
     49 def WaitForResourceLoads():
     50     blue.resMan.Wait()
     51 
     52 
     53 def WaitForUrgentResourceLoads():
     54     blue.resMan.WaitUrgent()
     55 
     56 
     57 def LoadUrgent(path):
     58     blue.resMan.SetUrgentResourceLoads(True)
     59     obj = Load(path)
     60     blue.resMan.SetUrgentResourceLoads(False)
     61     return obj
     62 
     63 
     64 def GetResourceUrgent(path, extra = ''):
     65     blue.resMan.SetUrgentResourceLoads(True)
     66     obj = blue.resMan.GetResource(path, extra)
     67     blue.resMan.SetUrgentResourceLoads(False)
     68     return obj
     69 
     70 
     71 def Save(obj, path):
     72     blue.motherLode.Delete(path)
     73     return blue.resMan.SaveObject(obj, path)
     74 
     75 
     76 def SaveRenderTarget(filename, rt = None):
     77     if rt is None:
     78         rt = device.GetRenderContext().GetDefaultBackBuffer()
     79     if not rt.isReadable:
     80         readable = Tr2RenderTarget(rt.width, rt.height, 1, rt.format)
     81         rt.Resolve(readable)
     82         return Tr2HostBitmap(readable).Save(filename)
     83     else:
     84         return Tr2HostBitmap(rt).Save(filename)
     85 
     86 
     87 def _StoreGPUInfoInCrashHeaders():
     88     try:
     89         adapterInfo = adapters.GetAdapterInfo(adapters.DEFAULT_ADAPTER)
     90         blue.SetCrashKeyValues('GPU_Description', adapterInfo.description)
     91         blue.SetCrashKeyValues('GPU_Driver', adapterInfo.driver)
     92         blue.SetCrashKeyValues('GPU_VendorId', str(adapterInfo.vendorID))
     93         blue.SetCrashKeyValues('GPU_DeviceId', str(adapterInfo.deviceID))
     94         blue.SetCrashKeyValues('trinityPlatform', platform)
     95         try:
     96             driverInfo = adapterInfo.GetDriverInfo()
     97             blue.SetCrashKeyValues('GPU_Driver_Version', driverInfo.driverVersionString)
     98             blue.SetCrashKeyValues('GPU_Driver_Date', driverInfo.driverDate)
     99             blue.SetCrashKeyValues('GPU_Driver_Vendor', driverInfo.driverVendor)
    100             blue.SetCrashKeyValues('GPU_Driver_Is_Optimus', 'Yes' if driverInfo.isOptimus else 'No')
    101             blue.SetCrashKeyValues('GPU_Driver_Is_Amd_Switchable', 'Yes' if driverInfo.isAmdDynamicSwitchable else 'No')
    102         except RuntimeError:
    103             blue.SetCrashKeyValues('GPU_Driver_Version', str(adapterInfo.driverVersion))
    104 
    105     except RuntimeError:
    106         pass
    107 
    108 
    109 def IsFpsEnabled():
    110     return bool('FPS' in (j.name for j in renderJobs.recurring))
    111 
    112 
    113 def SetFpsEnabled(enable, viewPort = None):
    114     if enable:
    115         if IsFpsEnabled():
    116             return
    117         fpsJob = CreateRenderJob('FPS')
    118         fpsJob.SetViewport(viewPort)
    119         fpsJob.RenderFps()
    120         fpsJob.ScheduleRecurring(insertFront=False)
    121     else:
    122         renderJobs.UnscheduleByName('FPS')
    123 
    124 
    125 def AddRenderJobText(text, x, y, renderJob, color = 4278255360L):
    126     steps = [ step for step in renderJob.steps if step.name == 'RenderDebug' ]
    127     if len(steps) > 0:
    128         step = steps[0]
    129     else:
    130         return
    131     step.Print2D(x, y, color, text)
    132     return renderJob
    133 
    134 
    135 def CreateDebugRenderJob(renderJobName, viewPort, renderJobIndex = -1):
    136     renderJob = CreateRenderJob(renderJobName)
    137     renderJob.SetViewport(viewPort)
    138     step = renderJob.RenderDebug()
    139     step.name = 'RenderDebug'
    140     step.autoClear = False
    141     if renderJobIndex is -1:
    142         renderJob.ScheduleRecurring()
    143     else:
    144         renderJobs.recurring.insert(renderJobIndex, renderJob)
    145     return renderJob
    146 
    147 
    148 def SetupDefaultGraphs():
    149     graphs.Clear()
    150     graphs.AddGraph('frameTime')
    151     graphs.AddGraph('devicePresent')
    152     graphs.AddGraph('primitiveCount')
    153     graphs.AddGraph('batchCount')
    154     graphs.AddGraph('pendingLoads')
    155     graphs.AddGraph('pendingPrepares')
    156     graphs.AddGraph('textureResBytes')
    157 
    158 
    159 def AddFrameTimeMarker(name):
    160     line = GetLineGraphFrameTime()
    161     if line is not None:
    162         line.AddMarker(name)
    163 
    164 
    165 class FrameTimeMarkerStopwatch(object):
    166 
    167     def __init__(self, stopwatchName):
    168         self.started = blue.os.GetCycles()[0]
    169         self.stopwatchName = stopwatchName
    170 
    171     def __str__(self):
    172         return '%s %i ms' % (self.stopwatchName, int(1000 * ((blue.os.GetCycles()[0] - self.started) / float(blue.os.GetCycles()[1]))))
    173 
    174     def __del__(self):
    175         AddFrameTimeMarker(str(self))
    176 
    177 
    178 def CreateBinding(cs, src, srcAttr, dst, dstAttr):
    179     binding = TriValueBinding()
    180     binding.sourceObject = src
    181     binding.sourceAttribute = srcAttr
    182     binding.destinationObject = dst
    183     binding.destinationAttribute = dstAttr
    184     if cs:
    185         cs.bindings.append(binding)
    186     return binding
    187 
    188 
    189 def CreatePythonBinding(cs, src, srcAttr, dst, dstAttr):
    190     binding = Tr2PyValueBinding()
    191     binding.sourceObject = src
    192     binding.sourceAttribute = srcAttr
    193     binding.destinationObject = dst
    194     binding.destinationAttribute = dstAttr
    195     if cs:
    196         cs.bindings.append(binding)
    197     return binding
    198 
    199 
    200 def _init():
    201     _StoreGPUInfoInCrashHeaders()
    202     device.SetRenderJobs(renderJobs)
    203     settings.SetValue('newBloom', False)
    204     settings.SetValue('dynamicExposureQualityRequirement', 2)
    205     settings.SetValue('grannyDeprecationLevel', 0)
    206 
    207 
    208 _init()