Ejemplo n.º 1
0
        private void loadShaderVariables(BasicShader shader)
        {
            m_Effect = shader.Effect;


            // Obtain the technique
            m_Technique_HBAO_NLD[0] = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_NLD_LOWQUALITY_Pass");
            m_Technique_HBAO_LD[0]  = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_LD_LOWQUALITY_Pass");
            m_Technique_HBAO_NLD[1] = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_NLD_Pass");
            m_Technique_HBAO_LD[1]  = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_LD_Pass");
            m_Technique_HBAO_NLD[2] = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_NLD_QUALITY_Pass");
            m_Technique_HBAO_LD[2]  = m_Effect.GetTechniqueByName("HORIZON_BASED_AO_LD_QUALITY_Pass");

            // Obtain pointers to the shader variales
            m_DepthTexVar  = m_Effect.GetVariableByName("tLinDepth").AsResource();
            m_NormalTexVar = m_Effect.GetVariableByName("tNormal").AsResource();
            m_RandTexVar   = m_Effect.GetVariableByName("tRandom").AsResource();

            m_pNumSteps      = m_Effect.GetVariableByName("g_NumSteps").AsScalar();
            m_pNumDirs       = m_Effect.GetVariableByName("g_NumDir").AsScalar();
            m_pRadius        = m_Effect.GetVariableByName("g_R").AsScalar();
            m_pInvRadius     = m_Effect.GetVariableByName("g_inv_R").AsScalar();
            m_pSqrRadius     = m_Effect.GetVariableByName("g_sqr_R").AsScalar();
            m_pAngleBias     = m_Effect.GetVariableByName("g_AngleBias").AsScalar();
            m_pTanAngleBias  = m_Effect.GetVariableByName("g_TanAngleBias").AsScalar();
            m_pAttenuation   = m_Effect.GetVariableByName("g_Attenuation").AsScalar();
            m_pContrast      = m_Effect.GetVariableByName("g_Contrast").AsScalar();
            m_pFocalLen      = m_Effect.GetVariableByName("g_FocalLen").AsVector();
            m_pInvFocalLen   = m_Effect.GetVariableByName("g_InvFocalLen").AsVector();
            m_pInvResolution = m_Effect.GetVariableByName("g_InvResolution").AsVector();
            m_pResolution    = m_Effect.GetVariableByName("g_Resolution").AsVector();

            // Set Defaults
            updateShaderState();
        }
Ejemplo n.º 2
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();
        }
Ejemplo n.º 3
0
        public FowardLightingEffect(Device device, string filename)
            : base(device, filename)
        {
            Ambient      = FX.GetTechniqueByName("Ambient");
            DepthPrePass = FX.GetTechniqueByName("DepthPrePass");
            Directional  = FX.GetTechniqueByName("Directional");
            PointLight   = FX.GetTechniqueByName("Point");

            _worldViewProj     = FX.GetVariableByName("WorldViewProjection").AsMatrix();
            _world             = FX.GetVariableByName("World").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();

            _ambientDown  = FX.GetVariableByName("AmbientDown").AsVector();
            _ambientRange = FX.GetVariableByName("AmbientRange").AsVector();

            _dirToLight    = FX.GetVariableByName("DirToLight").AsVector();
            _dirLightColor = FX.GetVariableByName("DirLightColor").AsVector();

            _eyePosition       = FX.GetVariableByName("EyePosition").AsVector();
            _specularExponent  = FX.GetVariableByName("specExp").AsScalar();
            _specularIntensity = FX.GetVariableByName("specIntensity").AsScalar();

            _pointLightPosition = FX.GetVariableByName("PointLightPosition").AsVector();
            _pointLightRangeRcp = FX.GetVariableByName("PointLightRangeRcp").AsScalar();
            _pointLightColor    = FX.GetVariableByName("PointLightColor").AsVector();

            _diffuseMap = FX.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 4
0
        protected override void OnLoadShaders(string shaderFileNeme)
        {
            base.OnLoadShaders("textureOnly.fx");

            _CameraMatrix = Effect.GetVariableByName("ViewProjection").AsMatrix();
            _DiffuseTexture = Effect.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 5
0
        // System.Collections.Generic.SortedDictionary<int,Vector2>

        public void RebuildTextureCache()
        {
            texturecache.Clear();
            passindex.Clear();
            for (int i = 0; i < this.shader.DefaultEffect.Description.GlobalVariableCount; i++)
            {
                EffectVariable var = this.shader.DefaultEffect.GetVariableByIndex(i);

                if (var.GetVariableType().Description.TypeName == "Texture2D")
                {
                    EffectResourceVariable rv = var.AsResource();
                    texturecache.Add(rv);
                }

                if (var.GetVariableType().Description.TypeName == "float" ||
                    var.GetVariableType().Description.TypeName == "int")
                {
                    if (var.Description.Semantic == "PASSINDEX")
                    {
                        passindex.Add(var.AsScalar());
                    }
                    if (var.Description.Semantic == "PASSITERATIONINDEX")
                    {
                        passiterindex.Add(var.AsScalar());
                    }
                }
            }
        }
Ejemplo n.º 6
0
        public static void RenderFullScreenQuad(ShaderResourceView srv)
        {
            Shader e = WorldData.GetObject("FullScreenQuad.fx") as Shader;

            if (e == null)
            {
                return;
            }
            ShaderHelper.UpdateCommonEffectVars(e, Matrix.Identity);
            EffectTechnique t = e.EffectObj.GetTechniqueByName("FullScreen");

            Game.Device.InputAssembler.SetPrimitiveTopology(PrimitiveTopology.TriangleList);

            for (int p = 0; p < t.Description.PassCount; p++)
            {
                EffectPass  pass = t.GetPassByIndex(p);
                InputLayout l    = ShaderHelper.ConstructInputLayout(MeshInputElements10.FullScreenQuad, pass.Description.Signature);
                Game.Device.InputAssembler.SetInputLayout(l);

                EffectResourceVariable diffTex = e.GetVar(ShaderHelper.DiffTex).AsResource();
                if (diffTex != null)
                {
                    diffTex.SetResource(srv);
                }
                pass.Apply();
                Game.Device.Draw(3, 0);
            }
        }
Ejemplo n.º 7
0
        public FowardLightingEffect(Device device, string filename)
            : base(device, filename) {

            Ambient = FX.GetTechniqueByName("Ambient");
            DepthPrePass = FX.GetTechniqueByName("DepthPrePass");
            Directional = FX.GetTechniqueByName("Directional");
            PointLight = FX.GetTechniqueByName("Point");

            _worldViewProj = FX.GetVariableByName("WorldViewProjection").AsMatrix();
            _world = FX.GetVariableByName("World").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();

            _ambientDown = FX.GetVariableByName("AmbientDown").AsVector();
            _ambientRange = FX.GetVariableByName("AmbientRange").AsVector();

            _dirToLight = FX.GetVariableByName("DirToLight").AsVector();
            _dirLightColor = FX.GetVariableByName("DirLightColor").AsVector();

            _eyePosition = FX.GetVariableByName("EyePosition").AsVector();
            _specularExponent = FX.GetVariableByName("specExp").AsScalar();
            _specularIntensity = FX.GetVariableByName("specIntensity").AsScalar();

            _pointLightPosition = FX.GetVariableByName("PointLightPosition").AsVector();
            _pointLightRangeRcp = FX.GetVariableByName("PointLightRangeRcp").AsScalar();
            _pointLightColor = FX.GetVariableByName("PointLightColor").AsVector();

            _diffuseMap = FX.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 8
0
        public static bool SetResource(this EffectResourceVariable variable, IRenderableTexture texture)
        {
            var res = texture?.Resource;

            variable.SetResource(res);
            return(res != null);
        }
        private void LoadEffect(string fileName)
        {
            _effect = Effect.FromFile(_dxDevice, fileName, "fx_4_0",
                                      ShaderFlags.None, EffectFlags.None, null, null);

            _streamOutTech = _effect.GetTechniqueByName("StreamOutTech");
            _drawTech      = _effect.GetTechniqueByName("DrawTech");

            _viewProjVar  = _effect.GetVariableByName("gViewProj").AsMatrix();
            _gameTimeVar  = _effect.GetVariableByName("gGameTime").AsScalar();
            _timeStepVar  = _effect.GetVariableByName("gTimeStep").AsScalar();
            _eyePosVar    = _effect.GetVariableByName("gEyePosW").AsVector();
            _emitPosVar   = _effect.GetVariableByName("gEmitPosW").AsVector();
            _emitDirVar   = _effect.GetVariableByName("gEmitDirW").AsVector();
            _texArrayVar  = _effect.GetVariableByName("gTexArray").AsResource();
            _randomTexVar = _effect.GetVariableByName("gRandomTex").AsResource();

            ShaderSignature signature = _streamOutTech.GetPassByIndex(0).Description.Signature;

            _vertexLayout = new InputLayout(_dxDevice, signature,
                                            new[] {
                new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0),
                new InputElement("VELOCITY", 0, Format.R32G32B32_Float, 12, 0),
                new InputElement("SIZE", 0, Format.R32G32_Float, 24, 0),
                new InputElement("AGE", 0, Format.R32_Float, 32, 0),
                new InputElement("TYPE", 0, Format.R32_UInt, 36, 0)
            });
        }
Ejemplo n.º 10
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();
        }
Ejemplo n.º 11
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{
				m_Effect = m_Effect = new Effect(GameEnvironment.Device, Bytecode); // Effect.FromFile(GameEnvironment.Device, Helper.ResolvePath(m_ShaderLocation), "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
				m_Technique = m_Effect.GetTechniqueByName("RenderParticles");
				m_ParticlePass_Add = m_Technique.GetPassByName("Add");

				m_Layout = new InputLayout(GameEnvironment.Device, m_ParticlePass_Add.Description.Signature, new[] {
					new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
					new InputElement("TEXCOORD", 0, Format.R32G32_Float, 16, 0),				
					new InputElement("INST_POSITION", 0, Format.R32G32B32_Float, 0, 1, InputClassification.PerInstanceData, 1),
					new InputElement("INST_COLOR", 0, Format.R32G32B32A32_Float, 12, 1, InputClassification.PerInstanceData, 1), 					
				});

				m_WorldViewProj = m_Effect.GetVariableByName("worldViewProj").AsMatrix();
				m_ParticleTexture = m_Effect.GetVariableByName("particle_texture").AsResource();
				m_AmpScale = m_Effect.GetVariableByName("ampScale").AsScalar();
				m_PartScaleX = m_Effect.GetVariableByName("partScaleX").AsScalar();
				m_PartScaleY = m_Effect.GetVariableByName("partScaleY").AsScalar(); 
				m_MaxDistance = m_Effect.GetVariableByName("maxDistance").AsScalar();
				m_MinDistance = m_Effect.GetVariableByName("minDistance").AsScalar();
				m_ScaleDistance = m_Effect.GetVariableByName("scaleDistance").AsScalar();

				m_Disposed = false;
			}
		}
        private void LoadEffect(string shaderFileName)
        {
            _effect = Effect.FromFile(_dxDevice, shaderFileName, "fx_4_0",
                                      ShaderFlags.None, EffectFlags.None, null, null);

            _renderTech = _effect.GetTechniqueByName("Render"); //C++ Comparaison// technique = effect->GetTechniqueByName( "Render" );

            _eyePosWVar    = _effect.GetVariableByName("gEyePosW").AsVector();
            _viewProjVar   = _effect.GetVariableByName("gViewProj").AsMatrix();
            _worldVar      = _effect.GetVariableByName("gWorld").AsMatrix();
            _fillColorVar  = _effect.GetVariableByName("gFillColor").AsVector();
            _lightVariable = _effect.GetVariableByName("gLight");

            _imageMapVar = _effect.GetVariableByName("gImageMap").AsResource();
            _depthMapVar = _effect.GetVariableByName("gDepthMap").AsResource();

            _resVar              = _effect.GetVariableByName("gRes").AsVector();
            _depthToRgbVar       = _effect.GetVariableByName("gDepthToRgb").AsMatrix();
            _focalLengthDepthVar = _effect.GetVariableByName("gFocalLengthDepth").AsScalar();
            _focalLengthImageVar = _effect.GetVariableByName("gFocalLengthImage").AsScalar();

            ShaderSignature signature = _renderTech.GetPassByIndex(0).Description.Signature;

            _inputLayout = new InputLayout(_dxDevice, signature,
                                           new[] { new InputElement("POSITION", 0, SlimDX.DXGI.Format.R16G16_SInt, 0, 0) });
        }
