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

grading.py (4090B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\charactercreator\client\grading.py
      2 from trinity.renderJobUtils import renderTargetManager as rtm
      3 import trinity
      4 import blue
      5 import walk
      6 import os
      7 import log
      8 
      9 class PostProcess(object):
     10 
     11     def __init__(self, path, backbuffer, viewport = None, format = None):
     12         self.job = trinity.evePostProcess.EvePostProcessingJob()
     13         self.job.name = 'Post Processing'
     14         self.backbuffer = backbuffer
     15         self.format = format
     16         if viewport is not None:
     17             self.vp = trinity.TriViewport()
     18             self.viewport = blue.BluePythonWeakRef(self.vp)
     19             self.UpdateViewport(viewport.object)
     20         else:
     21             self.vp = None
     22             self.viewport = None
     23         trinity.device.RegisterResource(self)
     24         self.SetPostProcess(path)
     25 
     26     def OnInvalidate(self, *args):
     27         self.blitTexture = None
     28         self.job.Release()
     29 
     30     def OnCreate(self, device):
     31         width = self.backbuffer.width
     32         height = self.backbuffer.height
     33         if self.format is None:
     34             self.format = trinity.device.GetRenderContext().GetBackBufferFormat()
     35         blitFormat = self.format
     36         self.blitTexture = rtm.GetRenderTargetAL(width, height, 1, blitFormat, index=1)
     37         self.job.Prepare(self.backbuffer, self.blitTexture, self.backbuffer, self.viewport)
     38         self.job.CreateSteps()
     39 
     40     def SetPostProcess(self, path):
     41         self.job.AddPostProcess('postProcess', path)
     42         self.OnCreate(trinity.device)
     43 
     44     def GetJob(self):
     45         return self.job
     46 
     47     def UpdateViewport(self, new_viewport):
     48         if self.viewport is not None:
     49             self.viewport.object.width = new_viewport.width
     50             self.viewport.object.height = new_viewport.height
     51             self.viewport.object.x = new_viewport.x
     52             self.viewport.object.y = new_viewport.y
     53 
     54 
     55 def bluepynormcase(astring):
     56     return os.path.normcase(astring).replace('\\', '/')
     57 
     58 
     59 def GetDDS():
     60     respaths = list()
     61     for dir, subdirs, filenames in walk.walk('res:/dx9/scene/postprocess/'):
     62         subdirs[:] = list()
     63         for filename in filenames:
     64             if os.path.splitext(filename)[1].lower() == '.dds':
     65                 resPath = os.path.join(dir, filename)
     66                 respaths.append(bluepynormcase(resPath))
     67 
     68     return respaths
     69 
     70 
     71 def GetTexLUT(job = None):
     72     if job is not None:
     73         rj = job
     74     else:
     75         rj = trinity.renderJobs.FindByName('BaseSceneRenderJob')
     76     if rj:
     77         for step in rj.steps:
     78             if step.name == 'RJ_POSTPROCESSING':
     79                 for substep in step.job.steps:
     80                     if substep.name == 'Run Post Process postProcess':
     81                         for subsubstep in substep.job.steps:
     82                             if subsubstep.name == 'portraitLUT':
     83                                 for r in subsubstep.effect.resources:
     84                                     if r.name == 'TexLUT':
     85                                         return r
     86 
     87 
     88 def GetLUTIntensity(job = None):
     89     if job is not None:
     90         rj = job
     91     else:
     92         rj = trinity.renderJobs.FindByName('BaseSceneRenderJob')
     93     if rj:
     94         for step in rj.steps:
     95             if step.name == 'RJ_POSTPROCESSING':
     96                 for substep in step.job.steps:
     97                     if substep.name == 'Run Post Process postProcess':
     98                         for subsubstep in substep.job.steps:
     99                             if subsubstep.name == 'portraitLUT':
    100                                 for r in subsubstep.effect.parameters:
    101                                     if r.name == 'Influence':
    102                                         return r
    103 
    104 
    105 def GetLUTStepRenderEffect(job = None):
    106     if job is not None:
    107         rj = job
    108     else:
    109         rj = trinity.renderJobs.FindByName('BaseSceneRenderJob')
    110     if rj:
    111         for step in rj.steps:
    112             if step.name == 'Run Post Process postProcess':
    113                 for substep in step.job.steps:
    114                     if substep.name == 'portraitLUT':
    115                         return substep