Ejemplo n.º 1
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;
			}
		}
 protected override void OnAttached()
 {
     base.OnAttached();
     // --- init instances buffer
     bHasInstances = this.effect.GetVariableByName("bHasInstances").AsScalar();
     InstancesChanged();
 }
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
        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.º 5
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.º 6
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();
        }
 public EffectMaterialVariables(Effect effect, CustomPhongMaterial material)
 {
     this.material = material;
     this.material.OnMaterialPropertyChanged += Material_OnMaterialPropertyChanged;
     this.vMaterialAmbientVariable            = effect.GetVariableByName("vMaterialAmbient").AsVector();
     this.vMaterialDiffuseVariable            = effect.GetVariableByName("vMaterialDiffuse").AsVector();
     this.vMaterialEmissiveVariable           = effect.GetVariableByName("vMaterialEmissive").AsVector();
     this.vMaterialSpecularVariable           = effect.GetVariableByName("vMaterialSpecular").AsVector();
     this.vMaterialReflectVariable            = effect.GetVariableByName("vMaterialReflect").AsVector();
     this.sMaterialShininessVariable          = effect.GetVariableByName("sMaterialShininess").AsScalar();
     this.bHasDiffuseMapVariable              = effect.GetVariableByName("bHasDiffuseMap").AsScalar();
     this.bHasDiffuseAlphaMapVariable         = effect.GetVariableByName("bHasAlphaMap").AsScalar();
     this.bHasNormalMapVariable       = effect.GetVariableByName("bHasNormalMap").AsScalar();
     this.bHasDisplacementMapVariable = effect.GetVariableByName("bHasDisplacementMap").AsScalar();
     this.bHasShadowMapVariable       = effect.GetVariableByName("bHasShadowMap").AsScalar();
     this.bHasSpecularMapVariable     = effect.GetVariableByName("bHasSpecularMap").AsScalar();
     this.bHasEmissiveMapVariable     = effect.GetVariableByName("bHasEmissiveMap").AsScalar();
     this.texDiffuseMapVariable       = effect.GetVariableByName("texDiffuseMap").AsShaderResource();
     this.texNormalMapVariable        = effect.GetVariableByName("texNormalMap").AsShaderResource();
     this.texDisplacementMapVariable  = effect.GetVariableByName("texDisplacementMap").AsShaderResource();
     this.texShadowMapVariable        = effect.GetVariableByName("texShadowMap").AsShaderResource();
     this.texDiffuseAlphaMapVariable  = effect.GetVariableByName("texAlphaMap").AsShaderResource();
     this.texSpecularMapVariable      = effect.GetVariableByName("texSpecularMap").AsShaderResource();
     this.texEmissiveMapVariable      = effect.GetVariableByName("texEmissiveMap").AsShaderResource();
 }
Ejemplo n.º 8
0
        public void OnPreRender(Device device, float diffTime)
        {
            EffectVariable       ev  = effect.GetVariableByName("diffTime");
            EffectScalarVariable esv = ev.AsScalar();

            esv.Set(diffTime);
        }
        /// <summary>
        /// Creates the mesh manager
        /// </summary>
        /// <param name="device"></param>
        public XMeshManager(D3DDevice device)
        {
            this.device = device;

            // Create the effect
            //XMesh.fxo was compiled from XMesh.fx using:
            // "$(DXSDK_DIR)utilities\bin\x86\fxc" "$(ProjectDir)Mesh\MeshLoaders\XMesh.fx" /T fx_4_0 /Fo"$(ProjectDir)Mesh\MeshLoaders\XMesh.fxo"
            using (Stream effectStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(
                       "Microsoft.WindowsAPICodePack.DirectX.DirectXUtilities.XMesh.fxo"))
            {
                effect = device.CreateEffectFromCompiledBinary(new BinaryReader(effectStream));
            }

            // Obtain the techniques
            techniqueRenderTexture       = effect.GetTechniqueByName("RenderTextured");
            techniqueRenderVertexColor   = effect.GetTechniqueByName("RenderVertexColor");
            techniqueRenderMaterialColor = effect.GetTechniqueByName("RenderMaterialColor");

            // Obtain the variables
            brightnessVariable    = effect.GetVariableByName("Brightness").AsScalar;
            materialColorVariable = effect.GetVariableByName("MaterialColor").AsVector;
            worldVariable         = effect.GetVariableByName("World").AsMatrix;
            viewVariable          = effect.GetVariableByName("View").AsMatrix;
            projectionVariable    = effect.GetVariableByName("Projection").AsMatrix;
            diffuseVariable       = effect.GetVariableByName("tex2D").AsShaderResource;
        }
