10 using SiliconStudio.Core;
11 using SiliconStudio.Paradox.Effects;
12 using SiliconStudio.Paradox.Graphics;
13 using SiliconStudio.Paradox.Shaders;
14 using SiliconStudio.Core.Mathematics;
18 #line 3 "C:\Projects\Paradox\sources\shaders\DefaultDeferredEffect.pdxfx"
19 using SiliconStudio.Paradox.Effects.Data;
22 using SiliconStudio.Paradox.Engine;
25 using SiliconStudio.Paradox.DataModel;
28 namespace DefaultEffects
49 internal static partial class ShaderMixins
57 context.CloneProperties();
60 mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
63 context.Mixin(mixin,
"GBuffer");
66 context.Mixin(mixin,
"NormalVSStream");
73 context.Mixin(mixin,
"SpecularPower");
81 context.Mixin(__subMixin, context.GetParam(MaterialParameters.SpecularPowerMap));
82 mixin.Mixin.AddComposition(
"SpecularPowerMap", __subMixin.Mixin);
96 context.Mixin(__subMixin, context.GetParam(MaterialParameters.SpecularIntensityMap));
97 mixin.Mixin.AddComposition(
"SpecularIntensityMap", __subMixin.Mixin);
103 internal static void __Initialize__()
106 ShaderMixinManager.Register(
"ParadoxGBufferShaderPass",
new ParadoxGBufferShaderPass());
112 internal static partial class ShaderMixins
123 mixin.Children.Add(__subMixin);
126 context.BeginChild(__subMixin);
129 context.Mixin(__subMixin,
"ParadoxGBufferShaderPass");
136 context.RemoveMixin(mixin,
"NormalVSStream");
139 context.RemoveMixin(mixin,
"SpecularPowerMap");
142 context.RemoveMixin(mixin,
"SpecularPowerPerMesh");
145 context.Mixin(mixin,
"NormalVSGBuffer");
148 context.Mixin(mixin,
"SpecularPowerGBuffer");
152 internal static void __Initialize__()
155 ShaderMixinManager.Register(
"ParadoxGBufferPlugin",
new ParadoxGBufferPlugin());
161 internal static partial class ShaderMixins
169 mixin.Mixin.AddMacro(
"DEFERRED_MAX_POINT_LIGHT_COUNT", context.GetParam(LightingKeys.MaxDeferredLights));
172 context.Mixin(mixin,
"DeferredPointLighting");
176 internal static void __Initialize__()
179 ShaderMixinManager.Register(
"ParadoxDeferredLightingPointGroup",
new ParadoxDeferredLightingPointGroup());
185 internal static partial class ShaderMixins
193 context.Mixin(mixin,
"DeferredDirectionalShadowLighting");
196 context.Mixin(mixin,
"ShadowMapCascadeBase");
199 mixin.Mixin.AddMacro(
"SHADOWMAP_COUNT", 1);
202 mixin.Mixin.AddMacro(
"SHADOWMAP_CASCADE_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
205 mixin.Mixin.AddMacro(
"SHADOWMAP_TOTAL_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
208 mixin.Mixin.AddMacro(
"HAS_DYNAMIC_SHADOWMAP_COUNT", 0);
212 internal static void __Initialize__()
215 ShaderMixinManager.Register(
"DeferredLightingDirectShadowGroup",
new DeferredLightingDirectShadowGroup());
221 internal static partial class ShaderMixins
229 context.Mixin(mixin,
"DeferredSpotShadowLighting");
232 context.Mixin(mixin,
"ShadowMapCascadeBase");
235 mixin.Mixin.AddMacro(
"SHADOWMAP_COUNT", 1);
238 mixin.Mixin.AddMacro(
"SHADOWMAP_CASCADE_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
241 mixin.Mixin.AddMacro(
"SHADOWMAP_TOTAL_COUNT", context.GetParam(ShadowMapParameters.ShadowMapCascadeCount));
244 mixin.Mixin.AddMacro(
"HAS_DYNAMIC_SHADOWMAP_COUNT", 0);
248 internal static void __Initialize__()
251 ShaderMixinManager.Register(
"DeferredLightingSpotShadowGroup",
new DeferredLightingSpotShadowGroup());
257 internal static partial class ShaderMixins
268 context.
Mixin(mixin,
"DeferredLightingDirectShadowGroup");
276 context.
Mixin(mixin,
"DeferredLightingSpotShadowGroup");
282 context.Mixin(mixin,
"DeferredLightingDirectShadowGroup");
286 internal static void __Initialize__()
289 ShaderMixinManager.Register(
"DeferredLightTypeGroup",
new DeferredLightTypeGroup());
295 internal static partial class ShaderMixins
303 context.Mixin(mixin,
"DeferredLightTypeGroup");
306 context.Mixin(mixin,
"ShadowMapFilterDefault");
310 internal static void __Initialize__()
313 ShaderMixinManager.Register(
"NearestFilterGroup",
new NearestFilterGroup());
319 internal static partial class ShaderMixins
327 context.Mixin(mixin,
"DeferredLightTypeGroup");
330 context.Mixin(mixin,
"ShadowMapFilterPcf");
334 internal static void __Initialize__()
337 ShaderMixinManager.Register(
"PcfGroup",
new PcfGroup());
343 internal static partial class ShaderMixins
351 context.Mixin(mixin,
"DeferredLightTypeGroup");
354 context.Mixin(mixin,
"ShadowMapFilterVsm");
358 internal static void __Initialize__()
361 ShaderMixinManager.Register(
"VsmGroup",
new VsmGroup());
367 internal static partial class ShaderMixins
375 context.CloneProperties();
378 mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
381 context.Mixin(mixin,
"DeferredShadowLightingShader");
392 context.Mixin(__subMixin,
"NearestFilterGroup");
393 mixin.Mixin.AddCompositionToArray(
"shadows", __subMixin.Mixin);
407 context.Mixin(__subMixin,
"PcfGroup");
408 mixin.Mixin.AddCompositionToArray(
"shadows", __subMixin.Mixin);
422 context.Mixin(__subMixin,
"VsmGroup");
423 mixin.Mixin.AddCompositionToArray(
"shadows", __subMixin.Mixin);
428 internal static void __Initialize__()
431 ShaderMixinManager.Register(
"ParadoxShadowPrepassLighting",
new ParadoxShadowPrepassLighting());
437 internal static partial class ShaderMixins
445 context.Mixin(mixin,
"DeferredDirectionalLighting");
449 internal static void __Initialize__()
452 ShaderMixinManager.Register(
"ParadoxDeferredLightingDirectGroup",
new ParadoxDeferredLightingDirectGroup());
458 internal static partial class ShaderMixins
466 context.Mixin(mixin,
"DeferredSpotLighting");
470 internal static void __Initialize__()
473 ShaderMixinManager.Register(
"ParadoxDeferredLightingSpotGroup",
new ParadoxDeferredLightingSpotGroup());
479 internal static partial class ShaderMixins
487 context.CloneProperties();
490 mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
498 context.Mixin(__subMixin,
"ParadoxDeferredLightingDirectGroup");
499 mixin.Mixin.AddCompositionToArray(
"lightingGroups", __subMixin.Mixin);
504 internal static void __Initialize__()
507 ShaderMixinManager.Register(
"ParadoxDirectPrepassLighting",
new ParadoxDirectPrepassLighting());
513 internal static partial class ShaderMixins
521 context.CloneProperties();
524 mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
535 context.Mixin(__subMixin,
"ParadoxDeferredLightingPointGroup");
536 mixin.Mixin.AddCompositionToArray(
"lightingGroups", __subMixin.Mixin);
541 internal static void __Initialize__()
544 ShaderMixinManager.Register(
"ParadoxPointPrepassLighting",
new ParadoxPointPrepassLighting());
550 internal static partial class ShaderMixins
558 context.CloneProperties();
561 mixin.Mixin.CloneFrom(mixin.Parent.Mixin);
569 context.Mixin(__subMixin,
"ParadoxDeferredLightingSpotGroup");
570 mixin.Mixin.AddCompositionToArray(
"lightingGroups", __subMixin.Mixin);
575 internal static void __Initialize__()
578 ShaderMixinManager.Register(
"ParadoxSpotPrepassLighting",
new ParadoxSpotPrepassLighting());
584 internal static partial class ShaderMixins
592 context.Mixin(mixin,
"ComputeBRDFColorSpecularBlinnPhong");
595 context.Mixin(mixin,
"SpecularPowerGBuffer");
603 context.Mixin(__subMixin,
"ComputeColorOne");
604 mixin.Mixin.AddComposition(
"SpecularIntensityMap", __subMixin.Mixin);
609 internal static void __Initialize__()
612 ShaderMixinManager.Register(
"ParadoxDeferredSpecular",
new ParadoxDeferredSpecular());
618 internal static partial class ShaderMixins
626 context.Mixin(mixin,
"PositionVSGBuffer");
629 context.Mixin(mixin,
"NormalVSGBuffer");
632 context.Mixin(mixin,
"BRDFDiffuseBase");
635 context.Mixin(mixin,
"BRDFSpecularBase");
643 context.Mixin(__subMixin,
"ComputeBRDFColorFresnel");
644 mixin.Mixin.AddComposition(
"DiffuseColor", __subMixin.Mixin);
653 context.Mixin(__subMixin,
"ComputeBRDFDiffuseLambert");
654 mixin.Mixin.AddComposition(
"DiffuseLighting", __subMixin.Mixin);
663 context.Mixin(__subMixin,
"ComputeBRDFColor");
664 mixin.Mixin.AddComposition(
"SpecularColor", __subMixin.Mixin);
673 context.Mixin(__subMixin,
"ParadoxDeferredSpecular");
674 mixin.Mixin.AddComposition(
"SpecularLighting", __subMixin.Mixin);
680 var __subMixin =
new ShaderMixinSourceTree() { Name =
"ParadoxShadowPrepassLighting", Parent = mixin };
681 mixin.Children.Add(__subMixin);
684 context.BeginChild(__subMixin);
687 context.Mixin(__subMixin,
"ParadoxShadowPrepassLighting");
694 context.Mixin(mixin,
"DeferredLightingShader");
699 var __subMixin =
new ShaderMixinSourceTree() { Name =
"ParadoxDirectPrepassLighting", Parent = mixin };
700 mixin.Children.Add(__subMixin);
703 context.BeginChild(__subMixin);
706 context.Mixin(__subMixin,
"ParadoxDirectPrepassLighting");
715 var __subMixin =
new ShaderMixinSourceTree() { Name =
"ParadoxSpotPrepassLighting", Parent = mixin };
716 mixin.Children.Add(__subMixin);
719 context.BeginChild(__subMixin);
722 context.Mixin(__subMixin,
"ParadoxSpotPrepassLighting");
731 var __subMixin =
new ShaderMixinSourceTree() { Name =
"ParadoxPointPrepassLighting", Parent = mixin };
732 mixin.Children.Add(__subMixin);
735 context.BeginChild(__subMixin);
738 context.Mixin(__subMixin,
"ParadoxPointPrepassLighting");
746 internal static void __Initialize__()
749 ShaderMixinManager.Register(
"ParadoxDefaultLightPrepassEffect",
new ParadoxDefaultLightPrepassEffect());
755 internal static partial class ShaderMixins
763 mixin.Mixin.AddMacro(
"LIGHTING_MAX_LIGHT_COUNT", context.GetParam(LightingKeys.MaxDirectionalLights));
769 mixin.Mixin.AddMacro(
"LIGHTING_UNROLL_LOOP",
true);
776 context.Mixin(mixin,
"ShadingDiffusePerPixel");
786 context.Mixin(mixin,
"ShadingDiffusePerVertex");
796 context.Mixin(mixin,
"ShadingDiffuseSpecularPerPixel");
806 context.Mixin(mixin,
"ShadingDiffusePerVertexSpecularPerPixel");
810 context.Mixin(mixin,
"DirectionalShading");
813 context.Mixin(mixin,
"ShadingEyeNormalVS");
817 internal static void __Initialize__()
820 ShaderMixinManager.Register(
"DirectionalLightsShader",
new DirectionalLightsShader());
826 internal static partial class ShaderMixins
843 context.Mixin(__subMixin, context.GetParam(MaterialParameters.AlbedoDiffuse));
844 mixin.Mixin.AddComposition(
"albedoDiffuse", __subMixin.Mixin);
850 internal static void __Initialize__()
853 ShaderMixinManager.Register(
"ParadoxDiffuseDeferred",
new ParadoxDiffuseDeferred());
859 internal static partial class ShaderMixins
876 context.Mixin(__subMixin, context.GetParam(MaterialParameters.AlbedoSpecular));
877 mixin.Mixin.AddComposition(
"albedoSpecular", __subMixin.Mixin);
883 internal static void __Initialize__()
886 ShaderMixinManager.Register(
"ParadoxSpecularDeferred",
new ParadoxSpecularDeferred());
892 internal static partial class ShaderMixins
900 context.Mixin(mixin,
"ParadoxBaseShader");
903 context.Mixin(mixin,
"ParadoxSkinning");
906 context.Mixin(mixin,
"ParadoxShadowCast");
913 context.Mixin(mixin,
"ParadoxGBufferPlugin");
916 context.Mixin(mixin,
"LightDeferredShading");
919 context.Mixin(mixin,
"ParadoxDiffuseDeferred");
922 context.Mixin(mixin,
"ParadoxSpecularDeferred");
929 context.Mixin(mixin,
"AmbientMapShading");
937 context.Mixin(__subMixin, context.GetParam(MaterialParameters.AmbientMap));
938 mixin.Mixin.AddComposition(
"AmbientMap", __subMixin.Mixin);
948 context.Mixin(mixin,
"ParadoxDiffuseForward");
951 context.Mixin(mixin,
"ParadoxSpecularForward");
958 context.Mixin(mixin,
"AmbientMapShading");
966 context.Mixin(__subMixin, context.GetParam(MaterialParameters.AmbientMap));
967 mixin.Mixin.AddComposition(
"AmbientMap", __subMixin.Mixin);
976 context.Mixin(mixin,
"TransparentShading");
979 context.Mixin(mixin,
"DiscardTransparent");
985 internal static void __Initialize__()
988 ShaderMixinManager.Register(
"ParadoxDefaultDeferredShader",
new ParadoxDefaultDeferredShader());
Key of an effect parameter.
SiliconStudio.Paradox.Graphics.Buffer Buffer
Parameters used for mixin.
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
Contains a tree of ShaderMixinSource.
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.
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.
static readonly ParameterKey< int > PerVertexDiffusePixelSpecularDirectionalLightCount