コード例 #1
0
        public LightComponentForwardRenderer()
        {
            modelToLights = new Dictionary <RenderModel, RenderModelLights>(1024);
            directLightShaderGroupEntryKeys          = new FastListStruct <LightForwardShaderFullEntryKey>(32);
            environmentLightShaderGroupEntryKeys     = new FastListStruct <LightForwardShaderFullEntryKey>(32);
            directLightShaderGroupEntryKeysNoShadows = new FastListStruct <LightForwardShaderFullEntryKey>(32);
            parameterCollectionEntryPool             = new PoolListStruct <LightParametersPermutationEntry>(16, CreateParameterCollectionEntry);

            //directLightGroup = new LightGroupRenderer("directLightGroups", LightingKeys.DirectLightGroups);
            //environmentLightGroup = new LightGroupRenderer("environmentLights", LightingKeys.EnvironmentLights);
            lightRenderers = new List <KeyValuePair <Type, LightGroupRendererBase> >(16);

            visibleLights            = new List <LightComponent>(1024);
            visibleLightsWithShadows = new List <LightComponent>(1024);

            shaderEntries = new Dictionary <ObjectId, LightShaderPermutationEntry>(1024);

            directLightsPerModel         = new List <LightEntry>(16);
            activeLightGroups            = new Dictionary <Type, LightComponentCollectionGroup>(16);
            activeLightGroupsWithShadows = new Dictionary <Type, LightComponentCollectionGroup>(16);
            activeRenderers = new List <ActiveLightGroupRenderer>(16);

            lightParameterEntries = new Dictionary <ObjectId, LightParametersPermutationEntry>(32);

            // TODO: Make this pluggable
            RegisterLightGroupRenderer(typeof(LightDirectional), new LightDirectionalGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightSpot), new LightSpotGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightPoint), new LightPointGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightAmbient), new LightAmbientRenderer());
            RegisterLightGroupRenderer(typeof(LightSkybox), new LightSkyboxRenderer());
        }
コード例 #2
0
        public ShadowMapRenderer(string effectName)
        {
            if (effectName == null)
            {
                throw new ArgumentNullException("effectName");
            }
            this.effectName            = effectName;
            atlases                    = new FastListStruct <ShadowMapAtlasTexture>(16);
            shadowMapTextures          = new PoolListStruct <LightShadowMapTexture>(16, CreateLightShadowMapTexture);
            LightComponentsWithShadows = new Dictionary <LightComponent, LightShadowMapTexture>(16);

            opaqueRenderItems      = new RenderItemCollection(512, false);
            transparentRenderItems = new RenderItemCollection(512, true);

            renderers = new Dictionary <Type, ILightShadowMapRenderer>();

            ShadowCamera = new CameraComponent {
                UseCustomViewMatrix = true, UseCustomProjectionMatrix = true
            };

            // Creates a model renderer for the shadows casters
            shadowModelComponentRenderer = new ModelComponentRenderer(effectName + ".ShadowMapCaster")
            {
                CullingMode = CullingMode.None,
                Callbacks   =
                {
                    UpdateMeshes = FilterCasters,
                }
            };

            shadowCasterParameters = new ParameterCollection();
            shadowCasterParameters.Set(ParadoxEffectBaseKeys.ExtensionPostVertexStageShader, ShadowMapCasterExtension);
        }
コード例 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightComponentCollectionGroup"/> class.
 /// </summary>
 internal LightComponentCollectionGroup()
 {
     lightCollectionPool  = new PoolListStruct <LightComponentCollection>(32, LightComponentCollectionFactory);
     groupMasks           = new uint[32 * 2];
     allLights            = new List <LightComponent>(128);
     allLightsWithShadows = new List <LightComponent>(128);
     allMasks             = new HashSet <EntityGroupMask>();
 }