Ejemplo n.º 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="host"></param>
        protected override bool OnAttach(IRenderHost host)
        {
            // --- attach
            if (!base.OnAttach(host))
            {
                return(false);
            }

            // --- scale texcoords
            var texScale = TextureCoodScale;

            // --- get geometry
            var geometry = this.geometryInternal as MeshGeometry3D;

            // -- set geometry if given
            if (geometry != null)
            {
                //throw new HelixToolkitException("Geometry not found!");

                // --- init vertex buffer
                OnCreateGeometryBuffers();
            }
            else
            {
                throw new System.Exception("Geometry must not be null");
            }
            bInvertNormalVar = effect.GetVariableByName("bInvertNormal").AsScalar();
            // --- flush
            //this.Device.ImmediateContext.Flush();
            return(true);
        }
        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.º 12
0
        protected override bool OnAttach(IRenderHost host)
        {
            // --- attach
            if (!base.OnAttach(host))
            {
                return(false);
            }

            // --- shader variables
            vViewport          = effect.GetVariableByName("vViewport").AsVector();
            bFixedSizeVariable = effect.GetVariableByName("bBillboardFixedSize").AsScalar();
            // --- get geometry
            var geometry = geometryInternal as IBillboardText;

            if (geometry == null)
            {
                throw new System.Exception("Geometry must implement IBillboardText");
            }

            // --- material
            // this.AttachMaterial();
            this.bHasBillboardTexture          = effect.GetVariableByName("bHasTexture").AsScalar();
            this.billboardTextureVariable      = effect.GetVariableByName("billboardTexture").AsShaderResource();
            this.billboardAlphaTextureVariable = effect.GetVariableByName("billboardAlphaTexture").AsShaderResource();
            this.bHasBillboardAlphaTexture     = effect.GetVariableByName("bHasAlphaTexture").AsScalar();
            OnCreateGeometryBuffers();
            // --- set rasterstate
            OnRasterStateChanged();

            // --- flush
            //Device.ImmediateContext.Flush();
            return(true);
        }
 protected override void OnAttached()
 {
     base.OnAttached();
     xOutlineColorVar     = effect.GetVariableByName("XRayObjectColor").AsVector();
     xOutlineFadingFactor = effect.GetVariableByName("XRayBorderFadingFactor").AsScalar();
     isBlendChanged       = true;
 }
        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.º 15
0
 protected override void OnAttached()
 {
     base.OnAttached();
     OnBoneParameterChanged();
     OnBoneMatricesChanged();
     hasBonesVar     = effect.GetVariableByName("bHasBones").AsScalar();
     boneMatricesVar = effect.GetVariableByName("SkinMatrices").AsMatrix();
 }
Ejemplo n.º 16
0
 public DisplacementMapEffect(Device device, string filename) : base(device, filename) {
     _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();
 }
Ejemplo n.º 17
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.º 18
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.º 19
0
 public DisplacementMapEffect(Device device, string filename) : base(device, filename)
 {
     _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();
 }
Ejemplo n.º 20
0
 protected override void LoadShaderVariables()
 {
     _useDiffuseTextureVar = Effect.GetVariableByName("gUseDiffuseTexture").AsScalar();
     _diffuseTextureVar    = Effect.GetVariableByName("gDiffuseTexture").AsShaderResource();
     _useNormalTextureVar  = Effect.GetVariableByName("gUseNormalTexture").AsScalar();
     _normalTextureVar     = Effect.GetVariableByName("gNormalTexture").AsShaderResource();
     _wvpMatrixVar         = Effect.GetVariableBySemantic("WORLDVIEWPROJECTION").AsMatrix();
     _worldMatrixVar       = Effect.GetVariableBySemantic("WORLD").AsMatrix();
 }
Ejemplo n.º 21
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.º 22
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.º 23
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();
        }
Ejemplo n.º 24
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="val"></param>
 /// <param name="name"></param>
 protected void GetVariableScalar(out EffectScalarVariable val, string name)
 {
     val = m_coreEffect.GetVariableByName(name).AsScalar();
     if (!val.IsValid)
     {
         throw new Exception("変数が存在しません。エフェクトファイル[common.hlsl]内に" +
                             name +
                             "が存在しません。");
     }
 }
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 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();
 }
        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();
        }
