예제 #1
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredTransparent");
            E  = new Effect(device, _b);

            TechDebug                 = E.GetTechniqueByName("Debug");
            TechDebugPost             = E.GetTechniqueByName("DebugPost");
            TechDebugLighting         = E.GetTechniqueByName("DebugLighting");
            TechDebugLocalReflections = E.GetTechniqueByName("DebugLocalReflections");
            TechCombine0              = E.GetTechniqueByName("Combine0");

            for (var i = 0; i < TechDebug.Description.PassCount && InputSignaturePT == null; i++)
            {
                InputSignaturePT = TechDebug.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePT == null)
            {
                throw new System.Exception("input signature (DeferredTransparent, PT, Debug) == null");
            }
            LayoutPT = new InputLayout(device, InputSignaturePT, InputLayouts.VerticePT.InputElementsValue);

            FxWorldViewProjInv   = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProjInv").AsMatrix());
            FxBaseMap            = E.GetVariableByName("gBaseMap").AsResource();
            FxNormalMap          = E.GetVariableByName("gNormalMap").AsResource();
            FxMapsMap            = E.GetVariableByName("gMapsMap").AsResource();
            FxDepthMap           = E.GetVariableByName("gDepthMap").AsResource();
            FxLightMap           = E.GetVariableByName("gLightMap").AsResource();
            FxLocalReflectionMap = E.GetVariableByName("gLocalReflectionMap").AsResource();
            FxReflectionCubemap  = E.GetVariableByName("gReflectionCubemap").AsResource();
            FxAmbientDown        = E.GetVariableByName("gAmbientDown").AsVector();
            FxAmbientRange       = E.GetVariableByName("gAmbientRange").AsVector();
            FxEyePosW            = E.GetVariableByName("gEyePosW").AsVector();
        }
예제 #2
0
파일: Shaders.cs 프로젝트: tankyx/actools
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "BakeryShaders");
            E  = new Effect(device, _b);

            TechPerPixel              = new EffectReadyTechnique(E.GetTechniqueByName("PerPixel"));
            TechMultiLayer            = new EffectReadyTechnique(E.GetTechniqueByName("MultiLayer"));
            TechPerPixel_SecondPass   = new EffectReadyTechnique(E.GetTechniqueByName("PerPixel_SecondPass"));
            TechMultiLayer_SecondPass = new EffectReadyTechnique(E.GetTechniqueByName("MultiLayer_SecondPass"));
            TechPerPixel_GrassPass    = new EffectReadyTechnique(E.GetTechniqueByName("PerPixel_GrassPass"));

            for (var i = 0; i < TechPerPixel.Description.PassCount && InputSignaturePNTG == null; i++)
            {
                InputSignaturePNTG = TechPerPixel.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePNTG == null)
            {
                throw new System.Exception("input signature (BakeryShaders, PNTG, PerPixel) == null");
            }
            LayoutPNTG = new InputLayout(device, InputSignaturePNTG, InputLayouts.VerticePNTG.InputElementsValue);

            FxWorldViewProj  = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj"));
            FxDiffuseMap     = new EffectOnlyResourceVariable(E.GetVariableByName("gDiffuseMap"));
            FxMaskMap        = new EffectOnlyResourceVariable(E.GetVariableByName("gMaskMap"));
            FxDetailRMap     = new EffectOnlyResourceVariable(E.GetVariableByName("gDetailRMap"));
            FxDetailGMap     = new EffectOnlyResourceVariable(E.GetVariableByName("gDetailGMap"));
            FxDetailBMap     = new EffectOnlyResourceVariable(E.GetVariableByName("gDetailBMap"));
            FxDetailAMap     = new EffectOnlyResourceVariable(E.GetVariableByName("gDetailAMap"));
            FxAlphaMap       = new EffectOnlyResourceVariable(E.GetVariableByName("gAlphaMap"));
            FxKsDiffuse      = new EffectOnlyFloatVariable(E.GetVariableByName("gKsDiffuse"));
            FxAlphaRef       = new EffectOnlyFloatVariable(E.GetVariableByName("gAlphaRef"));
            FxMagicMult      = new EffectOnlyFloatVariable(E.GetVariableByName("gMagicMult"));
            FxSecondPassMode = new EffectOnlyFloatVariable(E.GetVariableByName("gSecondPassMode"));
            FxMultRGBA       = new EffectOnlyVector4Variable(E.GetVariableByName("gMultRGBA"));
        }