Ejemplo n.º 13
0
            public QuadShaderDeviceData(DX11RenderContext context)
            {
                string     basepath = "VVVV.DX11.Nodes.effects.quad.fx";
                DX11Effect effect   = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);

                quadshader      = new DX11ShaderInstance(context, effect);
                texturevariable = quadshader.Effect.GetVariableBySemantic("INPUTTEXTURE").AsResource();
                samplervariable = quadshader.Effect.GetVariableBySemantic("SAMPLERSTATE").AsSampler();

                Quad quad = new Quad();

                quad.Size = new Vector2(1.0f);

                quadgeometry = context.Primitives.QuadNormals(quad);

                quadlayouts = new List <InputLayout>();
                for (int i = 0; i < 4; i++)
                {
                    InputLayout layout;
                    quadshader.SelectTechnique(i);

                    bool res = quadgeometry.ValidateLayout(quadshader.GetPass(0), out layout);
                    quadlayouts.Add(layout);
                }
            }
Ejemplo n.º 14
0
        private void CompileShaders(string texturePath, string shaderPath)
        {
            _shaderEffect     = new Effect(_device, ShaderBytecode.CompileFromFile(shaderPath, "fx_5_0", ShaderFlags.None, EffectFlags.None));
            _shaderEffectPass = _shaderEffect.GetTechniqueByIndex((int)RenderParameters.ShaderMode).GetPassByIndex(0);
            _device.ImmediateContext.InputAssembler.InputLayout = new InputLayout(_device, _shaderEffectPass.Description.Signature, VertexShaderInput.InputLayout);

            // Setup Global Variables
            _world = _shaderEffect.GetVariableByName("World").AsMatrix();
            _worldViewProjection = _shaderEffect.GetVariableByName("WorldViewProj").AsMatrix();
            _tessFactor          = _shaderEffect.GetVariableByName("TessFactor").AsScalar();
            _textureMap          = _shaderEffect.GetVariableByName("Texture").AsResource();
            _enableTexture       = _shaderEffect.GetVariableByName("EnableTexture").AsScalar();
            _enableNormals       = _shaderEffect.GetVariableByName("Normals").AsScalar();
            _textureView         = new ShaderResourceView(_device, Texture2D.FromFile(_device, texturePath));

            // Setup Lighting Variables
            _phongParameters   = _shaderEffect.GetVariableByName("AmbSpecDiffShini").AsVector();
            _lightColor        = _shaderEffect.GetVariableByName("LightColor").AsVector();
            _lightDirection    = _shaderEffect.GetVariableByName("LightDirection").AsVector();
            _light2Color       = _shaderEffect.GetVariableByName("Light2Color").AsVector();
            _light2Direction   = _shaderEffect.GetVariableByName("Light2Direction").AsVector();
            _ambientLightColor = _shaderEffect.GetVariableByName("AmbientLight").AsVector();
            _cameraPosition    = _shaderEffect.GetVariableByName("Eye").AsVector();
            _flatShading       = _shaderEffect.GetVariableByName("FlatShading").AsScalar();

            // Valences and Prefixes for ACC
            _valencePrefixResource = _shaderEffect.GetVariableByName("ValencePrefixBuffer").AsResource();
        }
