Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DefaultDeferredEffect.cs
Go to the documentation of this file.
1 // <auto-generated>
2 // Do not edit this file yourself!
3 //
4 // This code was generated by Paradox Shader Mixin Code Generator.
5 // To generate it yourself, please install SiliconStudio.Paradox.VisualStudio.Package .vsix
6 // and re-save the associated .pdxfx.
7 // </auto-generated>
8 
9 using System;
10 using SiliconStudio.Core;
11 using SiliconStudio.Paradox.Effects;
12 using SiliconStudio.Paradox.Graphics;
13 using SiliconStudio.Paradox.Shaders;
14 using SiliconStudio.Core.Mathematics;
16 
17 
18 #line 3 "C:\Projects\Paradox\sources\shaders\DefaultDeferredEffect.pdxfx"
19 using SiliconStudio.Paradox.Effects.Data;
20 
21 #line 4
22 using SiliconStudio.Paradox.Engine;
23 
24 #line 5
25 using SiliconStudio.Paradox.DataModel;
26 
27 #line 7
28 namespace DefaultEffects
29 {
30  [DataContract]
31 #line 10
33  {
34 
35  #line 12
36  public static readonly ParameterKey<int> PerPixelDirectionalLightCount = ParameterKeys.New<int>();
37 
38  #line 13
39  public static readonly ParameterKey<int> PerPixelDiffuseDirectionalLightCount = ParameterKeys.New<int>();
40 
41  #line 14
42  public static readonly ParameterKey<int> PerVertexDirectionalLightCount = ParameterKeys.New<int>();
43 
44  #line 15
45  public static readonly ParameterKey<int> PerVertexDiffusePixelSpecularDirectionalLightCount = ParameterKeys.New<int>();
46  };
47 
48  #line 19
49  internal static partial class ShaderMixins
50  {
51  internal partial class ParadoxGBufferShaderPass : IShaderMixinBuilder
52  {
53  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
54  {
55 
56  #line 24
57  context.CloneProperties();
58 
59  #line 24
60  mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
61 
62  #line 25
63  context.Mixin(mixin, "GBuffer");
64 
65  #line 26
66  context.Mixin(mixin, "NormalVSStream");
67 
68  #line 28
69  if (context.GetParam(MaterialParameters.SpecularPowerMap) != null)
70  {
71 
72  #line 30
73  context.Mixin(mixin, "SpecularPower");
74 
75  {
76 
77  #line 31
78  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
79 
80  #line 31
81  context.Mixin(__subMixin, context.GetParam(MaterialParameters.SpecularPowerMap));
82  mixin.Mixin.AddComposition("SpecularPowerMap", __subMixin.Mixin);
83  }
84  }
85 
86  #line 34
87  if (context.GetParam(MaterialParameters.SpecularIntensityMap) != null)
88  {
89 
90  {
91 
92  #line 36
93  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
94 
95  #line 36
96  context.Mixin(__subMixin, context.GetParam(MaterialParameters.SpecularIntensityMap));
97  mixin.Mixin.AddComposition("SpecularIntensityMap", __subMixin.Mixin);
98  }
99  }
100  }
101 
102  [ModuleInitializer]
103  internal static void __Initialize__()
104 
105  {
106  ShaderMixinManager.Register("ParadoxGBufferShaderPass", new ParadoxGBufferShaderPass());
107  }
108  }
109  }
110 
111  #line 41
112  internal static partial class ShaderMixins
113  {
114  internal partial class ParadoxGBufferPlugin : IShaderMixinBuilder
115  {
116  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
117  {
118 
119  {
120 
121  #line 43
122  var __subMixin = new ShaderMixinSourceTree() { Name = "ParadoxGBufferShaderPass", Parent = mixin };
123  mixin.Children.Add(__subMixin);
124 
125  #line 43
126  context.BeginChild(__subMixin);
127 
128  #line 43
129  context.Mixin(__subMixin, "ParadoxGBufferShaderPass");
130 
131  #line 43
132  context.EndChild();
133  }
134 
135  #line 47
136  context.RemoveMixin(mixin, "NormalVSStream");
137 
138  #line 48
139  context.RemoveMixin(mixin, "SpecularPowerMap");
140 
141  #line 49
142  context.RemoveMixin(mixin, "SpecularPowerPerMesh");
143 
144  #line 52
145  context.Mixin(mixin, "NormalVSGBuffer");
146 
147  #line 54
148  context.Mixin(mixin, "SpecularPowerGBuffer");
149  }
150 
151  [ModuleInitializer]
152  internal static void __Initialize__()
153 
154  {
155  ShaderMixinManager.Register("ParadoxGBufferPlugin", new ParadoxGBufferPlugin());
156  }
157  }
158  }
159 
160  #line 57
161  internal static partial class ShaderMixins
162  {
163  internal partial class ParadoxDeferredLightingPointGroup : IShaderMixinBuilder
164  {
165  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
166  {
167 
168  #line 61
169  mixin.Mixin.AddMacro("DEFERRED_MAX_POINT_LIGHT_COUNT", context.GetParam(LightingKeys.MaxDeferredLights));
170 
171  #line 62
172  context.Mixin(mixin, "DeferredPointLighting");
173  }
174 
175  [ModuleInitializer]
176  internal static void __Initialize__()
177 
178  {
179  ShaderMixinManager.Register("ParadoxDeferredLightingPointGroup", new ParadoxDeferredLightingPointGroup());
180  }
181  }
182  }
183 
184  #line 65
185  internal static partial class ShaderMixins
186  {
187  internal partial class DeferredLightingDirectShadowGroup : IShaderMixinBuilder
188  {
189  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
190  {
191 
192  #line 70
193  context.Mixin(mixin, "DeferredDirectionalShadowLighting");
194 
195  #line 72
196  context.Mixin(mixin, "ShadowMapCascadeBase");
197 
198  #line 74
199  mixin.Mixin.AddMacro("SHADOWMAP_COUNT", 1);
200 
201  #line 75
202  mixin.Mixin.AddMacro("SHADOWMAP_CASCADE_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
203 
204  #line 76
205  mixin.Mixin.AddMacro("SHADOWMAP_TOTAL_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
206 
207  #line 77
208  mixin.Mixin.AddMacro("HAS_DYNAMIC_SHADOWMAP_COUNT", 0);
209  }
210 
211  [ModuleInitializer]
212  internal static void __Initialize__()
213 
214  {
215  ShaderMixinManager.Register("DeferredLightingDirectShadowGroup", new DeferredLightingDirectShadowGroup());
216  }
217  }
218  }
219 
220  #line 80
221  internal static partial class ShaderMixins
222  {
223  internal partial class DeferredLightingSpotShadowGroup : IShaderMixinBuilder
224  {
225  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
226  {
227 
228  #line 85
229  context.Mixin(mixin, "DeferredSpotShadowLighting");
230 
231  #line 87
232  context.Mixin(mixin, "ShadowMapCascadeBase");
233 
234  #line 89
235  mixin.Mixin.AddMacro("SHADOWMAP_COUNT", 1);
236 
237  #line 90
238  mixin.Mixin.AddMacro("SHADOWMAP_CASCADE_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
239 
240  #line 91
241  mixin.Mixin.AddMacro("SHADOWMAP_TOTAL_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
242 
243  #line 92
244  mixin.Mixin.AddMacro("HAS_DYNAMIC_SHADOWMAP_COUNT", 0);
245  }
246 
247  [ModuleInitializer]
248  internal static void __Initialize__()
249 
250  {
251  ShaderMixinManager.Register("DeferredLightingSpotShadowGroup", new DeferredLightingSpotShadowGroup());
252  }
253  }
254  }
255 
256  #line 95
257  internal static partial class ShaderMixins
258  {
259  internal partial class DeferredLightTypeGroup : IShaderMixinBuilder
260  {
261  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
262  {
263 
264  #line 99
265  if (context.GetParam(ShadowMapParameters.LightType) == LightType.Directional)
266 
267  #line 100
268  context.Mixin(mixin, "DeferredLightingDirectShadowGroup");
269 
270  #line 101
271  else
272 #line 101
273  if (context.GetParam(ShadowMapParameters.LightType) == LightType.Spot)
274 
275  #line 102
276  context.Mixin(mixin, "DeferredLightingSpotShadowGroup");
277 
278  #line 104
279  else
280 
281  #line 104
282  context.Mixin(mixin, "DeferredLightingDirectShadowGroup");
283  }
284 
285  [ModuleInitializer]
286  internal static void __Initialize__()
287 
288  {
289  ShaderMixinManager.Register("DeferredLightTypeGroup", new DeferredLightTypeGroup());
290  }
291  }
292  }
293 
294  #line 107
295  internal static partial class ShaderMixins
296  {
297  internal partial class NearestFilterGroup : IShaderMixinBuilder
298  {
299  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
300  {
301 
302  #line 109
303  context.Mixin(mixin, "DeferredLightTypeGroup");
304 
305  #line 110
306  context.Mixin(mixin, "ShadowMapFilterDefault");
307  }
308 
309  [ModuleInitializer]
310  internal static void __Initialize__()
311 
312  {
313  ShaderMixinManager.Register("NearestFilterGroup", new NearestFilterGroup());
314  }
315  }
316  }
317 
318  #line 113
319  internal static partial class ShaderMixins
320  {
321  internal partial class PcfGroup : IShaderMixinBuilder
322  {
323  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
324  {
325 
326  #line 115
327  context.Mixin(mixin, "DeferredLightTypeGroup");
328 
329  #line 116
330  context.Mixin(mixin, "ShadowMapFilterPcf");
331  }
332 
333  [ModuleInitializer]
334  internal static void __Initialize__()
335 
336  {
337  ShaderMixinManager.Register("PcfGroup", new PcfGroup());
338  }
339  }
340  }
341 
342  #line 119
343  internal static partial class ShaderMixins
344  {
345  internal partial class VsmGroup : IShaderMixinBuilder
346  {
347  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
348  {
349 
350  #line 121
351  context.Mixin(mixin, "DeferredLightTypeGroup");
352 
353  #line 122
354  context.Mixin(mixin, "ShadowMapFilterVsm");
355  }
356 
357  [ModuleInitializer]
358  internal static void __Initialize__()
359 
360  {
361  ShaderMixinManager.Register("VsmGroup", new VsmGroup());
362  }
363  }
364  }
365 
366  #line 125
367  internal static partial class ShaderMixins
368  {
369  internal partial class ParadoxShadowPrepassLighting : IShaderMixinBuilder
370  {
371  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
372  {
373 
374  #line 129
375  context.CloneProperties();
376 
377  #line 129
378  mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
379 
380  #line 130
381  context.Mixin(mixin, "DeferredShadowLightingShader");
382 
383  #line 132
384  if (context.GetParam(ShadowMapParameters.FilterType) == ShadowMapFilterType.Nearest)
385 
386  {
387 
388  #line 133
389  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
390 
391  #line 133
392  context.Mixin(__subMixin, "NearestFilterGroup");
393  mixin.Mixin.AddCompositionToArray("shadows", __subMixin.Mixin);
394  }
395 
396  #line 134
397  else
398 #line 134
399  if (context.GetParam(ShadowMapParameters.FilterType) == ShadowMapFilterType.PercentageCloserFiltering)
400 
401  {
402 
403  #line 135
404  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
405 
406  #line 135
407  context.Mixin(__subMixin, "PcfGroup");
408  mixin.Mixin.AddCompositionToArray("shadows", __subMixin.Mixin);
409  }
410 
411  #line 136
412  else
413 #line 136
414  if (context.GetParam(ShadowMapParameters.FilterType) == ShadowMapFilterType.Variance)
415 
416  {
417 
418  #line 137
419  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
420 
421  #line 137
422  context.Mixin(__subMixin, "VsmGroup");
423  mixin.Mixin.AddCompositionToArray("shadows", __subMixin.Mixin);
424  }
425  }
426 
427  [ModuleInitializer]
428  internal static void __Initialize__()
429 
430  {
431  ShaderMixinManager.Register("ParadoxShadowPrepassLighting", new ParadoxShadowPrepassLighting());
432  }
433  }
434  }
435 
436  #line 140
437  internal static partial class ShaderMixins
438  {
439  internal partial class ParadoxDeferredLightingDirectGroup : IShaderMixinBuilder
440  {
441  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
442  {
443 
444  #line 144
445  context.Mixin(mixin, "DeferredDirectionalLighting");
446  }
447 
448  [ModuleInitializer]
449  internal static void __Initialize__()
450 
451  {
452  ShaderMixinManager.Register("ParadoxDeferredLightingDirectGroup", new ParadoxDeferredLightingDirectGroup());
453  }
454  }
455  }
456 
457  #line 147
458  internal static partial class ShaderMixins
459  {
460  internal partial class ParadoxDeferredLightingSpotGroup : IShaderMixinBuilder
461  {
462  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
463  {
464 
465  #line 151
466  context.Mixin(mixin, "DeferredSpotLighting");
467  }
468 
469  [ModuleInitializer]
470  internal static void __Initialize__()
471 
472  {
473  ShaderMixinManager.Register("ParadoxDeferredLightingSpotGroup", new ParadoxDeferredLightingSpotGroup());
474  }
475  }
476  }
477 
478  #line 154
479  internal static partial class ShaderMixins
480  {
481  internal partial class ParadoxDirectPrepassLighting : IShaderMixinBuilder
482  {
483  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
484  {
485 
486  #line 156
487  context.CloneProperties();
488 
489  #line 156
490  mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
491 
492  {
493 
494  #line 157
495  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
496 
497  #line 157
498  context.Mixin(__subMixin, "ParadoxDeferredLightingDirectGroup");
499  mixin.Mixin.AddCompositionToArray("lightingGroups", __subMixin.Mixin);
500  }
501  }
502 
503  [ModuleInitializer]
504  internal static void __Initialize__()
505 
506  {
507  ShaderMixinManager.Register("ParadoxDirectPrepassLighting", new ParadoxDirectPrepassLighting());
508  }
509  }
510  }
511 
512  #line 160
513  internal static partial class ShaderMixins
514  {
515  internal partial class ParadoxPointPrepassLighting : IShaderMixinBuilder
516  {
517  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
518  {
519 
520  #line 164
521  context.CloneProperties();
522 
523  #line 164
524  mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
525 
526  #line 165
527  if (context.GetParam(LightingKeys.MaxDeferredLights) > 0)
528 
529  {
530 
531  #line 166
532  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
533 
534  #line 166
535  context.Mixin(__subMixin, "ParadoxDeferredLightingPointGroup");
536  mixin.Mixin.AddCompositionToArray("lightingGroups", __subMixin.Mixin);
537  }
538  }
539 
540  [ModuleInitializer]
541  internal static void __Initialize__()
542 
543  {
544  ShaderMixinManager.Register("ParadoxPointPrepassLighting", new ParadoxPointPrepassLighting());
545  }
546  }
547  }
548 
549  #line 169
550  internal static partial class ShaderMixins
551  {
552  internal partial class ParadoxSpotPrepassLighting : IShaderMixinBuilder
553  {
554  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
555  {
556 
557  #line 173
558  context.CloneProperties();
559 
560  #line 173
561  mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
562 
563  {
564 
565  #line 174
566  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
567 
568  #line 174
569  context.Mixin(__subMixin, "ParadoxDeferredLightingSpotGroup");
570  mixin.Mixin.AddCompositionToArray("lightingGroups", __subMixin.Mixin);
571  }
572  }
573 
574  [ModuleInitializer]
575  internal static void __Initialize__()
576 
577  {
578  ShaderMixinManager.Register("ParadoxSpotPrepassLighting", new ParadoxSpotPrepassLighting());
579  }
580  }
581  }
582 
583  #line 177
584  internal static partial class ShaderMixins
585  {
586  internal partial class ParadoxDeferredSpecular : IShaderMixinBuilder
587  {
588  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
589  {
590 
591  #line 179
592  context.Mixin(mixin, "ComputeBRDFColorSpecularBlinnPhong");
593 
594  #line 180
595  context.Mixin(mixin, "SpecularPowerGBuffer");
596 
597  {
598 
599  #line 181
600  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
601 
602  #line 181
603  context.Mixin(__subMixin, "ComputeColorOne");
604  mixin.Mixin.AddComposition("SpecularIntensityMap", __subMixin.Mixin);
605  }
606  }
607 
608  [ModuleInitializer]
609  internal static void __Initialize__()
610 
611  {
612  ShaderMixinManager.Register("ParadoxDeferredSpecular", new ParadoxDeferredSpecular());
613  }
614  }
615  }
616 
617  #line 184
618  internal static partial class ShaderMixins
619  {
620  internal partial class ParadoxDefaultLightPrepassEffect : IShaderMixinBuilder
621  {
622  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
623  {
624 
625  #line 188
626  context.Mixin(mixin, "PositionVSGBuffer");
627 
628  #line 189
629  context.Mixin(mixin, "NormalVSGBuffer");
630 
631  #line 190
632  context.Mixin(mixin, "BRDFDiffuseBase");
633 
634  #line 191
635  context.Mixin(mixin, "BRDFSpecularBase");
636 
637  {
638 
639  #line 192
640  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
641 
642  #line 192
643  context.Mixin(__subMixin, "ComputeBRDFColorFresnel");
644  mixin.Mixin.AddComposition("DiffuseColor", __subMixin.Mixin);
645  }
646 
647  {
648 
649  #line 193
650  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
651 
652  #line 193
653  context.Mixin(__subMixin, "ComputeBRDFDiffuseLambert");
654  mixin.Mixin.AddComposition("DiffuseLighting", __subMixin.Mixin);
655  }
656 
657  {
658 
659  #line 194
660  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
661 
662  #line 194
663  context.Mixin(__subMixin, "ComputeBRDFColor");
664  mixin.Mixin.AddComposition("SpecularColor", __subMixin.Mixin);
665  }
666 
667  {
668 
669  #line 195
670  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
671 
672  #line 195
673  context.Mixin(__subMixin, "ParadoxDeferredSpecular");
674  mixin.Mixin.AddComposition("SpecularLighting", __subMixin.Mixin);
675  }
676 
677  {
678 
679  #line 197
680  var __subMixin = new ShaderMixinSourceTree() { Name = "ParadoxShadowPrepassLighting", Parent = mixin };
681  mixin.Children.Add(__subMixin);
682 
683  #line 197
684  context.BeginChild(__subMixin);
685 
686  #line 197
687  context.Mixin(__subMixin, "ParadoxShadowPrepassLighting");
688 
689  #line 197
690  context.EndChild();
691  }
692 
693  #line 199
694  context.Mixin(mixin, "DeferredLightingShader");
695 
696  {
697 
698  #line 201
699  var __subMixin = new ShaderMixinSourceTree() { Name = "ParadoxDirectPrepassLighting", Parent = mixin };
700  mixin.Children.Add(__subMixin);
701 
702  #line 201
703  context.BeginChild(__subMixin);
704 
705  #line 201
706  context.Mixin(__subMixin, "ParadoxDirectPrepassLighting");
707 
708  #line 201
709  context.EndChild();
710  }
711 
712  {
713 
714  #line 203
715  var __subMixin = new ShaderMixinSourceTree() { Name = "ParadoxSpotPrepassLighting", Parent = mixin };
716  mixin.Children.Add(__subMixin);
717 
718  #line 203
719  context.BeginChild(__subMixin);
720 
721  #line 203
722  context.Mixin(__subMixin, "ParadoxSpotPrepassLighting");
723 
724  #line 203
725  context.EndChild();
726  }
727 
728  {
729 
730  #line 205
731  var __subMixin = new ShaderMixinSourceTree() { Name = "ParadoxPointPrepassLighting", Parent = mixin };
732  mixin.Children.Add(__subMixin);
733 
734  #line 205
735  context.BeginChild(__subMixin);
736 
737  #line 205
738  context.Mixin(__subMixin, "ParadoxPointPrepassLighting");
739 
740  #line 205
741  context.EndChild();
742  }
743  }
744 
745  [ModuleInitializer]
746  internal static void __Initialize__()
747 
748  {
749  ShaderMixinManager.Register("ParadoxDefaultLightPrepassEffect", new ParadoxDefaultLightPrepassEffect());
750  }
751  }
752  }
753 
754  #line 208
755  internal static partial class ShaderMixins
756  {
757  internal partial class DirectionalLightsShader : IShaderMixinBuilder
758  {
759  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
760  {
761 
762  #line 213
763  mixin.Mixin.AddMacro("LIGHTING_MAX_LIGHT_COUNT", context.GetParam(LightingKeys.MaxDirectionalLights));
764 
765  #line 214
766  if (context.GetParam(LightingKeys.UnrollDirectionalLightLoop))
767 
768  #line 215
769  mixin.Mixin.AddMacro("LIGHTING_UNROLL_LOOP", true);
770 
771  #line 217
772  if (context.GetParam(MaterialParameters.LightingType) == MaterialLightingType.DiffusePixel)
773  {
774 
775  #line 219
776  context.Mixin(mixin, "ShadingDiffusePerPixel");
777  }
778 
779  #line 221
780  else
781 #line 221
782  if (context.GetParam(MaterialParameters.LightingType) == MaterialLightingType.DiffuseVertex)
783  {
784 
785  #line 223
786  context.Mixin(mixin, "ShadingDiffusePerVertex");
787  }
788 
789  #line 225
790  else
791 #line 225
792  if (context.GetParam(MaterialParameters.LightingType) == MaterialLightingType.DiffuseSpecularPixel)
793  {
794 
795  #line 227
796  context.Mixin(mixin, "ShadingDiffuseSpecularPerPixel");
797  }
798 
799  #line 229
800  else
801 #line 229
802  if (context.GetParam(MaterialParameters.LightingType) == MaterialLightingType.DiffuseVertexSpecularPixel)
803  {
804 
805  #line 231
806  context.Mixin(mixin, "ShadingDiffusePerVertexSpecularPerPixel");
807  }
808 
809  #line 233
810  context.Mixin(mixin, "DirectionalShading");
811 
812  #line 234
813  context.Mixin(mixin, "ShadingEyeNormalVS");
814  }
815 
816  [ModuleInitializer]
817  internal static void __Initialize__()
818 
819  {
820  ShaderMixinManager.Register("DirectionalLightsShader", new DirectionalLightsShader());
821  }
822  }
823  }
824 
825  #line 237
826  internal static partial class ShaderMixins
827  {
828  internal partial class ParadoxDiffuseDeferred : IShaderMixinBuilder
829  {
830  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
831  {
832 
833  #line 241
834  if (context.GetParam(MaterialParameters.AlbedoDiffuse) != null)
835  {
836 
837  {
838 
839  #line 243
840  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
841 
842  #line 243
843  context.Mixin(__subMixin, context.GetParam(MaterialParameters.AlbedoDiffuse));
844  mixin.Mixin.AddComposition("albedoDiffuse", __subMixin.Mixin);
845  }
846  }
847  }
848 
849  [ModuleInitializer]
850  internal static void __Initialize__()
851 
852  {
853  ShaderMixinManager.Register("ParadoxDiffuseDeferred", new ParadoxDiffuseDeferred());
854  }
855  }
856  }
857 
858  #line 247
859  internal static partial class ShaderMixins
860  {
861  internal partial class ParadoxSpecularDeferred : IShaderMixinBuilder
862  {
863  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
864  {
865 
866  #line 251
867  if (context.GetParam(MaterialParameters.AlbedoSpecular) != null)
868  {
869 
870  {
871 
872  #line 253
873  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
874 
875  #line 253
876  context.Mixin(__subMixin, context.GetParam(MaterialParameters.AlbedoSpecular));
877  mixin.Mixin.AddComposition("albedoSpecular", __subMixin.Mixin);
878  }
879  }
880  }
881 
882  [ModuleInitializer]
883  internal static void __Initialize__()
884 
885  {
886  ShaderMixinManager.Register("ParadoxSpecularDeferred", new ParadoxSpecularDeferred());
887  }
888  }
889  }
890 
891  #line 257
892  internal static partial class ShaderMixins
893  {
894  internal partial class ParadoxDefaultDeferredShader : IShaderMixinBuilder
895  {
896  public void Generate(ShaderMixinSourceTree mixin, ShaderMixinContext context)
897  {
898 
899  #line 262
900  context.Mixin(mixin, "ParadoxBaseShader");
901 
902  #line 264
903  context.Mixin(mixin, "ParadoxSkinning");
904 
905  #line 266
906  context.Mixin(mixin, "ParadoxShadowCast");
907 
908  #line 270
909  if (context.GetParam(RenderingParameters.UseDeferred) && !context.GetParam(MaterialParameters.UseTransparent))
910  {
911 
912  #line 272
913  context.Mixin(mixin, "ParadoxGBufferPlugin");
914 
915  #line 273
916  context.Mixin(mixin, "LightDeferredShading");
917 
918  #line 274
919  context.Mixin(mixin, "ParadoxDiffuseDeferred");
920 
921  #line 275
922  context.Mixin(mixin, "ParadoxSpecularDeferred");
923 
924  #line 277
925  if (context.GetParam(MaterialParameters.AmbientMap) != null)
926  {
927 
928  #line 279
929  context.Mixin(mixin, "AmbientMapShading");
930 
931  {
932 
933  #line 280
934  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
935 
936  #line 280
937  context.Mixin(__subMixin, context.GetParam(MaterialParameters.AmbientMap));
938  mixin.Mixin.AddComposition("AmbientMap", __subMixin.Mixin);
939  }
940  }
941  }
942 
943  #line 284
944  else
945  {
946 
947  #line 285
948  context.Mixin(mixin, "ParadoxDiffuseForward");
949 
950  #line 286
951  context.Mixin(mixin, "ParadoxSpecularForward");
952 
953  #line 288
954  if (context.GetParam(MaterialParameters.AmbientMap) != null)
955  {
956 
957  #line 290
958  context.Mixin(mixin, "AmbientMapShading");
959 
960  {
961 
962  #line 291
963  var __subMixin = new ShaderMixinSourceTree() { Parent = mixin };
964 
965  #line 291
966  context.Mixin(__subMixin, context.GetParam(MaterialParameters.AmbientMap));
967  mixin.Mixin.AddComposition("AmbientMap", __subMixin.Mixin);
968  }
969  }
970 
971  #line 294
972  if (context.GetParam(MaterialParameters.UseTransparent))
973  {
974 
975  #line 296
976  context.Mixin(mixin, "TransparentShading");
977 
978  #line 297
979  context.Mixin(mixin, "DiscardTransparent");
980  }
981  }
982  }
983 
984  [ModuleInitializer]
985  internal static void __Initialize__()
986 
987  {
988  ShaderMixinManager.Register("ParadoxDefaultDeferredShader", new ParadoxDefaultDeferredShader());
989  }
990  }
991  }
992 }
Key of an effect parameter.
Definition: ParameterKey.cs:15
SiliconStudio.Paradox.Graphics.Buffer Buffer
static readonly ParameterKey< LightType > LightType
Filter type of the shadow map.
static readonly ParameterKey< ShadowMapFilterType > FilterType
Filter type of the shadow map.
static readonly ParameterKey< ShaderMixinSource > AlbedoDiffuse
static readonly ParameterKey< int > PerPixelDirectionalLightCount
A context used when mixin ShaderSource.
static readonly ParameterKey< bool > UseDeferred
All-in-One Buffer class linked SharpDX.Direct3D11.Buffer.
static readonly ParameterKey< ShaderMixinSource > SpecularIntensityMap
static readonly ParameterKey< int > PerPixelDiffuseDirectionalLightCount
static ParameterKey< MaterialLightingType > LightingType
Parameter key for the lighting type.
static readonly ParameterKey< int > MaxDeferredLights
Maximum number of deferred lights.
Definition: LightingKeys.cs:92
static readonly ParameterKey< ShaderMixinSource > AlbedoSpecular
void Mixin(ShaderMixinSourceTree mixinTree, string name, params object[] genericParameters)
Mixins a ShaderClassSource identified by its name/generic parameters into the specified mixin tree...
static readonly ParameterKey< ShaderMixinSource > SpecularPowerMap
static readonly ParameterKey< bool > UseTransparent
static readonly ParameterKey< ShaderMixinSource > AmbientMap
Interface to be implemented for dynamic mixin generation.
static readonly ParameterKey< int > PerVertexDirectionalLightCount
static readonly ParameterKey< bool > UnrollDirectionalLightLoop
A flag stating if directional light loop should be unrolled.
Definition: LightingKeys.cs:44
static readonly ParameterKey< int > PerVertexDiffusePixelSpecularDirectionalLightCount