@@ -56,11 +56,11 @@ public struct DebugDrawable
56
56
57
57
public Vector2 position2 ;
58
58
59
- public DebugDrawable ( Vector2 position , float radius , Color color )
59
+ public DebugDrawable ( Vector2 position , float radius , Color color )
60
60
{ //circle
61
61
this . position = position ;
62
62
this . color = color ;
63
- this . position2 = new Vector2 ( radius , 0 ) ;
63
+ this . position2 = new Vector2 ( radius , 0 ) ;
64
64
this . shape = DebugShape . CIRCLE ;
65
65
}
66
66
@@ -83,7 +83,7 @@ public struct UIDrawable
83
83
public SpriteFont font ;
84
84
85
85
86
- public UIDrawable ( Vector2 position , float scale , Color color , SpriteFont font , String message )
86
+ public UIDrawable ( Vector2 position , float scale , Color color , SpriteFont font , String message )
87
87
{
88
88
this . position = position ;
89
89
this . color = color ;
@@ -113,7 +113,7 @@ public class PebbleRenderer : GameComponent, IPebbleRendererService
113
113
114
114
private List < Sprite > [ , ] lmsTensor ;
115
115
116
- private Dictionary < Light , Tuple < RenderTarget2D , RenderTarget2D > > lights ;
116
+ private Dictionary < Light , Tuple < RenderTarget2D , RenderTarget2D > > lights ;
117
117
118
118
private Material [ ] materials ;
119
119
private int materialCount = 1 ; //the default material/shaders
@@ -165,12 +165,12 @@ public class PebbleRenderer : GameComponent, IPebbleRendererService
165
165
private Queue < DebugDrawable > debugShapes ;
166
166
private Queue < UIDrawable > UIShapes ;
167
167
168
- public PebbleRenderer ( Game game , GraphicsDeviceManager graphics , int outputWidth , int outputHeight , float renderScale = 1 , float shadowRenderScale = 0.2f ) : base ( game )
168
+ public PebbleRenderer ( Game game , GraphicsDeviceManager graphics , int outputWidth , int outputHeight , float renderScale = 1 , float shadowRenderScale = 0.2f ) : base ( game )
169
169
{
170
170
this . graphics = graphics ;
171
171
this . outputWidth = outputWidth ;
172
172
this . outputHeight = outputHeight ;
173
- this . renderWidth = ( int ) MathF . Floor ( outputWidth * renderScale ) ;
173
+ this . renderWidth = ( int ) MathF . Floor ( outputWidth * renderScale ) ;
174
174
this . renderHeight = ( int ) MathF . Floor ( outputHeight * renderScale ) ;
175
175
this . renderScale = renderScale ;
176
176
this . shadowRenderScale = shadowRenderScale ;
@@ -183,12 +183,12 @@ public PebbleRenderer(Game game, GraphicsDeviceManager graphics, int outputWidth
183
183
184
184
185
185
186
- lmsTensor = new List < Sprite > [ MAX_lAYERS , MAX_MATERIALS ] ; //2d array of sprite lists, one list for each material-layer combination.
186
+ lmsTensor = new List < Sprite > [ MAX_lAYERS , MAX_MATERIALS ] ; //2d array of sprite lists, one list for each material-layer combination.
187
187
for ( int i = 0 ; i < MAX_lAYERS ; i ++ )
188
188
{
189
189
for ( int j = 0 ; j < MAX_MATERIALS ; j ++ )
190
190
{
191
- lmsTensor [ i , j ] = new List < Sprite > ( ) ;
191
+ lmsTensor [ i , j ] = new List < Sprite > ( ) ;
192
192
}
193
193
}
194
194
materials = new Material [ MAX_MATERIALS ] ;
@@ -209,10 +209,10 @@ public override void Initialize() //override?
209
209
normalTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight ) ;
210
210
roughnessTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight ) ;
211
211
212
- shadowCasterTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth * 2 , renderHeight * 2 , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ; //*2?
212
+ shadowCasterTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth * 2 , renderHeight * 2 , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ; //*2?
213
213
shadowUpscaleTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ;
214
214
215
- litTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight , false , SurfaceFormat . HdrBlendable , DepthFormat . None ) ;
215
+ litTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight , false , SurfaceFormat . HdrBlendable , DepthFormat . None ) ;
216
216
217
217
noiseTarget = new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ;
218
218
@@ -256,7 +256,7 @@ public void setCameraPosition(Vector2 cameraPosition)
256
256
257
257
public void lookAt ( Vector2 position )
258
258
{
259
- this . cameraPosition = position - new Vector2 ( REFERENCE_WIDTH / 2 , REFERENCE_HEIGHT / 2 ) ;
259
+ this . cameraPosition = position - new Vector2 ( REFERENCE_WIDTH / 2 , REFERENCE_HEIGHT / 2 ) ;
260
260
}
261
261
public Vector2 getCameraPosition ( )
262
262
{
@@ -267,7 +267,7 @@ public void addSprite(Sprite sprite)
267
267
{
268
268
if ( sprite . material >= materialCount )
269
269
{
270
- throw new ArgumentException ( "shader uses material Index: " + sprite . material + " but this shader is not registered." ) ;
270
+ throw new ArgumentException ( "shader uses material Index: " + sprite . material + " but this shader is not registered." ) ;
271
271
}
272
272
lmsTensor [ sprite . layer , sprite . material ] . Add ( sprite ) ;
273
273
@@ -280,9 +280,9 @@ public void removeSprite(Sprite sprite)
280
280
281
281
public void addLight ( Light light )
282
282
{
283
- if ( light . isShadowCasting )
283
+ if ( light . isShadowCasting )
284
284
{
285
- lights . Add ( light , new Tuple < RenderTarget2D , RenderTarget2D > (
285
+ lights . Add ( light , new Tuple < RenderTarget2D , RenderTarget2D > (
286
286
new RenderTarget2D ( Game . GraphicsDevice , ( int ) MathF . Floor ( renderWidth * shadowRenderScale ) , ( int ) MathF . Floor ( renderHeight * shadowRenderScale ) , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ,
287
287
new RenderTarget2D ( Game . GraphicsDevice , renderWidth , renderHeight , false , SurfaceFormat . Alpha8 , DepthFormat . None ) ) ) ;
288
288
}
@@ -292,7 +292,7 @@ public void addLight(Light light)
292
292
Game . GraphicsDevice . SetRenderTarget ( whiteTarget ) ;
293
293
Game . GraphicsDevice . Clear ( Color . White ) ;
294
294
Game . GraphicsDevice . SetRenderTarget ( null ) ;
295
- lights . Add ( light , new Tuple < RenderTarget2D , RenderTarget2D > ( whiteTarget , whiteTarget ) ) ;
295
+ lights . Add ( light , new Tuple < RenderTarget2D , RenderTarget2D > ( whiteTarget , whiteTarget ) ) ;
296
296
}
297
297
}
298
298
@@ -330,7 +330,8 @@ public void addMaterial(Material material)
330
330
}
331
331
332
332
333
- public void Draw ( GameTime time ) {
333
+ public void Draw ( GameTime time )
334
+ {
334
335
this . time = time . TotalGameTime . TotalSeconds ;
335
336
this . random = randomGen . NextDouble ( ) ;
336
337
RenderNoise ( ) ;
@@ -344,7 +345,7 @@ public void Draw(GameTime time) {
344
345
345
346
346
347
//maybe make drawing occlusion map conditional on having shadow casting lights?
347
- renderShadowCasters ( shadowCasterTarget , view * Matrix . CreateScale ( shadowRenderScale ) * Matrix . CreateTranslation ( new Vector3 ( renderWidth / 2 , renderHeight / 2 , 0 ) ) ) ;
348
+ renderShadowCasters ( shadowCasterTarget , view * Matrix . CreateScale ( shadowRenderScale ) * Matrix . CreateTranslation ( new Vector3 ( renderWidth / 2 , renderHeight / 2 , 0 ) ) ) ;
348
349
349
350
350
351
@@ -384,7 +385,7 @@ public void Draw(GameTime time) {
384
385
setEngineShaderParams ( pointLightShader . shader ) ;
385
386
Game . GraphicsDevice . SetRenderTarget ( litTarget ) ;
386
387
387
- foreach ( KeyValuePair < Light , Tuple < RenderTarget2D , RenderTarget2D > > light in lights )
388
+ foreach ( KeyValuePair < Light , Tuple < RenderTarget2D , RenderTarget2D > > light in lights )
388
389
{
389
390
//the approach I have in mind might be too cpu/ draw call intensive, so I will try raymarching first, but maybe come back to the 1d occlusion map approach with some optimization later.
390
391
spriteBatch . Begin ( effect : pointLightShader . shader , blendState : BlendState . Additive ) ;
@@ -402,7 +403,7 @@ public void Draw(GameTime time) {
402
403
403
404
//HERE
404
405
Game . GraphicsDevice . SetRenderTarget ( postProcessTarget1 ) ; //I can maybe optimise this to overwrite diffuse buffer or lighting buffers, depends if I still want them
405
- spriteBatch . Begin ( transformMatrix : Matrix . CreateScale ( 1 / renderScale ) , samplerState : samplerState ) ; // maybe dont create the matrix every frame
406
+ spriteBatch . Begin ( transformMatrix : Matrix . CreateScale ( 1 / renderScale ) , samplerState : samplerState ) ; // maybe dont create the matrix every frame
406
407
spriteBatch . Draw ( diffuseTarget , new Vector2 ( 0f ) , Color . White ) ;
407
408
spriteBatch . End ( ) ;
408
409
@@ -411,8 +412,9 @@ public void Draw(GameTime time) {
411
412
Game . GraphicsDevice . SetRenderTarget ( null ) ;
412
413
postProcessPingPong = true ;
413
414
414
- foreach ( PostProcess postProcess in postProcesses ) {
415
- if ( postProcess . shader != null )
415
+ foreach ( PostProcess postProcess in postProcesses )
416
+ {
417
+ if ( postProcess . shader != null )
416
418
{
417
419
setEngineShaderParams ( postProcess . shader ) ;
418
420
}
@@ -449,7 +451,8 @@ private void setEngineShaderParams(Effect effect)
449
451
effect . Parameters [ "noiseMap" ] ? . SetValue ( noiseTarget ) ;
450
452
}
451
453
452
- private void renderOutput ( RenderTarget2D target , Matrix viewProjection ) { //refactor this maybe, having a function for rendering to target isnt as nice as I hoped.
454
+ private void renderOutput ( RenderTarget2D target , Matrix viewProjection )
455
+ { //refactor this maybe, having a function for rendering to target isnt as nice as I hoped.
453
456
Game . GraphicsDevice . SetRenderTarget ( target ) ;
454
457
Game . GraphicsDevice . Clear ( Color . Black ) ;
455
458
@@ -461,7 +464,7 @@ private void setEngineShaderParams(Effect effect)
461
464
materials [ j ] . shaders [ 0 ] . shader . Parameters [ "ambientColor" ] ? . SetValue ( ambientLightColor . ToVector3 ( ) ) ;
462
465
setEngineShaderParams ( materials [ j ] . shaders [ 0 ] . shader ) ;
463
466
464
- if ( lmsTensor [ i , j ] . Count == 0 )
467
+ if ( lmsTensor [ i , j ] . Count == 0 )
465
468
{
466
469
continue ;
467
470
}
@@ -477,7 +480,7 @@ private void setEngineShaderParams(Effect effect)
477
480
Game . GraphicsDevice . SetRenderTarget ( null ) ; // is this necessary?
478
481
}
479
482
480
- private void renderToTarget ( RenderTarget2D target , Matrix viewProjection , Color clearColor , int shaderIndex )
483
+ private void renderToTarget ( RenderTarget2D target , Matrix viewProjection , Color clearColor , int shaderIndex )
481
484
{
482
485
Game . GraphicsDevice . SetRenderTarget ( target ) ;
483
486
Game . GraphicsDevice . Clear ( clearColor ) ;
@@ -518,12 +521,13 @@ private void RenderNoise()
518
521
Game . GraphicsDevice . SetRenderTarget ( noiseTarget ) ;
519
522
setEngineShaderParams ( gradientNoiseShader . shader ) ;
520
523
spriteBatch . Begin ( effect : gradientNoiseShader . shader ) ;
521
- spriteBatch . Draw ( nullTexture , new Vector2 ( 0 ) , null , Color . White , 0 , Vector2 . Zero , new Vector2 ( renderWidth , renderHeight ) , SpriteEffects . None , 0 ) ;
524
+ spriteBatch . Draw ( nullTexture , new Vector2 ( 0 ) , null , Color . White , 0 , Vector2 . Zero , new Vector2 ( renderWidth , renderHeight ) , SpriteEffects . None , 0 ) ;
522
525
spriteBatch . End ( ) ;
523
526
Game . GraphicsDevice . SetRenderTarget ( null ) ; //? needed?
524
527
}
525
528
526
- private void renderShadowCasters ( RenderTarget2D target , Matrix viewProjection ) {
529
+ private void renderShadowCasters ( RenderTarget2D target , Matrix viewProjection )
530
+ {
527
531
Game . GraphicsDevice . SetRenderTarget ( target ) ;
528
532
Game . GraphicsDevice . Clear ( Color . White ) ;
529
533
@@ -562,21 +566,21 @@ private void renderDebugShapes(RenderTarget2D target, Matrix viewProjection)
562
566
{
563
567
Game . GraphicsDevice . SetRenderTarget ( target ) ;
564
568
spriteBatch . Begin ( transformMatrix : viewProjection ) ;
565
- while ( debugShapes . Count > 0 )
569
+ while ( debugShapes . Count > 0 )
566
570
{
567
571
DebugDrawable drawable = debugShapes . Dequeue ( ) ;
568
572
569
573
switch ( drawable . shape )
570
574
{
571
575
case DebugShape . LINE :
572
- spriteBatch . DrawLine ( drawable . position , drawable . position2 , drawable . color , 4 ) ;
576
+ spriteBatch . DrawLine ( drawable . position , drawable . position2 , drawable . color , 4 ) ;
573
577
break ;
574
578
575
579
case DebugShape . RECTANGLE :
576
- spriteBatch . DrawRectangle ( new Rectangle ( ( int ) drawable . position . X , ( int ) drawable . position . Y , ( int ) ( drawable . position2 . X - drawable . position . X ) , ( int ) ( drawable . position2 . Y - drawable . position . Y ) ) , drawable . color , 4 ) ;
580
+ spriteBatch . DrawRectangle ( new Rectangle ( ( int ) drawable . position . X , ( int ) drawable . position . Y , ( int ) ( drawable . position2 . X - drawable . position . X ) , ( int ) ( drawable . position2 . Y - drawable . position . Y ) ) , drawable . color , 4 ) ;
577
581
break ;
578
582
case DebugShape . CIRCLE :
579
- spriteBatch . DrawCircle ( drawable . position , drawable . position2 . X , 32 , drawable . color , 4 ) ;
583
+ spriteBatch . DrawCircle ( drawable . position , drawable . position2 . X , 32 , drawable . color , 4 ) ;
580
584
break ;
581
585
}
582
586
}
@@ -590,7 +594,7 @@ private void renderUI(RenderTarget2D target)
590
594
while ( UIShapes . Count > 0 )
591
595
{
592
596
UIDrawable drawable = UIShapes . Dequeue ( ) ;
593
- spriteBatch . DrawString ( drawable . font , drawable . text , drawable . position , drawable . color , 0 , Vector2 . Zero , drawable . scale , SpriteEffects . None , 0 ) ;
597
+ spriteBatch . DrawString ( drawable . font , drawable . text , drawable . position , drawable . color , 0 , Vector2 . Zero , drawable . scale , SpriteEffects . None , 0 ) ;
594
598
595
599
}
596
600
spriteBatch . End ( ) ;
0 commit comments