Ejemplo n.º 15
0
        public ImageShaderInfo(DX11ShaderInstance shader)
        {
            var effect = shader.Effect;

            this.techniqueInfo = new ImageShaderTechniqueInfo[effect.Description.TechniqueCount];

            int maxPassCount = 0;

            for (int i = 0; i < this.techniqueInfo.Length; i++)
            {
                this.techniqueInfo[i] = new ImageShaderTechniqueInfo(effect.GetTechniqueByIndex(i));
                maxPassCount          = this.techniqueInfo[i].PassCount > maxPassCount ? this.techniqueInfo[i].PassCount : maxPassCount;
            }

            //Set list of max pass count
            this.passResultVariableArray = new List <EffectResourceVariable> [maxPassCount];


            for (int i = 0; i < effect.Description.GlobalVariableCount; i++)
            {
                EffectVariable var = effect.GetVariableByIndex(i);

                if (var.GetVariableType().Description.TypeName == "Texture2D")
                {
                    EffectResourceVariable rv = var.AsResource();

                    if (rv.Description.Semantic == "INITIAL")
                    {
                        this.initialTextureVariables.Add(rv);
                    }
                    if (rv.Description.Semantic == "PREVIOUS")
                    {
                        this.previousTextureVariables.Add(rv);
                    }
                    if (rv.Description.Semantic == "DEPTHTEXTURE")
                    {
                        this.depthTextureVariables.Add(rv);
                    }

                    //If semantic starts with passresult
                    if (rv.Description.Semantic.StartsWith("PASSRESULT"))
                    {
                        string sidx = rv.Description.Semantic.Substring(10);
                        int    pridx;
                        if (int.TryParse(sidx, out pridx))
                        {
                            if (pridx < maxPassCount)
                            {
                                if (this.passResultVariableArray[pridx] == null)
                                {
                                    this.passResultVariableArray[pridx] = new List <EffectResourceVariable>();
                                }
                                this.passResultVariableArray[pridx].Add(rv);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 16
0
        public TerrainEffect(Device device, string filename) : base(device, filename)
        {
            Light1Tech    = FX.GetTechniqueByName("Light1");
            Light2Tech    = FX.GetTechniqueByName("Light2");
            Light3Tech    = FX.GetTechniqueByName("Light3");
            Light1FogTech = FX.GetTechniqueByName("Light1Fog");
            Light2FogTech = FX.GetTechniqueByName("Light2Fog");
            Light3FogTech = FX.GetTechniqueByName("Light3Fog");

            Light1ShadowTech    = FX.GetTechniqueByName("Light1Shadow");
            Light2ShadowTech    = FX.GetTechniqueByName("Light2Shadow");
            Light3ShadowTech    = FX.GetTechniqueByName("Light3Shadow");
            Light1FogShadowTech = FX.GetTechniqueByName("Light1FogShadow");
            Light2FogShadowTech = FX.GetTechniqueByName("Light2FogShadow");
            Light3FogShadowTech = FX.GetTechniqueByName("Light3FogShadow");

            Light1TechNT    = FX.GetTechniqueByName("Light1NT");
            Light2TechNT    = FX.GetTechniqueByName("Light2NT");
            Light3TechNT    = FX.GetTechniqueByName("Light3NT");
            Light1FogTechNT = FX.GetTechniqueByName("Light1FogNT");
            Light2FogTechNT = FX.GetTechniqueByName("Light2FogNT");
            Light3FogTechNT = FX.GetTechniqueByName("Light3FogNT");

            NormalDepthTech        = FX.GetTechniqueByName("NormalDepth");
            TessBuildShadowMapTech = FX.GetTechniqueByName("TessBuildShadowMapTech");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _eyePosW  = FX.GetVariableByName("gEyePosW").AsVector();

            _fogColor = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange = FX.GetVariableByName("gFogRange").AsScalar();

            _dirLights = FX.GetVariableByName("gDirLights");
            _mat       = FX.GetVariableByName("gMaterial");

            _minDist            = FX.GetVariableByName("gMinDist").AsScalar();
            _maxDist            = FX.GetVariableByName("gMaxDist").AsScalar();
            _minTess            = FX.GetVariableByName("gMinTess").AsScalar();
            _maxTess            = FX.GetVariableByName("gMaxTess").AsScalar();
            _texelCellSpaceU    = FX.GetVariableByName("gTexelCellSpaceU").AsScalar();
            _texelCellSpaceV    = FX.GetVariableByName("gTexelCellSpaceV").AsScalar();
            _worldCellSpace     = FX.GetVariableByName("gWorldCellSpace").AsScalar();
            _worldFrustumPlanes = FX.GetVariableByName("gWorldFrustumPlanes").AsVector();

            _layerMapArray = FX.GetVariableByName("gLayerMapArray").AsResource();
            _blendMap      = FX.GetVariableByName("gBlendMap").AsResource();
            _heightMap     = FX.GetVariableByName("gHeightMap").AsResource();

            _view            = FX.GetVariableByName("gView").AsMatrix();
            _ambientMap      = FX.GetVariableByName("gSsaoMap").AsResource();
            _viewProjTex     = FX.GetVariableByName("gViewProjTex").AsMatrix();
            _shadowTransform = FX.GetVariableByName("gShadowTransform").AsMatrix();
            _shadowMap       = FX.GetVariableByName("gShadowMap").AsResource();
            _walkMap         = FX.GetVariableByName("gWalkMap").AsResource();
            _unwalkableSRV   = FX.GetVariableByName("gUnwalkable").AsResource();
        }
Ejemplo n.º 17
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DarkMaterial");
            E  = new Effect(device, _b);

            TechStandard      = E.GetTechniqueByName("Standard");
            TechAlpha         = E.GetTechniqueByName("Alpha");
            TechReflective    = E.GetTechniqueByName("Reflective");
            TechNm            = E.GetTechniqueByName("Nm");
            TechNmUvMult      = E.GetTechniqueByName("NmUvMult");
            TechAtNm          = E.GetTechniqueByName("AtNm");
            TechMaps          = E.GetTechniqueByName("Maps");
            TechDiffMaps      = E.GetTechniqueByName("DiffMaps");
            TechGl            = E.GetTechniqueByName("Gl");
            TechAmbientShadow = E.GetTechniqueByName("AmbientShadow");
            TechMirror        = E.GetTechniqueByName("Mirror");
            TechFlatMirror    = E.GetTechniqueByName("FlatMirror");

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

            FxShadowViewProj     = E.GetVariableByName("gShadowViewProj").AsMatrix();
            FxWorld              = E.GetVariableByName("gWorld").AsMatrix();
            FxWorldInvTranspose  = E.GetVariableByName("gWorldInvTranspose").AsMatrix();
            FxWorldViewProj      = E.GetVariableByName("gWorldViewProj").AsMatrix();
            FxShadowMaps         = E.GetVariableByName("gShadowMaps").AsResource();
            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();
            FxFlatMirrored       = E.GetVariableByName("gFlatMirrored").AsScalar();
            FxEyePosW            = E.GetVariableByName("gEyePosW").AsVector();
            FxLightDir           = E.GetVariableByName("gLightDir").AsVector();
            FxMaterial           = E.GetVariableByName("gMaterial");
            FxReflectiveMaterial = E.GetVariableByName("gReflectiveMaterial");
            FxMapsMaterial       = E.GetVariableByName("gMapsMaterial");
            FxAlphaMaterial      = E.GetVariableByName("gAlphaMaterial");
            FxNmUvMultMaterial   = E.GetVariableByName("gNmUvMultMaterial");
        }
Ejemplo n.º 18
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{
				m_Effect = m_Effect = new Effect(GameEnvironment.Device, Bytecode); // Effect.FromFile(GameEnvironment.Device, Helper.ResolvePath(m_ShaderLocation), "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
				m_Technique = m_Effect.GetTechniqueByName("Imposter");

				m_Pass_NoBlend = m_Technique.GetPassByName("NoBlend");
				m_Pass_OverlayAdd = m_Technique.GetPassByName("OverlayAdd");
				m_Pass_OverlaySubtract = m_Technique.GetPassByName("OverlaySubtract");
				m_Pass_OverlayInvert = m_Technique.GetPassByName("OverlayInvert");
				m_Pass_OverlayAlpha = m_Technique.GetPassByName("OverlayAlpha");

				m_Technique_BrightPass = m_Effect.GetTechniqueByName("Imposter_BrightPass");

				m_Pass_NoBlend_BrightPass = m_Technique_BrightPass.GetPassByName("NoBlend");
				m_Pass_OverlayAdd_BrightPass = m_Technique_BrightPass.GetPassByName("OverlayAdd");
				m_Pass_OverlaySubtract_BrightPass = m_Technique_BrightPass.GetPassByName("OverlaySubtract");
				m_Pass_OverlayAlpha_BrightPass = m_Technique_BrightPass.GetPassByName("OverlayAlpha");

				m_ImposterTextureResource = m_Effect.GetVariableByName("imposter").AsResource();

				m_BrightPassThreshold = m_Effect.GetVariableByName("brightPassThreshold").AsScalar();

				m_Layout = new InputLayout(GameEnvironment.Device, m_Pass_NoBlend.Description.Signature, new[] {
					new InputElement("POSITION", 0, Format.R32G32_Float, 0, 0),
					new InputElement("TEXCOORD", 0, Format.R32G32_Float, 8, 0)		
				});

				float minX = -1f, miny = -1f, maxX = 1f, maxY = 1f;

				using (DataStream stream = new DataStream(4 * Marshal.SizeOf(typeof(Vertex2D)), true, true))
				{
					stream.WriteRange(new Vertex2D[] {					
						new Vertex2D() { Position = new Vector2(maxX, miny), TextureCoords =  new Vector2(1.0f, 1.0f) }, 
						new Vertex2D() { Position = new Vector2(minX, miny), TextureCoords =  new Vector2(0.0f, 1.0f) }, 
						new Vertex2D() { Position = new Vector2(maxX, maxY), TextureCoords = new Vector2(1.0f, 0.0f) },  
						new Vertex2D() { Position = new Vector2(minX, maxY), TextureCoords =  new Vector2(0.0f, 0.0f) } 
					});
					stream.Position = 0;

					m_Vertices = new SlimDX.Direct3D11.Buffer(GameEnvironment.Device, stream, new BufferDescription()
					{
						BindFlags = BindFlags.VertexBuffer,
						CpuAccessFlags = CpuAccessFlags.None,
						OptionFlags = ResourceOptionFlags.None,
						SizeInBytes = 4 * Marshal.SizeOf(typeof(Vertex2D)),
						Usage = ResourceUsage.Default
					});
				}

				m_VerticesBindings = new VertexBufferBinding(m_Vertices, Marshal.SizeOf(typeof(Vertex2D)), 0);

				m_Disposed = false;
			}
		}
Ejemplo n.º 19
0
 public WavesEffect(Device device, string filename) : base(device, filename) {
     _waveDispTexTransform0 = FX.GetVariableByName("gWaveDispTexTransform0").AsMatrix();
     _waveDispTexTransform1 = FX.GetVariableByName("gWaveDispTexTransform1").AsMatrix();
     _waveNormalTexTransform0 = FX.GetVariableByName("gWaveNormalTexTransform0").AsMatrix();
     _waveNormalTexTransform1 = FX.GetVariableByName("gWaveNormalTexTransform1").AsMatrix();
     _heightScale0 = FX.GetVariableByName("gHeightScale0").AsScalar();
     _heightScale1 = FX.GetVariableByName("gHeightScale1").AsScalar();
     _normalMap0 = FX.GetVariableByName("gNormalMap0").AsResource();
     _normalMap1 = FX.GetVariableByName("gNormalMap1").AsResource();
 }
Ejemplo n.º 20
0
        public SsaoNormalDepthEffect(Device device, string filename) : base(device, filename) {
            NormalDepthTech = FX.GetTechniqueByName("NormalDepth");
            NormalDepthAlphaClipTech = FX.GetTechniqueByName("NormalDepthAlphaClip");

            _worldView = FX.GetVariableByName("gWorldView").AsMatrix();
            _worldInvTransposeView = FX.GetVariableByName("gWorldInvTransposeView").AsMatrix();
            _worldViewProj = FX.GetVariableByName("gWorldViewProj").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();
        }
Ejemplo n.º 21
0
        public DebugTexEffect(Device device, string filename) : base(device, filename) {
            ViewArgbTech = FX.GetTechniqueByName("ViewArgbTech");
            ViewRedTech = FX.GetTechniqueByName("ViewRedTech");
            ViewGreenTech = FX.GetTechniqueByName("ViewGreenTech");
            ViewBlueTech = FX.GetTechniqueByName("ViewBlueTech");
            ViewAlphaTech = FX.GetTechniqueByName("ViewAlphaTech");

            _texture = FX.GetVariableByName("gTexture").AsResource();
            _wvp = FX.GetVariableByName("gWorldViewProj").AsMatrix();
        }
Ejemplo n.º 22
0
        public SsaoBlurEffect(Device device, string filename) : base(device, filename) {
            HorzBlurTech = FX.GetTechniqueByName("HorzBlur");
            VertBlurTech = FX.GetTechniqueByName("VertBlur");

            _texelWidth = FX.GetVariableByName("gTexelWidth").AsScalar();
            _texelHeight = FX.GetVariableByName("gTexelHeight").AsScalar();

            _normalDepthMap = FX.GetVariableByName("gNormalDepthMap").AsResource();
            _inputImage = FX.GetVariableByName("gInputImage").AsResource();
        }
        public SsaoBlurEffect(Device device, string filename) : base(device, filename)
        {
            HorzBlurTech = FX.GetTechniqueByName("HorzBlur");
            VertBlurTech = FX.GetTechniqueByName("VertBlur");

            _texelWidth  = FX.GetVariableByName("gTexelWidth").AsScalar();
            _texelHeight = FX.GetVariableByName("gTexelHeight").AsScalar();

            _normalDepthMap = FX.GetVariableByName("gNormalDepthMap").AsResource();
            _inputImage     = FX.GetVariableByName("gInputImage").AsResource();
        }
        public SsaoNormalDepthEffect(Device device, string filename) : base(device, filename)
        {
            NormalDepthTech          = FX.GetTechniqueByName("NormalDepth");
            NormalDepthAlphaClipTech = FX.GetTechniqueByName("NormalDepthAlphaClip");

            _worldView             = FX.GetVariableByName("gWorldView").AsMatrix();
            _worldInvTransposeView = FX.GetVariableByName("gWorldInvTransposeView").AsMatrix();
            _worldViewProj         = FX.GetVariableByName("gWorldViewProj").AsMatrix();
            _texTransform          = FX.GetVariableByName("gTexTransform").AsMatrix();
            _diffuseMap            = FX.GetVariableByName("gDiffuseMap").AsResource();
        }
Ejemplo n.º 25
0
 public WavesEffect(Device device, string filename) : base(device, filename)
 {
     _waveDispTexTransform0   = FX.GetVariableByName("gWaveDispTexTransform0").AsMatrix();
     _waveDispTexTransform1   = FX.GetVariableByName("gWaveDispTexTransform1").AsMatrix();
     _waveNormalTexTransform0 = FX.GetVariableByName("gWaveNormalTexTransform0").AsMatrix();
     _waveNormalTexTransform1 = FX.GetVariableByName("gWaveNormalTexTransform1").AsMatrix();
     _heightScale0            = FX.GetVariableByName("gHeightScale0").AsScalar();
     _heightScale1            = FX.GetVariableByName("gHeightScale1").AsScalar();
     _normalMap0 = FX.GetVariableByName("gNormalMap0").AsResource();
     _normalMap1 = FX.GetVariableByName("gNormalMap1").AsResource();
 }
Ejemplo n.º 26
0
        public DebugTexEffect(Device device, string filename) : base(device, filename)
        {
            ViewArgbTech  = FX.GetTechniqueByName("ViewArgbTech");
            ViewRedTech   = FX.GetTechniqueByName("ViewRedTech");
            ViewGreenTech = FX.GetTechniqueByName("ViewGreenTech");
            ViewBlueTech  = FX.GetTechniqueByName("ViewBlueTech");
            ViewAlphaTech = FX.GetTechniqueByName("ViewAlphaTech");

            _texture = FX.GetVariableByName("gTexture").AsResource();
            _wvp     = FX.GetVariableByName("gWorldViewProj").AsMatrix();
        }
Ejemplo n.º 27
0
        public InstancedNormalMapEffect(Device device, string filename) : base(device, filename) {
            Light1Tech = FX.GetTechniqueByName("Light1");
            Light3TexTech = FX.GetTechniqueByName("Light3Tex");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();

            _dirLights = FX.GetVariableByName("gDirLights");
            _mat = FX.GetVariableByName("gMaterial");
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();
            _normalMap = FX.GetVariableByName("gNormalMap").AsResource();
        }
Ejemplo n.º 28
0
        private static void LoadShaders()
        {
            ShaderBytecode bytecode = null;

            bytecode = ShaderBytecode.CompileFromFile("Shaders.fx", null, "fx_5_0", ShaderFlags.None, EffectFlags.None, null, null);
            fx       = new Effect(device, bytecode);
            bytecode.Dispose();
            techniqueTextured = fx.GetTechniqueByName("Textured");
            techniqueSelected = fx.GetTechniqueByName("Selected");
            techniqueColor    = fx.GetTechniqueByName("Color");
            WVP   = fx.GetVariableByName("WVP").AsMatrix();
            fxTex = fx.GetVariableByName("tex").AsResource();
        }
Ejemplo n.º 29
0
        public ForwardLightingEffect(Device device, string filename)
            : base(device, filename)
        {
            Ambient = FX.GetTechniqueByName("Ambient");

            _worldViewProj     = FX.GetVariableByName("WorldViewProjection").AsMatrix();
            _world             = FX.GetVariableByName("World").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();

            _ambientDown  = FX.GetVariableByName("AmbientDown").AsVector();
            _ambientRange = FX.GetVariableByName("AmbientRange").AsVector();

            _diffuseMap = FX.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 30
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{
				m_Effect = new Effect(GameEnvironment.Device, Bytecode); // Helper.ResolvePath(m_ShaderLocation), "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
				m_Technique = m_Effect.GetTechniqueByName("BlurBilinear");

				m_Pass_Gaussian = m_Technique.GetPassByName("Gaussian");

				m_SourceTex = m_Effect.GetVariableByName("g_SourceTex").AsResource();
				m_GWeights = m_Effect.GetVariableByName("g_GWeights").AsScalar();

				//m_ElementCount = 1 + GAUSSIAN_MAX_SAMPLES;
				m_DataStride = Marshal.SizeOf(typeof(Vector2)) * (1 + GAUSSIAN_MAX_SAMPLES);

				InputElement[] IADesc = new InputElement[1 + (GAUSSIAN_MAX_SAMPLES / 2)];

				IADesc[0] = new InputElement()
				{
					SemanticName = "POSITION",
					SemanticIndex = 0,
					AlignedByteOffset = 0,
					Slot = 0,
					Classification = InputClassification.PerVertexData,
					Format = Format.R32G32_Float
				};


				for (int i = 1; i < 1 + (GAUSSIAN_MAX_SAMPLES / 2); i++)
				{
					IADesc[i] = new InputElement()
					{
						SemanticName = "TEXCOORD",
						SemanticIndex = i - 1,
						AlignedByteOffset = 8 + (i - 1) * 16,
						Slot = 0,
						Classification = InputClassification.PerVertexData,
						Format = Format.R32G32B32A32_Float
					};
				}

				// Real number of "sematinc based" elements
				//m_ElementCount = 1 + GAUSSIAN_MAX_SAMPLES / 2;

				EffectPassDescription PassDesc = m_Pass_Gaussian.Description;
				m_Layout = new InputLayout(GameEnvironment.Device, PassDesc.Signature, IADesc);

				m_Disposed = false;
			}
		}
        public InstancedNormalMapEffect(Device device, string filename) : base(device, filename)
        {
            Light1Tech    = FX.GetTechniqueByName("Light1");
            Light3TexTech = FX.GetTechniqueByName("Light3Tex");

            _viewProj     = FX.GetVariableByName("gViewProj").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _eyePosW      = FX.GetVariableByName("gEyePosW").AsVector();

            _dirLights  = FX.GetVariableByName("gDirLights");
            _mat        = FX.GetVariableByName("gMaterial");
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();
            _normalMap  = FX.GetVariableByName("gNormalMap").AsResource();
        }
Ejemplo n.º 32
0
        public ForwardLightingEffect(Device device, string filename)
            : base(device, filename) {

            Ambient = FX.GetTechniqueByName("Ambient");

            _worldViewProj = FX.GetVariableByName("WorldViewProjection").AsMatrix();
            _world = FX.GetVariableByName("World").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();

            _ambientDown = FX.GetVariableByName("AmbientDown").AsVector();
            _ambientRange = FX.GetVariableByName("AmbientRange").AsVector();

            _diffuseMap = FX.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 33
0
        public SsaoEffect(Device device, string filename) : base(device, filename) {
            SsaoTech = FX.GetTechniqueByName("Ssao");

            _viewToTexSpace = FX.GetVariableByName("gViewToTexSpace").AsMatrix();
            _offsetVectors = FX.GetVariableByName("gOffsetVectors").AsVector();
            _frustumCorners = FX.GetVariableByName("gFrustumCorners").AsVector();
            _occlusionRadius = FX.GetVariableByName("gOcclusionRadius").AsScalar();
            _occlusionFadeStart = FX.GetVariableByName("gOcclusionFadeStart").AsScalar();
            _occlusionFadeEnd = FX.GetVariableByName("gOcclusionFadeEnd").AsScalar();
            _surfaceEpsilon = FX.GetVariableByName("gSurfaceEpsilon").AsScalar();

            _normalDepthMap = FX.GetVariableByName("gNormalDepthMap").AsResource();
            _randomVecMap = FX.GetVariableByName("gRandomVecMap").AsResource();
        }
Ejemplo n.º 34
0
        public TreeSpriteEffect(Device device, string filename) : base(device, filename) {
            Light3Tech = FX.GetTechniqueByName("Light3");
            Light3TexAlphaClipTech = FX.GetTechniqueByName("Light3TexAlphaClip");
            Light3TexAlphaClipFogTech = FX.GetTechniqueByName("Light3TexAlphaClipFog");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();
            _fogColor = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange = FX.GetVariableByName("gFogRange").AsScalar();
            _dirLights = FX.GetVariableByName("gDirLights");
            _mat = FX.GetVariableByName("gMaterial");
            _treeTextureMapArray = FX.GetVariableByName("gTreeMapArray").AsResource();
        }
Ejemplo n.º 35
0
        // System.Collections.Generic.SortedDictionary<int,Vector2>

        public void RebuildTextureCache()
        {
            texturecache.Clear();
            for (int i = 0; i < this.shader.DefaultEffect.Description.GlobalVariableCount; i++)
            {
                EffectVariable var = this.shader.DefaultEffect.GetVariableByIndex(i);

                if (var.GetVariableType().Description.TypeName == "Texture2D")
                {
                    EffectResourceVariable rv = var.AsResource();
                    texturecache.Add(rv);
                }
            }
        }
Ejemplo n.º 36
0
        public static void RenderMesh2(Model m, Vector3 position, string effectName, string technique, Matrix mWorld, int stride)
        {
            if (m == null || m.MeshObj == null)
            {
                return;
            }
            Shader e     = WorldData.GetObject(effectName) as Shader;
            Matrix world = Matrix.Identity + Matrix.Translation(position);

            if (mWorld != null)
            {
                world = mWorld;
            }
            ShaderHelper.UpdateCommonEffectVars(e, world);

            EffectTechnique t = e.EffectObj.GetTechniqueByName(technique);

            D3D10.Buffer indexBuffer   = m.MeshObj.GetDeviceIndexBuffer();
            D3D10.Buffer vertextBuffer = m.MeshObj.GetDeviceVertexBuffer(0);

            Game.Device.InputAssembler.SetPrimitiveTopology(PrimitiveTopology.TriangleList);
            Game.Device.InputAssembler.SetIndexBuffer(indexBuffer, Format.R16_UInt, 0);
            Game.Device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertextBuffer, stride, 0));

            for (int p = 0; p < t.Description.PassCount; p++)
            {
                EffectPass  pass = t.GetPassByIndex(p);
                InputLayout l    = ShaderHelper.ConstructInputLayout(m.Mesh3d.inputElements, pass.Description.Signature);
                Game.Device.InputAssembler.SetInputLayout(l);

                for (int subset = 0; subset < m.Mesh3d.NumAttributes; subset++)
                {
                    EffectResourceVariable diffTex = e.GetVar(ShaderHelper.DiffTex).AsResource();
                    if (diffTex != null)
                    {
                        diffTex.SetResource(m.Mesh3d.textureViews[subset]);
                    }
                    pass.Apply();
                    MeshAttributeRange r = m.Mesh3d.attrTable[subset];
                    // * 2 cause adj data is twice as much data
                    //Game.Device.DrawIndexed((r.FaceCount * 3) * 2, (r.FaceStart * 3) * 2, 0);

                    Game.Device.DrawIndexed((r.FaceCount * 3), (r.FaceStart * 3), 0);
                }
            }

            indexBuffer.Dispose();
            vertextBuffer.Dispose();
        }
Ejemplo n.º 37
0
        public ParticleEffect(Device device, string filename) : base(device, filename) {
            StreamOutTech = FX.GetTechniqueByName("StreamOutTech");
            DrawTech = FX.GetTechniqueByName("DrawTech");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _gameTime = FX.GetVariableByName("gGameTime").AsScalar();
            _timeStep = FX.GetVariableByName("gTimeStep").AsScalar();

            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();
            _emitPosW = FX.GetVariableByName("gEmitPosW").AsVector();
            _emitDirW = FX.GetVariableByName("gEmitDirW").AsVector();

            _texArray = FX.GetVariableByName("gTexArray").AsResource();
            _randomTex = FX.GetVariableByName("gRandomTex").AsResource();
        }
Ejemplo n.º 38
0
        public TreeSpriteEffect(Device device, string filename) : base(device, filename)
        {
            Light3Tech                = FX.GetTechniqueByName("Light3");
            Light3TexAlphaClipTech    = FX.GetTechniqueByName("Light3TexAlphaClip");
            Light3TexAlphaClipFogTech = FX.GetTechniqueByName("Light3TexAlphaClipFog");

            _viewProj            = FX.GetVariableByName("gViewProj").AsMatrix();
            _eyePosW             = FX.GetVariableByName("gEyePosW").AsVector();
            _fogColor            = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart            = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange            = FX.GetVariableByName("gFogRange").AsScalar();
            _dirLights           = FX.GetVariableByName("gDirLights");
            _mat                 = FX.GetVariableByName("gMaterial");
            _treeTextureMapArray = FX.GetVariableByName("gTreeMapArray").AsResource();
        }
Ejemplo n.º 39
0
        public SsaoEffect(Device device, string filename) : base(device, filename)
        {
            SsaoTech = FX.GetTechniqueByName("Ssao");

            _viewToTexSpace     = FX.GetVariableByName("gViewToTexSpace").AsMatrix();
            _offsetVectors      = FX.GetVariableByName("gOffsetVectors").AsVector();
            _frustumCorners     = FX.GetVariableByName("gFrustumCorners").AsVector();
            _occlusionRadius    = FX.GetVariableByName("gOcclusionRadius").AsScalar();
            _occlusionFadeStart = FX.GetVariableByName("gOcclusionFadeStart").AsScalar();
            _occlusionFadeEnd   = FX.GetVariableByName("gOcclusionFadeEnd").AsScalar();
            _surfaceEpsilon     = FX.GetVariableByName("gSurfaceEpsilon").AsScalar();

            _normalDepthMap = FX.GetVariableByName("gNormalDepthMap").AsResource();
            _randomVecMap   = FX.GetVariableByName("gRandomVecMap").AsResource();
        }
Ejemplo n.º 40
0
            public ShaderDeviceData(DX11RenderContext context)
            {
                string basepath = "VVVV.DX11.Nodes.effects.DrawFullScreen.fx";

                using (DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath))
                {
                    shaderInstance = new DX11ShaderInstance(context, effect);

                    inputTextureVariable = shaderInstance.Effect.GetVariableBySemantic("INPUTTEXTURE").AsResource();
                    colorVariable        = shaderInstance.Effect.GetVariableBySemantic("COLOR").AsVector();
                    samplerVariable      = shaderInstance.Effect.GetVariableBySemantic("TEXTURESAMPLER").AsSampler();
                    texTransformVariable = shaderInstance.Effect.GetVariableBySemantic("TEXTUREMATRIX").AsMatrix();
                    pass = shaderInstance.CurrentTechnique.GetPassByIndex(0);
                }
            }
Ejemplo n.º 41
0
        public ParticleEffect(Device device, string filename) : base(device, filename)
        {
            StreamOutTech = FX.GetTechniqueByName("StreamOutTech");
            DrawTech      = FX.GetTechniqueByName("DrawTech");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _gameTime = FX.GetVariableByName("gGameTime").AsScalar();
            _timeStep = FX.GetVariableByName("gTimeStep").AsScalar();

            _eyePosW  = FX.GetVariableByName("gEyePosW").AsVector();
            _emitPosW = FX.GetVariableByName("gEmitPosW").AsVector();
            _emitDirW = FX.GetVariableByName("gEmitDirW").AsVector();

            _texArray  = FX.GetVariableByName("gTexArray").AsResource();
            _randomTex = FX.GetVariableByName("gRandomTex").AsResource();
        }
Ejemplo n.º 42
0
        /// <summary>
        /// Create our BasicEffect
        /// </summary>
        /// <param name="Device">The device which will be used to perform all the rendering</param>
        public BasicEffect(Device Device)
        {
            this.Device      = Device;
            ImmediateContext = Device.ImmediateContext;

            //
            // Compile shader
            //
            string compileErrors;
            var    compiledShader = SlimDX.D3DCompiler.ShaderBytecode.CompileFromFile
                                    (
                "../../Effects/BasicEffect/BasicEffect.fx",
                null,
                "fx_5_0",
                SlimDX.D3DCompiler.ShaderFlags.Debug | SlimDX.D3DCompiler.ShaderFlags.SkipOptimization,
                SlimDX.D3DCompiler.EffectFlags.None,
                null,
                null,
                out compileErrors
                                    );

            if (compileErrors != null && compileErrors != "")
            {
                throw new EffectBuildException(compileErrors);
            }

            Effect          = new Effect(Device, compiledShader);
            EffectTechnique = Effect.GetTechniqueByName("BasicTechnique");

            //
            // Setup input description
            //
            var vertexDesc = new[]
            {
                new InputElement("POSITION", 0, SlimDX.DXGI.Format.R32G32B32_Float, 0, 0, InputClassification.PerVertexData, 0),
                new InputElement("TEXCOORD", 0, SlimDX.DXGI.Format.R32G32_Float, 12, 0, InputClassification.PerVertexData, 0)
            };

            WorldViewProj      = SlimDX.Matrix.Identity;
            CPO_WorldViewProj  = Effect.GetVariableByName("gWorldViewProj").AsMatrix();
            CPO_SelectionColor = Effect.GetVariableByName("gSelectionColor").AsVector();
            SRV_BasicTexture   = Effect.GetVariableByName("gBasicTexture").AsResource();

            InputLayout = new InputLayout(Device, EffectTechnique.GetPassByIndex(0).Description.Signature, vertexDesc);

            Util.ReleaseCom(ref compiledShader);
        }
Ejemplo n.º 43
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");
        }
Ejemplo n.º 44
0
        public void Load()
        {
            try
            {
                using (ShaderBytecode effectByteCode = ShaderBytecode.CompileFromFile(
                           "Shaders/MorphingUnit.fx",
                           "Render",
                           "fx_5_0",
                           ShaderFlags.EnableStrictness,
                           EffectFlags.None))
                {
                    effect         = new Effect(DeviceManager.Instance.device, effectByteCode);
                    technique      = effect.GetTechniqueByIndex(0);
                    pass           = technique.GetPassByIndex(0);
                    inputSignature = pass.Description.Signature;
                }

                layout = new InputLayout(DeviceManager.Instance.device, inputSignature, elements);

                //WorldViewProjection = effect.GetVariableByName("matWorldViewProj").AsMatrix();
                World      = effect.GetVariableByName("World").AsMatrix();
                View       = effect.GetVariableByName("View").AsMatrix();
                Projection = effect.GetVariableByName("Projection").AsMatrix();

                //LightDir = effect.GetVariableByName("vecLightDir").AsVector();
                CameraPosition = effect.GetVariableByName("CameraPosition").AsVector();
                LightDirection = effect.GetVariableByName("LightDirection").AsVector();

                DiffuseColor  = effect.GetVariableByName("DiffuseColor").AsVector();
                AmbientColor  = effect.GetVariableByName("AmbientColor").AsVector();
                SpecularColor = effect.GetVariableByName("SpecularColor").AsVector();
                LightColor    = effect.GetVariableByName("LightColor").AsVector();

                SpecularPower = effect.GetVariableByName("SpecularPower").AsScalar();

                UseTexture      = effect.GetVariableByName("UseTexture").AsScalar();
                TextureVariable = effect.GetVariableByName("Texture").AsResource();

                RealmBlend = effect.GetVariableByName("RealmBlend").AsScalar();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Ejemplo n.º 45
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{
				m_Effect = m_Effect = new Effect(GameEnvironment.Device, Bytecode); // Effect.FromFile(GameEnvironment.Device, Helper.ResolvePath(m_ShaderLocation), "fx_4_0", ShaderFlags.Debug | ShaderFlags.EnableStrictness, EffectFlags.None, null, null);
				m_Technique = m_Effect.GetTechniqueByName("Render");
				m_Pass0 = m_Technique.GetPassByName("P0");

				/*m_Layout = new InputLayout(GameEnvironment.Device, m_Pass0.Description.Signature, new[] {
					new InputElement( "POSITION", 0, Format.R32G32B32_Float, 0, 0, InputClassification.PerVertexData, 0),
					new InputElement( "NORMAL", 0, Format.R32G32B32_Float, 0, 12, InputClassification.PerVertexData, 0),
					new InputElement( "TEXCOORD", 0, Format.R32G32_Float, 0, 24, InputClassification.PerVertexData, 0),
				});*/

				m_Layout = new InputLayout(GameEnvironment.Device, m_Pass0.Description.Signature, new[] {
					new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0),
					new InputElement("NORMAL", 0, Format.R32G32B32_Float, 12, 0),
					new InputElement("TEXCOORD", 0, Format.R32G32_Float, 24, 0)
				});

				//texColorMap
				//texNormalMap
				//texDiffuseMap
				//texSpecularMap

				//m_DiffuseVariable = m_Effect.GetVariableByName("g_txDiffuse").AsResource();
				m_DiffuseVariable = m_Effect.GetVariableByName("texColorMap").AsResource();
				m_NormalMapVariable = m_Effect.GetVariableByName("texNormalMap").AsResource();
				m_WorldVariable = m_Effect.GetVariableByName("World").AsMatrix();
				m_ViewVariable = m_Effect.GetVariableByName("View").AsMatrix();
				m_InvViewVariable = m_Effect.GetVariableByName("InvView").AsMatrix();
				m_ProjectionVariable = m_Effect.GetVariableByName("Projection").AsMatrix();
				//m_SpecularMapVariable = m_Effect.GetVariableByName("g_txEnvMap").AsResource();
				m_SpecularMapVariable = m_Effect.GetVariableByName("texSpecularMap").AsResource();
				m_DiffuseMapVariable = m_Effect.GetVariableByName("texDiffuseMap").AsResource();
				m_EyeVariable = m_Effect.GetVariableByName("Eye").AsVector();

				m_Disposed = false;
			}
		}
Ejemplo n.º 46
0
        public BuildShadowMapEffect(Device device, string filename) : base(device, filename) {
            BuildShadowMapTech = FX.GetTechniqueByName("BuildShadowMapTech");
            BuildShadowMapAlphaClipTech = FX.GetTechniqueByName("BuildShadowMapAlphaClipTech");
            TessBuildShadowMapTech = FX.GetTechniqueByName("TessBuildShadowMapTech"); 
            TessBuildShadowMapAlphaClipTech = FX.GetTechniqueByName("TessBuildShadowMapAlphaClipTech");

            _heightScale = FX.GetVariableByName("gHeightScale").AsScalar();
            _maxTessDistance = FX.GetVariableByName("gMaxTessDistance").AsScalar();
            _minTessDistance = FX.GetVariableByName("gMinTessDistance").AsScalar();
            _minTessFactor = FX.GetVariableByName("gMinTessFactor").AsScalar();
            _maxTessFactor = FX.GetVariableByName("gMaxTessFactor").AsScalar();
            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();

            _normalMap = FX.GetVariableByName("gNormalMap").AsResource();
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();

            _worldViewProj = FX.GetVariableByName("gWorldViewProj").AsMatrix();
            _world = FX.GetVariableByName("gWorld").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();
        }
Ejemplo n.º 47
0
        public TerrainEffect(Device device, string filename)
            : base(device, filename)
        {
            Light1Tech = FX.GetTechniqueByName("Light1");
            Light2Tech = FX.GetTechniqueByName("Light2");
            Light3Tech = FX.GetTechniqueByName("Light3");
            Light1FogTech = FX.GetTechniqueByName("Light1Fog");
            Light2FogTech = FX.GetTechniqueByName("Light2Fog");
            Light3FogTech = FX.GetTechniqueByName("Light3Fog");

            Light1ShadowTech = FX.GetTechniqueByName("Light1Shadow");
            Light2ShadowTech = FX.GetTechniqueByName("Light2Shadow");
            Light3ShadowTech = FX.GetTechniqueByName("Light3Shadow");
            Light1FogShadowTech = FX.GetTechniqueByName("Light1FogShadow");
            Light2FogShadowTech = FX.GetTechniqueByName("Light2FogShadow");
            Light3FogShadowTech = FX.GetTechniqueByName("Light3FogShadow");

            Light1TechNT = FX.GetTechniqueByName("Light1NT");
            Light2TechNT = FX.GetTechniqueByName("Light2NT");
            Light3TechNT = FX.GetTechniqueByName("Light3NT");
            Light1FogTechNT = FX.GetTechniqueByName("Light1FogNT");
            Light2FogTechNT = FX.GetTechniqueByName("Light2FogNT");
            Light3FogTechNT = FX.GetTechniqueByName("Light3FogNT");

            NormalDepthTech = FX.GetTechniqueByName("NormalDepth");
            TessBuildShadowMapTech = FX.GetTechniqueByName("TessBuildShadowMapTech");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();

            _fogColor = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange = FX.GetVariableByName("gFogRange").AsScalar();

            _dirLights = FX.GetVariableByName("gDirLights");
            _mat = FX.GetVariableByName("gMaterial");

            _minDist = FX.GetVariableByName("gMinDist").AsScalar();
            _maxDist = FX.GetVariableByName("gMaxDist").AsScalar();
            _minTess = FX.GetVariableByName("gMinTess").AsScalar();
            _maxTess = FX.GetVariableByName("gMaxTess").AsScalar();
            _texelCellSpaceU = FX.GetVariableByName("gTexelCellSpaceU").AsScalar();
            _texelCellSpaceV = FX.GetVariableByName("gTexelCellSpaceV").AsScalar();
            _worldCellSpace = FX.GetVariableByName("gWorldCellSpace").AsScalar();
            _worldFrustumPlanes = FX.GetVariableByName("gWorldFrustumPlanes").AsVector();

            _layerMapArray = FX.GetVariableByName("gLayerMapArray").AsResource();
            _blendMap = FX.GetVariableByName("gBlendMap").AsResource();
            _heightMap = FX.GetVariableByName("gHeightMap").AsResource();

            _view = FX.GetVariableByName("gView").AsMatrix();
            _ambientMap = FX.GetVariableByName("gSsaoMap").AsResource();
            _viewProjTex = FX.GetVariableByName("gViewProjTex").AsMatrix();
            _shadowTransform = FX.GetVariableByName("gShadowTransform").AsMatrix();
            _shadowMap = FX.GetVariableByName("gShadowMap").AsResource();
            _walkMap = FX.GetVariableByName("gWalkMap").AsResource();
            _unwalkableSRV = FX.GetVariableByName("gUnwalkable").AsResource();
        }
Ejemplo n.º 48
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{
				m_TextFont.LoadResources();

				//SlimDX.D3DCompiler.ShaderBytecode blob = SlimDX.D3DCompiler.ShaderBytecode.CompileFromFile(Helper.ResolvePath(m_ShaderLocation), "fx_4_0", SlimDX.D3DCompiler.ShaderFlags.EnableStrictness, SlimDX.D3DCompiler.EffectFlags.None);

				m_Effect = new Effect(GameEnvironment.Device, Bytecode);

				m_Technique = m_Effect.GetTechniqueByName("LinesAndBoxes");
				m_Pass_BoxesAndText = m_Technique.GetPassByName("BoxesAndText");
				m_Pass_Lines = m_Technique.GetPassByName("Lines");
				
				m_Layout = new InputLayout(GameEnvironment.Device, m_Pass_Lines.Description.Signature, new[] {
					new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0),
					new InputElement("TEXCOORD", 0, Format.R32G32_Float, 12, 0),
					new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 20, 0),				
				});

				m_UiElementsTexture = m_Effect.GetVariableByName("UiElementsTexture").AsResource();
				m_UiElementsTexture.SetResource(m_TextFont.TexureView); 

				m_Disposed = false;
			}
		}