コード例 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RenderLightCollectionGroup"/> class.
 /// </summary>
 internal RenderLightCollectionGroup(Type lightType)
 {
     LightType            = lightType;
     lightCollectionPool  = new PoolListStruct <RenderLightCollection>(32, LightComponentCollectionFactory);
     groupMasks           = new uint[32 * 2];
     allLights            = new List <RenderLight>(128);
     allLightsWithShadows = new List <RenderLight>(128);
     allMasks             = new HashSet <RenderGroupMask>();
 }
コード例 #5
0
            public LightShaderPermutationEntry()
            {
                ParameterCollectionEntryPool = new PoolListStruct <LightParametersPermutationEntry>(1, CreateParameterCollectionEntry);

                DirectLightGroups = new List <LightShaderGroup>();
                EnvironmentLights = new List <LightShaderGroup>();

                DirectLightShaders      = new ShaderSourceCollection();
                EnvironmentLightShaders = new ShaderSourceCollection();
            }
コード例 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightDirectionalShadowMapRenderer"/> class.
 /// </summary>
 public LightDirectionalShadowMapRenderer()
 {
     cascadeSplitRatios = new float[4];
     cascadeFrustumCornersWS = new Vector3[8];
     cascadeFrustumCornersVS = new Vector3[8];
     frustumCornersWS = new Vector3[8];
     frustumCornersVS = new Vector3[8];
     shaderDataPoolCascade1 = new PoolListStruct<LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade1);
     shaderDataPoolCascade2 = new PoolListStruct<LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade2);
     shaderDataPoolCascade4 = new PoolListStruct<LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade4);
 }
コード例 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightDirectionalShadowMapRenderer"/> class.
 /// </summary>
 public LightDirectionalShadowMapRenderer()
 {
     cascadeSplitRatios      = new float[4];
     cascadeFrustumCornersWS = new Vector3[8];
     cascadeFrustumCornersVS = new Vector3[8];
     frustumCornersWS        = new Vector3[8];
     frustumCornersVS        = new Vector3[8];
     shaderDataPoolCascade1  = new PoolListStruct <LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade1);
     shaderDataPoolCascade2  = new PoolListStruct <LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade2);
     shaderDataPoolCascade4  = new PoolListStruct <LightDirectionalShadowMapShaderData>(4, CreateLightDirectionalShadowMapShaderDataCascade4);
 }
コード例 #8
0
ファイル: ShadowMapRenderer.cs プロジェクト: rohitshe/Code
        public ShadowMapRenderer(RenderSystem renderSystem, RenderStage shadowMapRenderStage)
        {
            RenderSystem = renderSystem;
            this.shadowMapRenderStage = shadowMapRenderStage;

            atlases           = new FastListStruct <ShadowMapAtlasTexture>(16);
            shadowRenderViews = new PoolListStruct <ShadowMapRenderView>(16, CreateShadowRenderView);
            shadowMapTextures = new PoolListStruct <LightShadowMapTexture>(16, CreateLightShadowMapTexture);

            Renderers = new Dictionary <Type, ILightShadowMapRenderer>();
        }
コード例 #9
0
        public ShadowMapRenderer(RenderSystem renderSystem, RenderStage shadowMapRenderStage)
        {
            RenderSystem = renderSystem;
            this.shadowMapRenderStage = shadowMapRenderStage;

            atlases           = new FastListStruct <ShadowMapAtlasTexture>(16);
            shadowRenderViews = new PoolListStruct <ShadowMapRenderView>(16, CreateShadowRenderView);
            shadowMapTextures = new PoolListStruct <LightShadowMapTexture>(16, CreateLightShadowMapTexture);

            Renderers = new Dictionary <Type, ILightShadowMapRenderer>();

            ShadowCamera = new CameraComponent {
                UseCustomViewMatrix = true, UseCustomProjectionMatrix = true
            };
        }
コード例 #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightSpotTextureProjectionRenderer"/> class.
 /// </summary>
 public LightSpotTextureProjectionRenderer(SpotLightTextureParameters parameters)
 {
     // TODO: What is this?
     shaderDataPool  = new PoolListStruct <LightSpotTextureProjectionShaderData>(8, CreateLightSpotTextureProjectionShaderData);
     lightParameters = parameters;
 }