Ejemplo n.º 28
0
        public ExtendedNormalMapEffect(Device device, string filename)
            : base(device, filename)
        {
            TweenFactor0 = FX.GetVariableByName("gTweenFactor0").AsScalar();

            MorphTech = FX.GetTechniqueByName("MorphTech");
            SelectedSubmeshMorphTech = FX.GetTechniqueByName("SelectedSubmeshMorphTech");
            NormalsTech         = FX.GetTechniqueByName("NormalsTech");
            BonesTech           = FX.GetTechniqueByName("BonesTech");
            SelectedSubmeshTech = FX.GetTechniqueByName("SelectedSubmeshTech");
        }
Ejemplo n.º 29
0
 protected override bool OnAttach(IRenderHost host)
 {
     parameters.OnAttach(this.effect);
     this.effectTransforms = new EffectTransformVariables(effect);
     effectTechnique       = effect.GetTechniqueByName(this.renderTechnique.Name);
     bHasTextureVar        = effect.GetVariableByName("bHasDiffuseMap").AsScalar();
     textureViewVar        = effect.GetVariableByName("texDiffuseMap").AsShaderResource();
     isBlendChanged        = true;
     System.Windows.Media.CompositionTarget.Rendering += CompositionTarget_Rendering;
     return(true);
 }
Ejemplo n.º 30
0
 public virtual void OnAttach(Effect effect)
 {
     currentSimulationStateVar = effect.GetVariableByName("CurrentSimulationState").AsUnorderedAccessView();
     newSimulationStateVar     = effect.GetVariableByName("NewSimulationState").AsUnorderedAccessView();
     simulationStateVar        = effect.GetVariableByName("SimulationState").AsShaderResource();
     particleSizeVar           = effect.GetVariableByName("ParticleSize").AsVector();
     randomVectorVar           = effect.GetVariableByName("RandomVector").AsVector();
     randomSeedVar             = effect.GetVariableByName("RandomSeed").AsScalar();
     numTextureColumnVar       = effect.GetVariableByName("NumTexCol").AsScalar();
     numTextureRowVar          = effect.GetVariableByName("NumTexRow").AsScalar();
     animateSpriteByEnergyVar  = effect.GetVariableByName("AnimateByEnergyLevel").AsScalar();
 }
Ejemplo n.º 31
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.º 32
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;
			}
		}