Ejemplo n.º 49
0
        public InstancedBasicEffect(Device device, string filename) : base(device, filename) {
            Light1Tech = FX.GetTechniqueByName("Light1");
            Light2Tech = FX.GetTechniqueByName("Light2");
            Light3Tech = FX.GetTechniqueByName("Light3");

            Light0TexTech = FX.GetTechniqueByName("Light0Tex");
            Light1TexTech = FX.GetTechniqueByName("Light1Tex");
            Light2TexTech = FX.GetTechniqueByName("Light2Tex");
            Light3TexTech = FX.GetTechniqueByName("Light3Tex");

            Light0TexAlphaClipTech = FX.GetTechniqueByName("Light0TexAlphaClip");
            Light1TexAlphaClipTech = FX.GetTechniqueByName("Light1TexAlphaClip");
            Light2TexAlphaClipTech = FX.GetTechniqueByName("Light2TexAlphaClip");
            Light3TexAlphaClipTech = FX.GetTechniqueByName("Light3TexAlphaClip");

            Light1FogTech = FX.GetTechniqueByName("Light1Fog");
            Light2FogTech = FX.GetTechniqueByName("Light2Fog");
            Light3FogTech = FX.GetTechniqueByName("Light3Fog");

            Light0TexFogTech = FX.GetTechniqueByName("Light0TexFog");
            Light1TexFogTech = FX.GetTechniqueByName("Light1TexFog");
            Light2TexFogTech = FX.GetTechniqueByName("Light2TexFog");
            Light3TexFogTech = FX.GetTechniqueByName("Light3TexFog");

            Light0TexAlphaClipFogTech = FX.GetTechniqueByName("Light0TexAlphaClipFog");
            Light1TexAlphaClipFogTech = FX.GetTechniqueByName("Light1TexAlphaClipFog");
            Light2TexAlphaClipFogTech = FX.GetTechniqueByName("Light2TexAlphaClipFog");
            Light3TexAlphaClipFogTech = FX.GetTechniqueByName("Light3TexAlphaClipFog");

            _viewProj = FX.GetVariableByName("gViewProj").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();

            _fogColor = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange = FX.GetVariableByName("gFogRange").AsScalar();

            _dirLights = FX.GetVariableByName("gDirLights");
            _mat = FX.GetVariableByName("gMaterial");
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();
        }
