; TAA history, reconstructed object/camera motion blur and camera cuts. Extended mode only. Include "_common\ShowcaseCamera.bb" Graphics3D 960,600,0,2:SetBuffer BackBuffer():AntiAliasMode 0 camera=CreateCamera():PositionEntity camera,0,.7,-9:CameraClsColor camera,5,7,14 light=CreateLight(1):RotateEntity light,35,-25,0:AmbientLight 38,42,58 floorBrush=CreateStandardBrush(32,38,54):BrushPBR floorBrush,0,.82 floor=CreateCube():ScaleEntity floor,7,.08,10:PositionEntity floor,0,-1.5,5:PaintEntity floor,floorBrush:FreeBrush floorBrush ; Alternating stationary posts expose the direction and length of each trail. For i=0 To 12 marker=CreateCube():ScaleEntity marker,.11,1.15,.11:PositionEntity marker,(i-6)*.9,-.35,5.7 markerBrush=CreateStandardBrush(35+i*14,105,220-i*8):BrushPBR markerBrush,.05,.55 PaintEntity marker,markerBrush:FreeBrush markerBrush Next runnerBrush=CreateStandardBrush(255,70,22):BrushPBR runnerBrush,.12,.24 runner=CreateCube():ScaleEntity runner,.8,.8,.32:PositionEntity runner,0,.25,3.2:PaintEntity runner,runnerBrush:FreeBrush runnerBrush stripeBrush=CreateStandardBrush(255,235,120):BrushPBR stripeBrush,.35,.16 stripeA=CreateCube(runner):ScaleEntity stripeA,.08,1.02,1.05:PositionEntity stripeA,-.35,0,0:PaintEntity stripeA,stripeBrush stripeB=CreateCube(runner):ScaleEntity stripeB,.08,1.02,1.05:PositionEntity stripeB,.35,0,0:PaintEntity stripeB,stripeBrush FreeBrush stripeBrush fan=CreatePivot():PositionEntity fan,0,1.9,5 fanBrush=CreateStandardBrush(35,220,255):BrushPBR fanBrush,.55,.13 For blade=0 To 3 bar=CreateCube(fan):ScaleEntity bar,2,.09,.07:TurnEntity bar,0,0,blade*45 PaintEntity bar,fanBrush Next FreeBrush fanBrush blur=LoadShader("builtin:motion-blur"):If blur=0 Then RuntimeError "Motion blur failed to load" ShaderFloat blur,"ShutterAngle",360:ShaderFloat blur,"MaximumRadius",48 ShaderFloat blur,"CameraWeight",1:ShaderFloat blur,"ObjectWeight",1:ShaderInt blur,"Quality",2 CameraEffect camera,blur target=CreatePivot():PositionEntity target,0,.25,4 taa=False:blurOn=True:angle#=0:shutter#=360:radius#=48:cutView=False:ResetShowcaseCameraTimer() While Not KeyHit(1) UpdateShowcaseCamera camera,4.5,80 If KeyHit(20) Then taa=Not taa:If taa Then AntiAliasMode 3 Else AntiAliasMode 0 If KeyHit(48) Then blurOn=Not blurOn:CameraEffectEnabled camera,blur,blurOn If KeyHit(46) cutView=Not cutView If cutView Then PositionEntity camera,5,2,-2 Else PositionEntity camera,0,.7,-9 PointEntity camera,target:ResetShowcaseCameraTimer() EndIf If KeyDown(26) Then shutter=shutter-2 If KeyDown(27) Then shutter=shutter+2 If KeyDown(12) Then radius=radius-.25 If KeyDown(13) Then radius=radius+.25 If shutter<0 Then shutter=0:If shutter>360 Then shutter=360 If radius<1 Then radius=1:If radius>64 Then radius=64 ShaderFloat blur,"ShutterAngle",shutter:ShaderFloat blur,"MaximumRadius",radius angle=angle+6 PositionEntity runner,Sin(angle)*4.2,.25,3.2+Cos(angle)*.35 TurnEntity runner,0,4,0:TurnEntity fan,0,0,9 RenderWorld Color 255,255,255:Text 12,12,"TEMPORAL EFFECTS - ESC exits" Text 12,32,"B motion blur: "+blurOn+" T TAA: "+taa+" C camera cut/history reset" Text 12,50,"[/] shutter "+shutter+" degrees -/= radius "+radius+" pixels" Text 12,68,"The orange runner and cyan fan leave reconstructed silhouette trails; B gives an immediate crisp comparison." DrawShowcaseCameraHelp 570 Flip Wend FreeShader blur:End