Ejemplo n.º 33
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.º 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
        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.º 36
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.º 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();
        }
        public void Load()
        {
            try
            {
                string path = Path.Combine(ShaderManager.ShadaresFolder, "PhongBlinn.fx");
                using (ShaderBytecode effectByteCode = ShaderBytecode.CompileFromFile(
                           path,
                           "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();

                //diffuse = effect.GetVariableByName("materialDiffuse").AsVector();
                //emissive = effect.GetVariableByName("materialEmissive").AsVector();
                //ambient = effect.GetVariableByName("materialAmbient").AsVector();
                //specular = effect.GetVariableByName("materialSpecular").AsVector();
                //dirLightColor = effect.GetVariableByName("dirLightColor").AsVector();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Ejemplo n.º 39
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.º 40
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.º 41
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.º 42
0
        public void Initialize(Device device)
        {
            _b = EffectUtils.Load(ShadersResourceManager.Manager, "DeferredLight");
            E  = new Effect(device, _b);

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

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

            FxWorld                     = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorld").AsMatrix());
            FxWorldInvTranspose         = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldInvTranspose").AsMatrix());
            FxWorldViewProj             = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProj").AsMatrix());
            FxWorldViewProjInv          = new EffectOnlyMatrixVariable(E.GetVariableByName("gWorldViewProjInv").AsMatrix());
            FxShadowViewProj            = new EffectOnlyMatrixArrayVariable(E.GetVariableByName("gShadowViewProj").AsMatrix());
            FxBaseMap                   = E.GetVariableByName("gBaseMap").AsResource();
            FxNormalMap                 = E.GetVariableByName("gNormalMap").AsResource();
            FxMapsMap                   = E.GetVariableByName("gMapsMap").AsResource();
            FxDepthMap                  = E.GetVariableByName("gDepthMap").AsResource();
            FxShadowMaps                = E.GetVariableByName("gShadowMaps").AsResource();
            FxPointLightRadius          = E.GetVariableByName("gPointLightRadius").AsScalar();
            FxScreenSize                = E.GetVariableByName("gScreenSize").AsVector();
            FxLightColor                = E.GetVariableByName("gLightColor").AsVector();
            FxDirectionalLightDirection = E.GetVariableByName("gDirectionalLightDirection").AsVector();
            FxPointLightPosition        = E.GetVariableByName("gPointLightPosition").AsVector();
            FxShadowDepths              = E.GetVariableByName("gShadowDepths").AsVector();
            FxEyePosW                   = E.GetVariableByName("gEyePosW").AsVector();
        }
Ejemplo n.º 43
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();
        }
 public EffectMaterialVariables(Effect effect)
 {
     this.vMaterialAmbientVariable = effect.GetVariableByName("vMaterialAmbient").AsVector();
     this.vMaterialDiffuseVariable = effect.GetVariableByName("vMaterialDiffuse").AsVector();
     this.vMaterialEmissiveVariable = effect.GetVariableByName("vMaterialEmissive").AsVector();
     this.vMaterialSpecularVariable = effect.GetVariableByName("vMaterialSpecular").AsVector();
     this.vMaterialReflectVariable = effect.GetVariableByName("vMaterialReflect").AsVector();
     this.sMaterialShininessVariable = effect.GetVariableByName("sMaterialShininess").AsScalar();
     this.bHasDiffuseMapVariable = effect.GetVariableByName("bHasDiffuseMap").AsScalar();
     this.bHasNormalMapVariable = effect.GetVariableByName("bHasNormalMap").AsScalar();
     this.bHasDisplacementMapVariable = effect.GetVariableByName("bHasDisplacementMap").AsScalar();
     this.bHasShadowMapVariable = effect.GetVariableByName("bHasShadowMap").AsScalar();
     this.texDiffuseMapVariable = effect.GetVariableByName("texDiffuseMap").AsShaderResource();
     this.texNormalMapVariable = effect.GetVariableByName("texNormalMap").AsShaderResource();
     this.texDisplacementMapVariable = effect.GetVariableByName("texDisplacementMap").AsShaderResource();
     this.texShadowMapVariable = effect.GetVariableByName("texShadowMap").AsShaderResource();
 }
Ejemplo n.º 45
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("DeferredLight");
			E = new Effect(device, _b);

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

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

			FxWorld = E.GetVariableByName("gWorld").AsMatrix();
			FxWorldInvTranspose = E.GetVariableByName("gWorldInvTranspose").AsMatrix();
			FxWorldViewProj = E.GetVariableByName("gWorldViewProj").AsMatrix();
			FxWorldViewProjInv = E.GetVariableByName("gWorldViewProjInv").AsMatrix();
			FxShadowViewProj = E.GetVariableByName("gShadowViewProj").AsMatrix();
			FxBaseMap = E.GetVariableByName("gBaseMap").AsResource();
			FxNormalMap = E.GetVariableByName("gNormalMap").AsResource();
			FxMapsMap = E.GetVariableByName("gMapsMap").AsResource();
			FxDepthMap = E.GetVariableByName("gDepthMap").AsResource();
			FxShadowMaps = E.GetVariableByName("gShadowMaps").AsResource();
			FxPointLightRadius = E.GetVariableByName("gPointLightRadius").AsScalar();
			FxScreenSize = E.GetVariableByName("gScreenSize").AsVector();
			FxLightColor = E.GetVariableByName("gLightColor").AsVector();
			FxDirectionalLightDirection = E.GetVariableByName("gDirectionalLightDirection").AsVector();
			FxPointLightPosition = E.GetVariableByName("gPointLightPosition").AsVector();
			FxShadowDepths = E.GetVariableByName("gShadowDepths").AsVector();
			FxEyePosW = E.GetVariableByName("gEyePosW").AsVector();
		}
Ejemplo n.º 46
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="host"></param>
        public override void Attach(IRenderHost host)
        {
            /// --- attach
            this.renderTechnique = Techniques.RenderLines;
            base.Attach(host);

            if (this.Geometry == null)
                return;

            #if DEFERRED
            if (renderHost.RenderTechnique == Techniques.RenderDeferred || renderHost.RenderTechnique == Techniques.RenderGBuffer)
                return;
            #endif

            // --- get device
            this.vertexLayout = EffectsManager.Instance.GetLayout(this.renderTechnique);
            this.effectTechnique = effect.GetTechniqueByName(this.renderTechnique.Name);

            this.effectTransforms = new EffectTransformVariables(this.effect);

            // --- get geometry
            var geometry = this.Geometry as LineGeometry3D;

            // -- set geometry if given
            if (geometry != null)
            {
                /// --- set up buffers
                this.vertexBuffer = Device.CreateBuffer(BindFlags.VertexBuffer, LinesVertex.SizeInBytes, this.CreateLinesVertexArray());

                /// --- set up indexbuffer
                this.indexBuffer = Device.CreateBuffer(BindFlags.IndexBuffer, sizeof(int), geometry.Indices.Array);
            }

            /// --- init instances buffer
            this.hasInstances = (this.Instances != null)&&(this.Instances.Any());
            this.bHasInstances = this.effect.GetVariableByName("bHasInstances").AsScalar();
            if (this.hasInstances)
            {
                this.instanceBuffer = Buffer.Create(this.Device, this.instanceArray, new BufferDescription(Matrix.SizeInBytes * this.instanceArray.Length, ResourceUsage.Dynamic, BindFlags.VertexBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0));
            }

            /// --- set up const variables
            this.vViewport = effect.GetVariableByName("vViewport").AsVector();
            //this.vFrustum = effect.GetVariableByName("vFrustum").AsVector();
            this.vLineParams = effect.GetVariableByName("vLineParams").AsVector();

            /// --- set effect per object const vars
            var lineParams = new Vector4((float)this.Thickness, (float)this.Smoothness, 0, 0);
            this.vLineParams.Set(lineParams);

            /// === debug hack
            //{
            //    var texDiffuseMapView = ShaderResourceView.FromFile(device, @"G:\Projects\Deformation Project\FrameworkWPF2012\Externals\HelixToolkit-SharpDX\Source\Examples\SharpDX.Wpf\LightingDemo\TextureCheckerboard2.jpg");
            //    var texDiffuseMap = effect.GetVariableByName("texDiffuseMap").AsShaderResource();
            //    texDiffuseMap.SetResource(texDiffuseMapView);
            //}

            /// --- create raster state
            this.OnRasterStateChanged(this.DepthBias);

            //this.rasterState = new RasterizerState(this.device, rasterStateDesc);

            /// --- set up depth stencil state
            //var depthStencilDesc = new DepthStencilStateDescription()
            //{
            //    DepthComparison = Comparison.Less,
            //    DepthWriteMask = global::SharpDX.Direct3D11.DepthWriteMask.All,
            //    IsDepthEnabled = true,
            //};
            //this.depthStencilState = new DepthStencilState(this.device, depthStencilDesc);

            /// --- flush
            this.Device.ImmediateContext.Flush();
        }
Ejemplo n.º 47
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("PpBasic");
			E = new Effect(device, _b);

			TechCopy = E.GetTechniqueByName("Copy");
			TechCopyNoAlpha = E.GetTechniqueByName("CopyNoAlpha");
			TechOverlay = E.GetTechniqueByName("Overlay");
			TechShadow = E.GetTechniqueByName("Shadow");
			TechDepth = E.GetTechniqueByName("Depth");
			TechFxaa = E.GetTechniqueByName("Fxaa");

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

			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxOverlayMap = E.GetVariableByName("gOverlayMap").AsResource();
			FxDepthMap = E.GetVariableByName("gDepthMap").AsResource();
			FxSizeMultipler = E.GetVariableByName("gSizeMultipler").AsScalar();
			FxScreenSize = E.GetVariableByName("gScreenSize").AsVector();
		}
Ejemplo n.º 48
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("PpBlur");
			E = new Effect(device, _b);

			TechGaussianBlur = E.GetTechniqueByName("GaussianBlur");
			TechReflectionGaussianBlur = E.GetTechniqueByName("ReflectionGaussianBlur");

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

			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxMapsMap = E.GetVariableByName("gMapsMap").AsResource();
			FxSampleWeights = E.GetVariableByName("gSampleWeights").AsScalar();
			FxPower = E.GetVariableByName("gPower").AsScalar();
			FxSampleOffsets = E.GetVariableByName("gSampleOffsets").AsVector();
		}
        public override void Attach(IRenderHost host)
        {
            /// --- attach
            this.renderTechnique = Techniques.RenderCubeMap;
            base.Attach(host);

            /// --- get variables               
            this.vertexLayout = EffectsManager.Instance.GetLayout(this.renderTechnique);
            this.effectTechnique = effect.GetTechniqueByName(this.renderTechnique.Name);
            this.effectTransforms = new EffectTransformVariables(this.effect);

            /// -- attach cube map 
            if (this.Filename != null)
            {
                /// -- attach texture
                using (var texture = Texture2D.FromFile<Texture2D>(this.Device, this.Filename))
                {
                    this.texCubeMapView = new ShaderResourceView(this.Device, texture);
                }
                this.texCubeMap = effect.GetVariableByName("texCubeMap").AsShaderResource();
                this.texCubeMap.SetResource(this.texCubeMapView);
                this.bHasCubeMap = effect.GetVariableByName("bHasCubeMap").AsScalar();
                this.bHasCubeMap.Set(true);

                /// --- set up geometry
                var sphere = new MeshBuilder(false,true,false);
                sphere.AddSphere(new Vector3(0, 0, 0));
                this.geometry = sphere.ToMeshGeometry3D();

                /// --- set up vertex buffer
                this.vertexBuffer = Device.CreateBuffer(BindFlags.VertexBuffer, CubeVertex.SizeInBytes, this.geometry.Positions.Select((x, ii) => new CubeVertex() { Position = new Vector4(x, 1f) }).ToArray());

                /// --- set up index buffer
                this.indexBuffer = Device.CreateBuffer(BindFlags.IndexBuffer, sizeof(int), geometry.Indices.Array);

                /// --- set up rasterizer states
                var rasterStateDesc = new RasterizerStateDescription()
                {
                    FillMode = FillMode.Solid,
                    CullMode = CullMode.Back,
                    IsMultisampleEnabled = true,
                    IsAntialiasedLineEnabled = true,
                    IsFrontCounterClockwise = false,
                };
                this.rasterState = new RasterizerState(this.Device, rasterStateDesc);

                /// --- set up depth stencil state
                var depthStencilDesc = new DepthStencilStateDescription()
                {
                    DepthComparison = Comparison.LessEqual,
                    DepthWriteMask = global::SharpDX.Direct3D11.DepthWriteMask.All,
                    IsDepthEnabled = true,
                };
                this.depthStencilState = new DepthStencilState(this.Device, depthStencilDesc);
            }

            /// --- flush
            this.Device.ImmediateContext.Flush();
        }