Ejemplo n.º 50
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("SpecialTrackMap");
			E = new Effect(device, _b);

			TechMain = E.GetTechniqueByName("Main");
			TechPp = E.GetTechniqueByName("Pp");
			TechFinal = E.GetTechniqueByName("Final");
			TechFinalCheckers = E.GetTechniqueByName("FinalCheckers");
			TechPpHorizontalBlur = E.GetTechniqueByName("PpHorizontalBlur");
			TechPpVerticalBlur = E.GetTechniqueByName("PpVerticalBlur");

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

			FxWorldViewProj = E.GetVariableByName("gWorldViewProj").AsMatrix();
			FxWorldInvTranspose = E.GetVariableByName("gWorldInvTranspose").AsMatrix();
			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxScreenSize = E.GetVariableByName("gScreenSize").AsVector();
		}
Ejemplo n.º 51
0
            public QuadShaderDeviceData(DX11RenderContext context)
            {
                string basepath = "VVVV.DX11.Nodes.effects.quad.fx";
                DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);

                quadshader = new DX11ShaderInstance(context, effect);
                texturevariable = quadshader.Effect.GetVariableBySemantic("INPUTTEXTURE").AsResource();
                samplervariable = quadshader.Effect.GetVariableBySemantic("SAMPLERSTATE").AsSampler();

                Quad quad = new Quad();
                quad.Size = new Vector2(1.0f);

                quadgeometry = context.Primitives.QuadNormals(quad);

                quadlayouts = new List<InputLayout>();
                for (int i = 0; i < 4; i++)
                {
                    InputLayout layout;
                    quadshader.SelectTechnique(i);

                    bool res = quadgeometry.ValidateLayout(quadshader.GetPass(0), out layout);
                    quadlayouts.Add(layout);
                }
            }
