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