Ejemplo n.º 50
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("PpFxaa311");
			E = new Effect(device, _b);

			TechLuma = E.GetTechniqueByName("Luma");
			TechFxaa = E.GetTechniqueByName("Fxaa");

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

			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxDepthMap = E.GetVariableByName("gDepthMap").AsResource();
			FxSizeMultipler = E.GetVariableByName("gSizeMultipler").AsScalar();
			FxScreenSize = E.GetVariableByName("gScreenSize").AsVector();
		}
Ejemplo n.º 51
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("PpSmaa");
			E = new Effect(device, _b);

			TechSmaa = E.GetTechniqueByName("Smaa");
			TechSmaaB = E.GetTechniqueByName("SmaaB");
			TechSmaaN = E.GetTechniqueByName("SmaaN");

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

			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxEdgesMap = E.GetVariableByName("gEdgesMap").AsResource();
			FxBlendMap = E.GetVariableByName("gBlendMap").AsResource();
			FxAreaTexMap = E.GetVariableByName("gAreaTexMap").AsResource();
			FxSearchTexMap = E.GetVariableByName("gSearchTexMap").AsResource();
			FxSizeMultipler = E.GetVariableByName("gSizeMultipler").AsScalar();
			FxScreenSizeSpec = E.GetVariableByName("gScreenSizeSpec").AsVector();
		}
Ejemplo n.º 52
0
		public void Initialize(Device device) {
			_b = EffectUtils.Load("SpecialShadow");
			E = new Effect(device, _b);

			TechHorizontalShadowBlur = E.GetTechniqueByName("HorizontalShadowBlur");
			TechVerticalShadowBlur = E.GetTechniqueByName("VerticalShadowBlur");
			TechAmbientShadow = E.GetTechniqueByName("AmbientShadow");
			TechResult = E.GetTechniqueByName("Result");

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

			FxShadowViewProj = E.GetVariableByName("gShadowViewProj").AsMatrix();
			FxInputMap = E.GetVariableByName("gInputMap").AsResource();
			FxDepthMap = E.GetVariableByName("gDepthMap").AsResource();
			FxMultipler = E.GetVariableByName("gMultipler").AsScalar();
			FxCount = E.GetVariableByName("gCount").AsScalar();
			FxPadding = E.GetVariableByName("gPadding").AsScalar();
			FxSize = E.GetVariableByName("gSize").AsVector();
			FxShadowSize = E.GetVariableByName("gShadowSize").AsVector();
		}
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 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.º 55
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)
                                                 });
        }