Ejemplo n.º 52
0
        public MenuEffect(Device device)
        {
            Device = device;
            ImmediateContext = Device.ImmediateContext;

            // Compile the shader...
            string compileErrors;
            var compiledShader = SlimDX.D3DCompiler.ShaderBytecode.CompileFromFile
            (
                "../../Effects/MenuEffect/MenuEffect.fx",
                null,
                "fx_5_0",
                SlimDX.D3DCompiler.ShaderFlags.None,
                SlimDX.D3DCompiler.EffectFlags.None,
                null,
                null,
                out compileErrors
            );

            if (compileErrors != null && compileErrors != "")
            {
                throw new EffectBuildException(compileErrors);
            }

            Effect = new Effect(Device, compiledShader);
            Technique = Effect.GetTechniqueByName("MenuTechnique");

            var vertexDesc = new[]
            {
                new InputElement("POSITION", 0, SlimDX.DXGI.Format.R32G32_Float, 0, 0, InputClassification.PerVertexData, 0),
                new InputElement("TEXCOORD", 0, SlimDX.DXGI.Format.R32G32_Float, 8, 0, InputClassification.PerVertexData, 0)
            };

            CPO_BlendColor = Effect.GetVariableByName("gBlendColor").AsVector();
            SRV_DiffuseMap = Effect.GetVariableByName("gDiffuseMap").AsResource();

            InputLayout = new InputLayout(Device, Technique.GetPassByIndex(0).Description.Signature, vertexDesc);

            Util.ReleaseCom(ref compiledShader);

            DepthStencilStateDescription dssd = new DepthStencilStateDescription()
            {
                IsDepthEnabled = false,
                DepthWriteMask = DepthWriteMask.All,
                DepthComparison = Comparison.Less,
                IsStencilEnabled = true,
                StencilReadMask = 0xFF,
                StencilWriteMask = 0xFF,
                FrontFace = new DepthStencilOperationDescription()
                {
                    FailOperation = StencilOperation.Keep,
                    PassOperation = StencilOperation.Keep,
                    DepthFailOperation = StencilOperation.Increment,
                    Comparison = Comparison.Always
                },
                BackFace = new DepthStencilOperationDescription()
                {
                    FailOperation = StencilOperation.Keep,
                    PassOperation = StencilOperation.Keep,
                    Comparison = Comparison.Always,
                    DepthFailOperation = StencilOperation.Decrement
                }
            };
            DepthDisabledState = DepthStencilState.FromDescription(Device, dssd);
        }