예제 #3
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredPpSslr");
            E  = new Effect(device, _b);

            TechHabrahabrVersion = E.GetTechniqueByName("HabrahabrVersion");

            for (var i = 0; i < TechHabrahabrVersion.Description.PassCount && InputSignaturePT == null; i++)
            {
                InputSignaturePT = TechHabrahabrVersion.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePT == null)
            {
                throw new System.Exception("input signature (DeferredPpSslr, PT, HabrahabrVersion) == null");
            }
            LayoutPT = new InputLayout(device, InputSignaturePT, InputLayouts.VerticePT.InputElementsValue);

            FxWorldViewProjInv = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProjInv").AsMatrix());
            FxWorldViewProj    = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
            FxBaseMap          = E.GetVariableByName("gBaseMap").AsResource();
            FxLightMap         = E.GetVariableByName("gLightMap").AsResource();
            FxNormalMap        = E.GetVariableByName("gNormalMap").AsResource();
            FxMapsMap          = E.GetVariableByName("gMapsMap").AsResource();
            FxDepthMap         = E.GetVariableByName("gDepthMap").AsResource();
            FxEyePosW          = E.GetVariableByName("gEyePosW").AsVector();
        }
예제 #4
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredGObject");
            E  = new Effect(device, _b);

            TechStandardDeferred      = E.GetTechniqueByName("StandardDeferred");
            TechStandardForward       = E.GetTechniqueByName("StandardForward");
            TechAmbientShadowDeferred = E.GetTechniqueByName("AmbientShadowDeferred");
            TechTransparentDeferred   = E.GetTechniqueByName("TransparentDeferred");
            TechTransparentForward    = E.GetTechniqueByName("TransparentForward");
            TechTransparentMask       = E.GetTechniqueByName("TransparentMask");

            for (var i = 0; i < TechStandardDeferred.Description.PassCount && InputSignaturePNTG == null; i++)
            {
                InputSignaturePNTG = TechStandardDeferred.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePNTG == null)
            {
                throw new System.Exception("input signature (DeferredGObject, PNTG, StandardDeferred) == null");
            }
            LayoutPNTG = new InputLayout(device, InputSignaturePNTG, InputLayouts.VerticePNTG.InputElementsValue);
            for (var i = 0; i < TechAmbientShadowDeferred.Description.PassCount && InputSignaturePT == null; i++)
            {
                InputSignaturePT = TechAmbientShadowDeferred.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePT == null)
            {
                throw new System.Exception("input signature (DeferredGObject, PT, AmbientShadowDeferred) == null");
            }
            LayoutPT = new InputLayout(device, InputSignaturePT, InputLayouts.VerticePT.InputElementsValue);

            FxWorld                     = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorld").AsMatrix());
            FxWorldInvTranspose         = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldInvTranspose").AsMatrix());
            FxWorldViewProj             = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
            FxDiffuseMap                = E.GetVariableByName("gDiffuseMap").AsResource();
            FxNormalMap                 = E.GetVariableByName("gNormalMap").AsResource();
            FxMapsMap                   = E.GetVariableByName("gMapsMap").AsResource();
            FxDetailsMap                = E.GetVariableByName("gDetailsMap").AsResource();
            FxDetailsNormalMap          = E.GetVariableByName("gDetailsNormalMap").AsResource();
            FxReflectionCubemap         = E.GetVariableByName("gReflectionCubemap").AsResource();
            FxEyePosW                   = E.GetVariableByName("gEyePosW").AsVector();
            FxAmbientDown               = E.GetVariableByName("gAmbientDown").AsVector();
            FxAmbientRange              = E.GetVariableByName("gAmbientRange").AsVector();
            FxLightColor                = E.GetVariableByName("gLightColor").AsVector();
            FxDirectionalLightDirection = E.GetVariableByName("gDirectionalLightDirection").AsVector();
            FxMaterial                  = E.GetVariableByName("gMaterial");
        }
