bitmapjob.py (3816B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\bitmapjob.py 2 import trinity 3 import blue 4 5 def makeBitmapStep(filePath, scaleToFit = True, color = (1.0, 1.0, 1.0, 1.0), targetSize = None): 6 tex = trinity.TriTextureParameter() 7 tex.name = 'Texture' 8 tex.resourcePath = filePath 9 if targetSize is None: 10 bb = trinity.device.GetRenderContext().GetDefaultBackBuffer() 11 targetSize = (bb.width, bb.height) 12 fx = trinity.Tr2Effect() 13 fx.effectFilePath = 'res:/Graphics/Effect/Managed/Space/System/ColoredBlit.fx' 14 fx.resources.append(tex) 15 while tex.resource.isLoading: 16 blue.synchro.Yield() 17 18 sw = float(tex.resource.width) 19 sh = float(tex.resource.height) 20 tw = float(targetSize[0]) 21 th = float(targetSize[1]) 22 v = trinity.Tr2Vector4Parameter() 23 v.name = 'Color' 24 v.value = color 25 fx.parameters.append(v) 26 v = trinity.Tr2Vector4Parameter() 27 v.name = 'SourceUVs' 28 fx.parameters.append(v) 29 sourceAspect = sw / sh 30 targetAspect = tw / th 31 if scaleToFit: 32 if targetAspect > sourceAspect: 33 span = targetAspect / sourceAspect 34 v.value = (0.5 - 0.5 * span, 35 0.0, 36 0.5 + 0.5 * span, 37 1.0) 38 else: 39 span = sourceAspect / targetAspect 40 v.value = (0, 41 0.5 - 0.5 * span, 42 1.0, 43 0.5 + 0.5 * span) 44 elif targetAspect > sourceAspect: 45 d = 1.0 - sw * th / (sh * tw) 46 d *= 0.5 47 v.value = (0.0, 48 d, 49 1.0, 50 1.0 - d) 51 else: 52 d = 1.0 - tw * sh / (th * sw) 53 d *= 0.5 54 v.value = (d, 55 0.0, 56 1.0 - d, 57 1.0) 58 return trinity.TriStepRenderEffect(fx) 59 60 61 def addBitmapRenderJob(filePath, scaleToFit = True, color = (1.0, 1.0, 1.0, 1.0), targetSize = None): 62 rj = trinity.CreateRenderJob('Background bitmap') 63 step = makeBitmapStep(filePath, scaleToFit=scaleToFit, color=color, targetSize=targetSize) 64 rj.steps.append(step) 65 rj.ScheduleRecurring() 66 67 68 def makeCubemapStep(filePath, scaleToFit = True, color = (1.0, 1.0, 1.0, 1.0), cubeFace = 0, targetSize = None): 69 tex = trinity.TriTextureParameter() 70 tex.name = 'BlitSource' 71 tex.resourcePath = filePath 72 if targetSize is None: 73 bb = trinity.device.GetRenderContext().GetDefaultBackBuffer() 74 targetSize = (bb.width, bb.height) 75 targetAspect = float(targetSize[0]) / float(targetSize[1]) 76 fx = trinity.Tr2Effect() 77 fx.effectFilePath = 'res:/Graphics/Effect/Managed/Space/System/ColoredBlitCube.fx' 78 fx.effectResource.Reload() 79 fx.resources.append(tex) 80 v = trinity.Tr2Vector4Parameter() 81 v.name = 'Color' 82 v.value = color 83 fx.parameters.append(v) 84 v = trinity.Tr2FloatParameter() 85 v.name = 'cubeFace' 86 v.value = cubeFace 87 fx.parameters.append(v) 88 v = trinity.Tr2Vector4Parameter() 89 v.name = 'ScaleXY' 90 fx.parameters.append(v) 91 if scaleToFit: 92 if targetAspect >= 1.0: 93 v.value = (targetAspect, 94 1.0, 95 1.0, 96 1.0) 97 else: 98 v.value = (1.0, 99 1.0 / targetAspect, 100 1.0, 101 1.0) 102 elif targetAspect < 1.0: 103 v.value = (targetAspect, 104 1.0, 105 1.0, 106 1.0) 107 else: 108 v.value = (1.0, 109 1.0 / targetAspect, 110 1.0, 111 1.0) 112 return trinity.TriStepRenderEffect(fx) 113 114 115 def addCubemapRenderJob(filePath, scaleToFit = True, color = (1.0, 1.0, 1.0, 1.0), cubeFace = 0, targetSize = None): 116 rj = trinity.CreateRenderJob('Background cubemap') 117 step = makeCubemapStep(filePath, scaleToFit=scaleToFit, color=color, cubeFace=cubeFace, targetSize=targetSize) 118 rj.steps.append(step) 119 rj.ScheduleRecurring()