Ejemplo n.º 53
0
        public BasicEffect(Device device, string filename)
            : base(device, filename) {
            Light1Tech = FX.GetTechniqueByName("Light1");
            Light2Tech = FX.GetTechniqueByName("Light2");
            Light3Tech = FX.GetTechniqueByName("Light3");

            Light0TexTech = FX.GetTechniqueByName("Light0Tex");
            Light1TexTech = FX.GetTechniqueByName("Light1Tex");
            Light2TexTech = FX.GetTechniqueByName("Light2Tex");
            Light3TexTech = FX.GetTechniqueByName("Light3Tex");

            Light0TexAlphaClipTech = FX.GetTechniqueByName("Light0TexAlphaClip");
            Light1TexAlphaClipTech = FX.GetTechniqueByName("Light1TexAlphaClip");
            Light2TexAlphaClipTech = FX.GetTechniqueByName("Light2TexAlphaClip");
            Light3TexAlphaClipTech = FX.GetTechniqueByName("Light3TexAlphaClip");

            Light1FogTech = FX.GetTechniqueByName("Light1Fog");
            Light2FogTech = FX.GetTechniqueByName("Light2Fog");
            Light3FogTech = FX.GetTechniqueByName("Light3Fog");

            Light0TexFogTech = FX.GetTechniqueByName("Light0TexFog");
            Light1TexFogTech = FX.GetTechniqueByName("Light1TexFog");
            Light2TexFogTech = FX.GetTechniqueByName("Light2TexFog");
            Light3TexFogTech = FX.GetTechniqueByName("Light3TexFog");

            Light0TexAlphaClipFogTech = FX.GetTechniqueByName("Light0TexAlphaClipFog");
            Light1TexAlphaClipFogTech = FX.GetTechniqueByName("Light1TexAlphaClipFog");
            Light2TexAlphaClipFogTech = FX.GetTechniqueByName("Light2TexAlphaClipFog");
            Light3TexAlphaClipFogTech = FX.GetTechniqueByName("Light3TexAlphaClipFog");

            Light1ReflectTech = FX.GetTechniqueByName("Light1Reflect");
            Light2ReflectTech = FX.GetTechniqueByName("Light2Reflect");
            Light3ReflectTech = FX.GetTechniqueByName("Light3Reflect");

            Light0TexReflectTech = FX.GetTechniqueByName("Light0TexReflect");
            Light1TexReflectTech = FX.GetTechniqueByName("Light1TexReflect");
            Light2TexReflectTech = FX.GetTechniqueByName("Light2TexReflect");
            Light3TexReflectTech = FX.GetTechniqueByName("Light3TexReflect");

            Light0TexAlphaClipReflectTech = FX.GetTechniqueByName("Light0TexAlphaClipReflect");
            Light1TexAlphaClipReflectTech = FX.GetTechniqueByName("Light1TexAlphaClipReflect");
            Light2TexAlphaClipReflectTech = FX.GetTechniqueByName("Light2TexAlphaClipReflect");
            Light3TexAlphaClipReflectTech = FX.GetTechniqueByName("Light3TexAlphaClipReflect");

            Light1FogReflectTech = FX.GetTechniqueByName("Light1FogReflect");
            Light2FogReflectTech = FX.GetTechniqueByName("Light2FogReflect");
            Light3FogReflectTech = FX.GetTechniqueByName("Light3FogReflect");

            Light0TexFogReflectTech = FX.GetTechniqueByName("Light0TexFogReflect");
            Light1TexFogReflectTech = FX.GetTechniqueByName("Light1TexFogReflect");
            Light2TexFogReflectTech = FX.GetTechniqueByName("Light2TexFogReflect");
            Light3TexFogReflectTech = FX.GetTechniqueByName("Light3TexFogReflect");

            Light0TexAlphaClipFogReflectTech = FX.GetTechniqueByName("Light0TexAlphaClipFogReflect");
            Light1TexAlphaClipFogReflectTech = FX.GetTechniqueByName("Light1TexAlphaClipFogReflect");
            Light2TexAlphaClipFogReflectTech = FX.GetTechniqueByName("Light2TexAlphaClipFogReflect");
            Light3TexAlphaClipFogReflectTech = FX.GetTechniqueByName("Light3TexAlphaClipFogReflect");

            // skinned techs
            Light1SkinnedTech = FX.GetTechniqueByName("Light1Skinned");
            Light2SkinnedTech = FX.GetTechniqueByName("Light2Skinned");
            Light3SkinnedTech = FX.GetTechniqueByName("Light3Skinned");

            Light0TexSkinnedTech = FX.GetTechniqueByName("Light0TexSkinned");
            Light1TexSkinnedTech = FX.GetTechniqueByName("Light1TexSkinned");
            Light2TexSkinnedTech = FX.GetTechniqueByName("Light2TexSkinned");
            Light3TexSkinnedTech = FX.GetTechniqueByName("Light3TexSkinned");

            Light0TexAlphaClipSkinnedTech = FX.GetTechniqueByName("Light0TexAlphaClipSkinned");
            Light1TexAlphaClipSkinnedTech = FX.GetTechniqueByName("Light1TexAlphaClipSkinned");
            Light2TexAlphaClipSkinnedTech = FX.GetTechniqueByName("Light2TexAlphaClipSkinned");
            Light3TexAlphaClipSkinnedTech = FX.GetTechniqueByName("Light3TexAlphaClipSkinned");

            Light1FogSkinnedTech = FX.GetTechniqueByName("Light1FogSkinned");
            Light2FogSkinnedTech = FX.GetTechniqueByName("Light2FogSkinned");
            Light3FogSkinnedTech = FX.GetTechniqueByName("Light3FogSkinned");

            Light0TexFogSkinnedTech = FX.GetTechniqueByName("Light0TexFogSkinned");
            Light1TexFogSkinnedTech = FX.GetTechniqueByName("Light1TexFogSkinned");
            Light2TexFogSkinnedTech = FX.GetTechniqueByName("Light2TexFogSkinned");
            Light3TexFogSkinnedTech = FX.GetTechniqueByName("Light3TexFogSkinned");

            Light0TexAlphaClipFogSkinnedTech = FX.GetTechniqueByName("Light0TexAlphaClipFogSkinned");
            Light1TexAlphaClipFogSkinnedTech = FX.GetTechniqueByName("Light1TexAlphaClipFogSkinned");
            Light2TexAlphaClipFogSkinnedTech = FX.GetTechniqueByName("Light2TexAlphaClipFogSkinned");
            Light3TexAlphaClipFogSkinnedTech = FX.GetTechniqueByName("Light3TexAlphaClipFogSkinned");

            Light1ReflectSkinnedTech = FX.GetTechniqueByName("Light1ReflectSkinned");
            Light2ReflectSkinnedTech = FX.GetTechniqueByName("Light2ReflectSkinned");
            Light3ReflectSkinnedTech = FX.GetTechniqueByName("Light3ReflectSkinned");

            Light0TexReflectSkinnedTech = FX.GetTechniqueByName("Light0TexReflectSkinned");
            Light1TexReflectSkinnedTech = FX.GetTechniqueByName("Light1TexReflectSkinned");
            Light2TexReflectSkinnedTech = FX.GetTechniqueByName("Light2TexReflectSkinned");
            Light3TexReflectSkinnedTech = FX.GetTechniqueByName("Light3TexReflectSkinned");

            Light0TexAlphaClipReflectSkinnedTech = FX.GetTechniqueByName("Light0TexAlphaClipReflectSkinned");
            Light1TexAlphaClipReflectSkinnedTech = FX.GetTechniqueByName("Light1TexAlphaClipReflectSkinned");
            Light2TexAlphaClipReflectSkinnedTech = FX.GetTechniqueByName("Light2TexAlphaClipReflectSkinned");
            Light3TexAlphaClipReflectSkinnedTech = FX.GetTechniqueByName("Light3TexAlphaClipReflectSkinned");

            Light1FogReflectSkinnedTech = FX.GetTechniqueByName("Light1FogReflectSkinned");
            Light2FogReflectSkinnedTech = FX.GetTechniqueByName("Light2FogReflectSkinned");
            Light3FogReflectSkinnedTech = FX.GetTechniqueByName("Light3FogReflectSkinned");

            Light0TexFogReflectSkinnedTech = FX.GetTechniqueByName("Light0TexFogReflectSkinned");
            Light1TexFogReflectSkinnedTech = FX.GetTechniqueByName("Light1TexFogReflectSkinned");
            Light2TexFogReflectSkinnedTech = FX.GetTechniqueByName("Light2TexFogReflectSkinned");
            Light3TexFogReflectSkinnedTech = FX.GetTechniqueByName("Light3TexFogReflectSkinned");

            Light0TexAlphaClipFogReflectSkinnedTech = FX.GetTechniqueByName("Light0TexAlphaClipFogReflectSkinned");
            Light1TexAlphaClipFogReflectSkinnedTech = FX.GetTechniqueByName("Light1TexAlphaClipFogReflectSkinned");
            Light2TexAlphaClipFogReflectSkinnedTech = FX.GetTechniqueByName("Light2TexAlphaClipFogReflectSkinned");
            Light3TexAlphaClipFogReflectSkinnedTech = FX.GetTechniqueByName("Light3TexAlphaClipFogReflectSkinned");

            _worldViewProj = FX.GetVariableByName("gWorldViewProj").AsMatrix();
            _world = FX.GetVariableByName("gWorld").AsMatrix();
            _worldInvTranspose = FX.GetVariableByName("gWorldInvTranspose").AsMatrix();
            _texTransform = FX.GetVariableByName("gTexTransform").AsMatrix();
            _eyePosW = FX.GetVariableByName("gEyePosW").AsVector();

            _fogColor = FX.GetVariableByName("gFogColor").AsVector();
            _fogStart = FX.GetVariableByName("gFogStart").AsScalar();
            _fogRange = FX.GetVariableByName("gFogRange").AsScalar();

            _dirLights = FX.GetVariableByName("gDirLights");
            _mat = FX.GetVariableByName("gMaterial");
            _diffuseMap = FX.GetVariableByName("gDiffuseMap").AsResource();
            _shadowMap = FX.GetVariableByName("gShadowMap").AsResource();
            _cubeMap = FX.GetVariableByName("gCubeMap").AsResource();

            _boneTransforms = FX.GetVariableByName("gBoneTransforms").AsMatrix();
            
            _shadowTransform = FX.GetVariableByName("gShadowTransform").AsMatrix();

            _ssaoMap = FX.GetVariableByName("gSsaoMap").AsResource();

            _worldViewProjTex = FX.GetVariableByName("gWorldViewProjTex").AsMatrix();

        }