예제 #5
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredLight");
            E  = new Effect(device, _b);

            TechPointLight                        = E.GetTechniqueByName("PointLight");
            TechPointLight_NoSpec                 = E.GetTechniqueByName("PointLight_NoSpec");
            TechPointLight_Debug                  = E.GetTechniqueByName("PointLight_Debug");
            TechDirectionalLight                  = E.GetTechniqueByName("DirectionalLight");
            TechDirectionalLight_Shadows          = E.GetTechniqueByName("DirectionalLight_Shadows");
            TechDirectionalLight_Shadows_NoFilter = E.GetTechniqueByName("DirectionalLight_Shadows_NoFilter");
            TechDirectionalLight_Split            = E.GetTechniqueByName("DirectionalLight_Split");

            for (var i = 0; i < TechDirectionalLight.Description.PassCount && InputSignaturePT == null; i++)
            {
                InputSignaturePT = TechDirectionalLight.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePT == null)
            {
                throw new System.Exception("input signature (DeferredLight, PT, DirectionalLight) == null");
            }
            LayoutPT = new InputLayout(device, InputSignaturePT, InputLayouts.VerticePT.InputElementsValue);

            FxWorld                     = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorld").AsMatrix());
            FxWorldInvTranspose         = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldInvTranspose").AsMatrix());
            FxWorldViewProj             = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
            FxWorldViewProjInv          = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProjInv").AsMatrix());
            FxShadowViewProj            = new EffectOnlyMatrixArrayVariable(E.GetVariableByName("gShadowViewProj").AsMatrix());
            FxBaseMap                   = E.GetVariableByName("gBaseMap").AsResource();
            FxNormalMap                 = E.GetVariableByName("gNormalMap").AsResource();
            FxMapsMap                   = E.GetVariableByName("gMapsMap").AsResource();
            FxDepthMap                  = E.GetVariableByName("gDepthMap").AsResource();
            FxShadowMaps                = E.GetVariableByName("gShadowMaps").AsResource();
            FxPointLightRadius          = E.GetVariableByName("gPointLightRadius").AsScalar();
            FxScreenSize                = E.GetVariableByName("gScreenSize").AsVector();
            FxLightColor                = E.GetVariableByName("gLightColor").AsVector();
            FxDirectionalLightDirection = E.GetVariableByName("gDirectionalLightDirection").AsVector();
            FxPointLightPosition        = E.GetVariableByName("gPointLightPosition").AsVector();
            FxShadowDepths              = E.GetVariableByName("gShadowDepths").AsVector();
            FxEyePosW                   = E.GetVariableByName("gEyePosW").AsVector();
        }
예제 #6
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredGObjectSpecial");
            E  = new Effect(device, _b);

            TechSpecialGlDeferred = E.GetTechniqueByName("SpecialGlDeferred");
            TechSpecialGlForward  = E.GetTechniqueByName("SpecialGlForward");
            TechSpecialGlMask     = E.GetTechniqueByName("SpecialGlMask");

            for (var i = 0; i < TechSpecialGlDeferred.Description.PassCount && InputSignaturePNTG == null; i++)
            {
                InputSignaturePNTG = TechSpecialGlDeferred.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignaturePNTG == null)
            {
                throw new System.Exception("input signature (DeferredGObjectSpecial, PNTG, SpecialGlDeferred) == null");
            }
            LayoutPNTG = new InputLayout(device, InputSignaturePNTG, InputLayouts.VerticePNTG.InputElementsValue);

            FxWorld             = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorld").AsMatrix());
            FxWorldInvTranspose = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldInvTranspose").AsMatrix());
            FxWorldViewProj     = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
        }
예제 #7
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredGSky");
            E  = new Effect(device, _b);

            TechSkyDeferred = E.GetTechniqueByName("SkyDeferred");
            TechSkyForward  = E.GetTechniqueByName("SkyForward");

            for (var i = 0; i < TechSkyDeferred.Description.PassCount && InputSignatureP == null; i++)
            {
                InputSignatureP = TechSkyDeferred.GetPassByIndex(i).Description.Signature;
            }
            if (InputSignatureP == null)
            {
                throw new System.Exception("input signature (DeferredGSky, P, SkyDeferred) == null");
            }
            LayoutP = new InputLayout(device, InputSignatureP, InputLayouts.VerticeP.InputElementsValue);

            FxWorld             = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorld").AsMatrix());
            FxWorldInvTranspose = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldInvTranspose").AsMatrix());
            FxWorldViewProj     = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
            FxSkyDown           = E.GetVariableByName("gSkyDown").AsVector();
            FxSkyRange          = E.GetVariableByName("gSkyRange").AsVector();
        }