コード例 #11
0
 public LightPointShadowMapRendererParaboloid()
 {
     shaderDataPool = new PoolListStruct <ShaderData>(4, () => new ShaderData());
     shadowMaps     = new PoolListStruct <ShadowMapTexture>(16, () => new ShadowMapTexture());
 }
コード例 #12
0
 public LightPointShadowMapRendererCubeMap()
 {
     shaderDataPool = new PoolListStruct <ShaderData>(4, () => new ShaderData());
 }
コード例 #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightSpotShadowMapRenderer"/> class.
 /// </summary>
 public LightSpotShadowMapRenderer()
 {
     shaderDataPool = new PoolListStruct<LightSpotShadowMapShaderData>(8, CreateLightSpotShadowMapShaderData);
 }
コード例 #14
0
        public LightComponentForwardRenderer()
        {
            modelToLights = new Dictionary<RenderModel, RenderModelLights>(1024);
            directLightShaderGroupEntryKeys = new FastListStruct<LightForwardShaderFullEntryKey>(32);
            environmentLightShaderGroupEntryKeys = new FastListStruct<LightForwardShaderFullEntryKey>(32);
            directLightShaderGroupEntryKeysNoShadows = new FastListStruct<LightForwardShaderFullEntryKey>(32);
            parameterCollectionEntryPool = new PoolListStruct<LightParametersPermutationEntry>(16, CreateParameterCollectionEntry);

            //directLightGroup = new LightGroupRenderer("directLightGroups", LightingKeys.DirectLightGroups);
            //environmentLightGroup = new LightGroupRenderer("environmentLights", LightingKeys.EnvironmentLights);
            lightRenderers = new List<KeyValuePair<Type, LightGroupRendererBase>>(16);

            visibleLights = new List<LightComponent>(1024);
            visibleLightsWithShadows = new List<LightComponent>(1024);

            shaderEntries = new Dictionary<ObjectId, LightShaderPermutationEntry>(1024);

            directLightsPerModel = new List<LightEntry>(16);
            activeLightGroups = new Dictionary<Type, LightComponentCollectionGroup>(16);
            activeLightGroupsWithShadows = new Dictionary<Type, LightComponentCollectionGroup>(16);
            activeRenderers = new List<ActiveLightGroupRenderer>(16);

            lightParameterEntries = new Dictionary<ObjectId, LightParametersPermutationEntry>(32);

            // TODO: Make this pluggable
            RegisterLightGroupRenderer(typeof(LightDirectional), new LightDirectionalGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightSpot), new LightSpotGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightPoint), new LightPointGroupRenderer());
            RegisterLightGroupRenderer(typeof(LightAmbient), new LightAmbientRenderer());
            RegisterLightGroupRenderer(typeof(LightSkybox), new LightSkyboxRenderer());
        }
コード例 #15
0
 protected LightShaderGroupAndDataPool(ShaderSource mixin, string compositionName, ILightShadowMapShaderGroupData shadowGroupData)
     : base(mixin, compositionName, shadowGroupData)
 {
     dataPool = new PoolListStruct <T>(4, CreateData);
 }
コード例 #16
0
ファイル: GestureRecognizer.cs プロジェクト: xen2/stride
 protected GestureRecognizer(GestureConfig config, float screenRatio)
 {
     CurrentGestureEvents = new PoolListStruct <GestureEvent>(8, NewEventFactory);
     Config      = config;
     ScreenRatio = screenRatio;
 }
コード例 #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LightSpotShadowMapRenderer"/> class.
 /// </summary>
 public LightSpotShadowMapRenderer()
 {
     shaderDataPool = new PoolListStruct <LightSpotShadowMapShaderData>(8, CreateLightSpotShadowMapShaderDAta);
 }
コード例 #18
0
 protected LightShadowMapRendererBase()
 {
     shadowRenderViews = new PoolListStruct <ShadowMapRenderView>(16, () => new ShadowMapRenderView());
     shadowMaps        = new PoolListStruct <LightShadowMapTexture>(16, () => new LightShadowMapTexture());
 }