Ejemplo n.º 54
0
        private void LoadEffect(string shaderFileName)
        {
            _effect = Effect.FromFile(_dxDevice, shaderFileName, "fx_4_0",
                                      ShaderFlags.None, EffectFlags.None, null, null);

            _renderTech = _effect.GetTechniqueByName("Render"); //C++ Comparaison// technique = effect->GetTechniqueByName( "Render" );

            _eyePosWVar = _effect.GetVariableByName("gEyePosW").AsVector();
            _viewProjVar = _effect.GetVariableByName("gViewProj").AsMatrix();
            _worldVar = _effect.GetVariableByName("gWorld").AsMatrix();
            _fillColorVar = _effect.GetVariableByName("gFillColor").AsVector();
            _lightVariable = _effect.GetVariableByName("gLight");

            _imageMapVar = _effect.GetVariableByName("gImageMap").AsResource();
            _depthMapVar = _effect.GetVariableByName("gDepthMap").AsResource();

            _resVar = _effect.GetVariableByName("gRes").AsVector();
            _depthToRgbVar = _effect.GetVariableByName("gDepthToRgb").AsMatrix();
            _focalLengthDepthVar = _effect.GetVariableByName("gFocalLengthDepth").AsScalar();
            _focalLengthImageVar = _effect.GetVariableByName("gFocalLengthImage").AsScalar();

            ShaderSignature signature = _renderTech.GetPassByIndex(0).Description.Signature;
            _inputLayout = new InputLayout(_dxDevice, signature,
                                           new[] { new InputElement("POSITION", 0, SlimDX.DXGI.Format.R16G16_SInt, 0, 0)
                                                 });
        }
Ejemplo n.º 55
0
        private void CompileShaders(string texturePath, string shaderPath)
        {
            _shaderEffect = new Effect(_device, ShaderBytecode.CompileFromFile(shaderPath, "fx_5_0", ShaderFlags.None, EffectFlags.None));
            _shaderEffectPass = _shaderEffect.GetTechniqueByIndex((int) RenderParameters.ShaderMode).GetPassByIndex(0);
            _device.ImmediateContext.InputAssembler.InputLayout = new InputLayout(_device, _shaderEffectPass.Description.Signature, VertexShaderInput.InputLayout);

            // Setup Global Variables
            _world = _shaderEffect.GetVariableByName("World").AsMatrix();
            _worldViewProjection = _shaderEffect.GetVariableByName("WorldViewProj").AsMatrix();
            _tessFactor = _shaderEffect.GetVariableByName("TessFactor").AsScalar();
            _textureMap = _shaderEffect.GetVariableByName("Texture").AsResource();
            _enableTexture = _shaderEffect.GetVariableByName("EnableTexture").AsScalar();
            _enableNormals = _shaderEffect.GetVariableByName("Normals").AsScalar();
            _textureView = new ShaderResourceView(_device, Texture2D.FromFile(_device, texturePath));

            // Setup Lighting Variables
            _phongParameters = _shaderEffect.GetVariableByName("AmbSpecDiffShini").AsVector();
            _lightColor = _shaderEffect.GetVariableByName("LightColor").AsVector();
            _lightDirection = _shaderEffect.GetVariableByName("LightDirection").AsVector();
            _light2Color = _shaderEffect.GetVariableByName("Light2Color").AsVector();
            _light2Direction = _shaderEffect.GetVariableByName("Light2Direction").AsVector();
            _ambientLightColor = _shaderEffect.GetVariableByName("AmbientLight").AsVector();
            _cameraPosition = _shaderEffect.GetVariableByName("Eye").AsVector();
            _flatShading = _shaderEffect.GetVariableByName("FlatShading").AsScalar();

            // Valences and Prefixes for ACC
            _valencePrefixResource = _shaderEffect.GetVariableByName("ValencePrefixBuffer").AsResource();
        }
Ejemplo n.º 56
0
 public void Update()
 {
     updateRequired = false;
     if (device == null || effect == null)
     {
         updateRequired = true;
         return;
     }
     Texture2D texture = image;
     textureResourceView = new ShaderResourceView(device, texture);
     textureResource = effect.GetVariableByName("Texture_" + textureIndex).AsResource();
     device.PixelShader.SetShaderResource(textureResourceView, 0);
     textureResource.SetResource(textureResourceView);
     setSampler();
 }
Ejemplo n.º 57
0
        public void Update(IPluginIO pin, DX11RenderContext context)
        {
            if (quadshader == null)
            {
                string basepath = "VVVV.DX11.Nodes.effects.quad.fx";
                DX11Effect effect = DX11Effect.FromResource(Assembly.GetExecutingAssembly(), basepath);

                quadshader = new DX11ShaderInstance(context, effect);
                texturevariable = quadshader.Effect.GetVariableBySemantic("INPUTTEXTURE").AsResource();
                samplervariable = quadshader.Effect.GetVariableBySemantic("SAMPLERSTATE").AsSampler();

                Quad quad = new Quad();
                quad.Size = new Vector2(1.0f);

                quadgeometry = context.Primitives.QuadNormals(quad);

                quadlayouts = new List<InputLayout>();
                for (int i = 0; i < 4; i++)
                {
                    InputLayout layout;
                    quadshader.SelectTechnique(i);

                    bool res = quadgeometry.ValidateLayout(quadshader.GetPass(0), out layout);
                    quadlayouts.Add(layout);
                }
            }

            if (this.spmax > 0)
            {
                if (!this.FOutLayer[0].Contains(context))
                {
                    this.FOutLayer[0][context] = new DX11Layer();
                    this.FOutLayer[0][context].Render = this.Render;
                }
            }
        }
Ejemplo n.º 58
0
        protected override void OnLoadShaders(string shaderFileNeme)
        {
            base.OnLoadShaders("default.fx");

            _CameraMatrix = Effect.GetVariableByName("ViewProjection").AsMatrix();
            world = Effect.GetVariableByName("World").AsMatrix();
            color = Effect.GetVariableByName("Color").AsVector();
            _DiffuseTexture = Effect.GetVariableByName("DiffuseTexture").AsResource();
        }
Ejemplo n.º 59
0
 public NormalMapEffect(Device device, string filename) : base(device, filename) {
     _normalMap = FX.GetVariableByName("gNormalMap").AsResource();
 }
Ejemplo n.º 60
0
		public override void LoadResources()
		{
			if (m_Disposed == true)
			{ 
				#region Load Volume Effect

				m_Effect = m_Effect = new Effect(GameEnvironment.Device, Bytecode); // Effect.FromFile(GameEnvironment.Device, Helper.ResolvePath(m_ShaderLocation), "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);

				RayStartTechnique = m_Effect.GetTechniqueByName("RayStart");
				RayStartOutsidePass = RayStartTechnique.GetPassByName("Outside");
				RayStartInsidePass = RayStartTechnique.GetPassByName("Inside");

				VolumeLayout = new InputLayout(GameEnvironment.Device, RayStartOutsidePass.Description.Signature, new[] {
				   new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0),
				   new InputElement("COLOR", 0, Format.R32G32B32_Float, 12, 0)			
				});


				RayDirectionTechnique = m_Effect.GetTechniqueByName("RayDirection");
				RayDirectionPass0 = RayDirectionTechnique.GetPassByIndex(0);
				//RayDirectionPass1 = RayDirectionTechnique.GetPassByIndex(1);

				BillboardTechnique = m_Effect.GetTechniqueByName("Final");
				BillboardPass0 = BillboardTechnique.GetPassByIndex(0);

				ImposterTechnique = m_Effect.GetTechniqueByName("Imposter");
				ImposterPass0 = ImposterTechnique.GetPassByIndex(0);

				BillboardLayout = new InputLayout(GameEnvironment.Device, BillboardPass0.Description.Signature, new[] {
					new InputElement("POSITION", 0, Format.R32G32_Float, 0, 0),
					new InputElement("TEXCOORD", 0, Format.R32G32_Float, 8, 0)		
				});

				rayStart_texture = m_Effect.GetVariableByName("rayStart_texture").AsResource();
				rayDir_texture = m_Effect.GetVariableByName("rayDir_texture").AsResource();
				imposter = m_Effect.GetVariableByName("imposter").AsResource();
				volume_texture = m_Effect.GetVariableByName("volume_texture").AsResource();
				LocationColor = m_Effect.GetVariableByName("locationColor").AsVector();

				#endregion	

				#region Billboard Verts

				float minX = -1f;
				float miny = -1f;
				float maxX = 1f;
				float maxY = 1f; 

				using (DataStream stream = new DataStream(4 * Marshal.SizeOf(typeof(Vertex2D)), true, true))
				{
					stream.WriteRange(new Vertex2D[] {					
						new Vertex2D() { Position = new Vector2(maxX, miny), TextureCoords =  new Vector2(1.0f, 1.0f) }, 
						new Vertex2D() { Position = new Vector2(minX, miny), TextureCoords =  new Vector2(0.0f, 1.0f) }, 
						new Vertex2D() { Position = new Vector2(maxX, maxY), TextureCoords = new Vector2(1.0f, 0.0f) },  
						new Vertex2D() { Position = new Vector2(minX, maxY), TextureCoords =  new Vector2(0.0f, 0.0f) } 
					});
					stream.Position = 0;

					BillboardVertices = new SlimDX.Direct3D11.Buffer(GameEnvironment.Device, stream, new BufferDescription()
					{
						BindFlags = BindFlags.VertexBuffer,
						CpuAccessFlags = CpuAccessFlags.None,
						OptionFlags = ResourceOptionFlags.None,
						SizeInBytes = 4 * Marshal.SizeOf(typeof(Vertex2D)),
						Usage = ResourceUsage.Default
					});
				}

				BillboardVerticesBindings = new VertexBufferBinding(BillboardVertices, Marshal.SizeOf(typeof(UIVertex)), 0);

				#endregion

				m_Disposed = false; 
			}	
		}