Beispiel #1
0
 private void Init()
 {
     _ColorMap0Var    = GetVariableByName("g_ColorMap0").AsShaderResource();
     _SpecularMap0Var = GetVariableByName("g_SpecularMap0").AsShaderResource();
     _NormalMap0Var   = GetVariableByName("g_NormalMap0").AsShaderResource();
     _ColorVar        = GetVariableByName("g_Color").AsVector();
 }
Beispiel #2
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();
        }
Beispiel #3
0
        public void Load()
        {
            try
            {
                string path = Path.Combine(ShaderManager.ShadaresFolder, "transformEffectWireframe.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;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            var elements = new[] {
                new InputElement("POSITION", 0, Format.R32G32B32_Float, 0),
            };

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

            tmat  = effect.GetVariableByName("gWVP").AsMatrix();
            wfCol = effect.GetVariableByName("colorWireframe").AsVector();
            mCol  = effect.GetVariableByName("colorSolid").AsVector();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="host"></param>
        protected override bool OnAttach(IRenderHost host)
        {
            if (!base.OnAttach(host))
            {
                return(false);
            }

            if (renderHost.IsDeferredLighting)
            {
                return(false);
            }

            OnCreateGeometryBuffers();

            // --- set up const variables
            vPointParams = effect.GetVariableByName("vPointParams").AsVector();

            // --- set effect per object const vars
            var pointParams = new Vector4((float)Size.Width, (float)Size.Height, (float)Figure, (float)FigureRatio);

            vPointParams.Set(pointParams);

            // --- flush
            //Device.ImmediateContext.Flush();
            return(true);
        }
 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();
 }
Beispiel #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();
        }
        /// <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;
        }
 protected override void OnAttached()
 {
     base.OnAttached();
     xOutlineColorVar     = effect.GetVariableByName("XRayObjectColor").AsVector();
     xOutlineFadingFactor = effect.GetVariableByName("XRayBorderFadingFactor").AsScalar();
     isBlendChanged       = true;
 }
        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();
        }
        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) });
        }
        public void Load()
        {
            try
            {
                string path = Path.Combine(ShaderManager.ShadaresFolder, "EffectShaded.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);

                tmat     = effect.GetVariableByName("gWVP").AsMatrix();
                invW     = effect.GetVariableByName("inv_world_matrix").AsMatrix();
                lightPos = effect.GetVariableByName("LightPosition").AsVector();
                color    = effect.GetVariableByName("color").AsVector();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        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);
        }
Beispiel #13
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();
        }
Beispiel #14
0
            public Lighting(Effect effect)
            {
                _singleLights = new SingleLight[4];

                _cbLighting = effect.GetConstantBufferByName("cbLights");
                HemisphericLightColorBelow         = _cbLighting.GetMemberByName("HemisphericLightColorBelow").AsVector();
                HemisphericLightColorAbove         = _cbLighting.GetMemberByName("HemisphericLightColorAbove").AsVector();
                HemisphericLightBelowToAboveVector = _cbLighting.GetMemberByName("HemisphericLightBelowToAboveVector").AsVector();

                LightPosX = _cbLighting.GetMemberByName("LightPosX").AsVector();
                LightPosY = _cbLighting.GetMemberByName("LightPosY").AsVector();
                LightPosZ = _cbLighting.GetMemberByName("LightPosZ").AsVector();

                LightDirX = _cbLighting.GetMemberByName("LightDirX").AsVector();
                LightDirY = _cbLighting.GetMemberByName("LightDirY").AsVector();
                LightDirZ = _cbLighting.GetMemberByName("LightDirZ").AsVector();

                LightColorR = _cbLighting.GetMemberByName("LightColorR").AsVector();
                LightColorG = _cbLighting.GetMemberByName("LightColorG").AsVector();
                LightColorB = _cbLighting.GetMemberByName("LightColorB").AsVector();

                LightRangeRcp       = _cbLighting.GetMemberByName("LightRangeRcp").AsVector();
                CapsuleLen          = _cbLighting.GetMemberByName("CapsuleLen").AsVector();
                SpotCosOuterCone    = _cbLighting.GetMemberByName("SpotCosOuterCone").AsVector();
                SpotCosInnerConeRcp = _cbLighting.GetMemberByName("SpotCosInnerConeRcp").AsVector();
            }
Beispiel #15
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();
        }
Beispiel #16
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();
        }
Beispiel #17
0
        void IScene.Render()
        {
            Device device = this.Host.Device;

            if (device == null)
            {
                return;
            }

            device.InputAssembler.InputLayout       = this.VertexLayout;
            device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.TriangleList;
            device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(this.Vertices, 32, 0));

            EffectTechnique technique = this.SimpleEffect.GetTechniqueByIndex(0);
            EffectPass      pass      = technique.GetPassByIndex(0);

            EffectVectorVariable overlayColor = this.SimpleEffect.GetVariableBySemantic("OverlayColor").AsVector();

            overlayColor.Set(this.OverlayColor);

            for (int i = 0; i < technique.Description.PassCount; ++i)
            {
                pass.Apply();
                device.Draw(3, 0);
            }
        }
Beispiel #18
0
        /// <summary>
        /// Create Direct3D device and swap chain
        /// </summary>
        protected void InitDevice()
        {
            device    = D3DDevice.CreateDeviceAndSwapChain(directControl.Handle);
            swapChain = device.SwapChain;

            SetViews();

            // Create the effect
            using (FileStream effectStream = File.OpenRead("Tutorial06.fxo"))
            {
                effect = device.CreateEffectFromCompiledBinary(new BinaryReader(effectStream));
            }

            // Obtain the technique
            technique      = effect.GetTechniqueByName("Render");
            techniqueLight = effect.GetTechniqueByName("RenderLight");

            // Obtain the variables
            worldVariable      = effect.GetVariableByName("World").AsMatrix;
            viewVariable       = effect.GetVariableByName("View").AsMatrix;
            projectionVariable = effect.GetVariableByName("Projection").AsMatrix;

            lightDirVariable    = effect.GetVariableByName("vLightDir").AsVector;
            lightColorVariable  = effect.GetVariableByName("vLightColor").AsVector;
            outputColorVariable = effect.GetVariableByName("vOutputColor").AsVector;

            InitVertexLayout();
            InitVertexBuffer();
            InitIndexBuffer();

            // Set primitive topology
            device.IA.PrimitiveTopology = PrimitiveTopology.TriangleList;

            InitMatrices();
        }
        public override void Initialize()
        {
            base.Initialize();

            try
            {
                using (ShaderBytecode effectByteCode = ShaderBytecode.CompileFromFile(
                           "Shaders/transformEffectWireframe.fx",
                           "Render",
                           "fx_5_0",
                           ShaderFlags.EnableStrictness,
                           EffectFlags.None))
                {
                    effect         = new SlimDX.Direct3D11.Effect(DeviceManager.Instance.device, effectByteCode);
                    technique      = effect.GetTechniqueByIndex(0);
                    pass           = technique.GetPassByIndex(0);
                    inputSignature = pass.Description.Signature;
                }

                var elements = new[] {
                    new InputElement("POSITION", 0, Format.R32G32B32_Float, 0),
                };
                layout = new InputLayout(DeviceManager.Instance.device, inputSignature, elements);

                tmat  = effect.GetVariableByName("gWVP").AsMatrix();
                wfCol = effect.GetVariableByName("colorWireframe").AsVector();
                mCol  = effect.GetVariableByName("colorSolid").AsVector();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        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)
            });
        }
Beispiel #21
0
        protected override void OnLoadShaders(string shaderFileNeme)
        {
            base.OnLoadShaders("singleColor.fx");

            _CameraMatrix = Effect.GetVariableByName("ViewProjection").AsMatrix();
            color = Effect.GetVariableByName("Color").AsVector();
        }
Beispiel #22
0
        public EffectDirectionalLightVariable(EffectVariable structureVar)
        {
            _StructureVariable = structureVar;

            _DirectionMember = structureVar.GetMemberByName("Direction").AsVector();
            _DiffuseMember   = structureVar.GetMemberByName("Diffuse").AsVector();
            _SpecularMember  = structureVar.GetMemberByName("Specular").AsVector();
        }
        public EffectDirectionalLightVariable(EffectVariable structureVar)
        {
            _StructureVariable = structureVar;

            _DirectionMember = structureVar.GetMemberByName("Direction").AsVector();
            _DiffuseMember = structureVar.GetMemberByName("Diffuse").AsVector();
            _SpecularMember = structureVar.GetMemberByName("Specular").AsVector();
        }
Beispiel #24
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();
        }
 public CustomizeParameterEffectVariable(EffectBase effect)
 {
     _HairColorVar = effect.GetVariableByName("m_HairColor").AsVector();
     _MeshColorVar = effect.GetVariableByName("m_MeshColor").AsVector();
     _LeftColorVar = effect.GetVariableByName("m_LeftColor").AsVector();
     _RightColorVar = effect.GetVariableByName("m_RightColor").AsVector();
     _SkinColorVar = effect.GetVariableByName("m_SkinColor").AsVector();
     _LipColorVar = effect.GetVariableByName("m_LipColor").AsVector();
 }
 public CustomizeParameterEffectVariable(EffectBase effect)
 {
     _HairColorVar  = effect.GetVariableByName("m_HairColor").AsVector();
     _MeshColorVar  = effect.GetVariableByName("m_MeshColor").AsVector();
     _LeftColorVar  = effect.GetVariableByName("m_LeftColor").AsVector();
     _RightColorVar = effect.GetVariableByName("m_RightColor").AsVector();
     _SkinColorVar  = effect.GetVariableByName("m_SkinColor").AsVector();
     _LipColorVar   = effect.GetVariableByName("m_LipColor").AsVector();
 }
Beispiel #27
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");
        }
Beispiel #28
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();
        }
Beispiel #29
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="val"></param>
 /// <param name="name"></param>
 protected void GetVariableVector(out EffectVectorVariable val, string name)
 {
     val = m_coreEffect.GetVariableByName(name).AsVector();
     if (!val.IsValid)
     {
         throw new Exception("変数が存在しません。エフェクトファイル[common.hlsl]内に" +
                             name +
                             "が存在しません。");
     }
 }
        /// <summary>
        /// The OnAttached
        /// </summary>
        protected override void OnAttached()
        {
            base.OnAttached();
            planeParamsVar        = effect.GetVariableByName("CrossPlaneParams").AsMatrix();
            planeEnabledVar       = effect.GetVariableByName("EnableCrossPlane").AsVector();
            crossSectionColorVar  = effect.GetVariableByName("CrossSectionColor").AsVector();
            sectionFillTextureVar = effect.GetVariableByName("SectionFillTexture").AsShaderResource();

            CreateStates();
        }
Beispiel #31
0
        public RenderContext(IRenderHost canvas, Effect effect)
        {
            this.Canvas         = canvas;
            this.IsShadowPass   = false;
            this.IsDeferredPass = false;

            this.mView       = effect.GetVariableByName("mView").AsMatrix();
            this.mProjection = effect.GetVariableByName("mProjection").AsMatrix();
            this.vViewport   = effect.GetVariableByName("vViewport").AsVector();
            this.vFrustum    = effect.GetVariableByName("vFrustum").AsVector();
            this.vEyePos     = effect.GetVariableByName("vEyePos").AsVector();
        }
Beispiel #32
0
 public static void ApplyBoundingScale(EffectVectorVariable variable, LayerSettings settings, ObjectLayerSettings obj)
 {
     if (obj.Geometry != null)
     {
         if (obj.Geometry.HasBoundingBox)
         {
             variable.Set(obj.Geometry.BoundingBox.Maximum - obj.Geometry.BoundingBox.Minimum);
             return;
         }
     }
     variable.Set(new Vector3(1, 1, 1));
 }
Beispiel #33
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();
 }
        public RenderContext(IRenderHost canvas, Effect effect)
        {
            this.Canvas = canvas;
            this.IsShadowPass = false;
            this.IsDeferredPass = false;

            this.mView = effect.GetVariableByName("mView").AsMatrix();
            this.mProjection = effect.GetVariableByName("mProjection").AsMatrix();
            this.vViewport = effect.GetVariableByName("vViewport").AsVector();
            this.vFrustum = effect.GetVariableByName("vFrustum").AsVector();
            this.vEyePos = effect.GetVariableByName("vEyePos").AsVector();                     
        }
        public override void Attach(IRenderHost host)
        {
            /// --- attach
            base.Attach(host);

            /// --- light constant params              
            this.vLightAmbient = this.effect.GetVariableByName("vLightAmbient").AsVector();
            this.vLightAmbient.Set(this.Color);            

            /// --- flush
            this.Device.ImmediateContext.Flush();            
        }
Beispiel #36
0
        public override void Attach(IRenderHost host)
        {
            /// --- attach
            base.Attach(host);

            /// --- light constant params
            this.vLightAmbient = this.effect.GetVariableByName("vLightAmbient").AsVector();
            this.vLightAmbient.Set(this.Color);

            /// --- flush
            this.device.ImmediateContext.Flush();
        }
        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();
        }
        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();
        }
Beispiel #39
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();
        }
        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();
        }
Beispiel #41
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();
        }
Beispiel #42
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();
        }
Beispiel #43
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();
        }
        public override void Attach(IRenderHost host)
        {
            // --- attach
            renderTechnique = host.RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.BillboardText];
            effect = host.EffectsManager.GetEffect(renderTechnique);
            renderHost = host;

            // --- get variables
            vertexLayout = renderHost.EffectsManager.GetLayout(renderTechnique);
            effectTechnique = effect.GetTechniqueByName(renderTechnique.Name);

            // --- transformations
            effectTransforms = new EffectTransformVariables(effect);

            // --- shader variables
            vViewport = effect.GetVariableByName("vViewport").AsVector();

            // --- get geometry
            var geometry = Geometry as BillboardText3D;
            if (geometry == null)
            {
                return;
            }

            // --- material
            // this.AttachMaterial();
            billboardTextureVariable = effect.GetVariableByName("billboardTexture").AsShaderResource();

            var textureBytes = BillboardText3D.Texture.ToByteArray();
             //   billboardTextureView =new ShaderResourceView(Device, BillboardText3D.Texture);
            billboardTextureVariable.SetResource(billboardTextureView);

            // -- set geometry if given
            vertexBuffer = Device.CreateBuffer(BindFlags.VertexBuffer,
                VertexSizeInBytes, CreateBillboardVertexArray());

            /// --- set rasterstate
            OnRasterStateChanged(DepthBias);

            /// --- flush
            Device.ImmediateContext.Flush();
        }
        public override void Attach(IRenderHost host)
        {
            // --- attach
            this.renderTechnique = Techniques.RenderBillboard;
            this.effect = EffectsManager.Instance.GetEffect(renderTechnique);
            this.renderHost = host;

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

            // --- transformations
            this.effectTransforms = new EffectTransformVariables(this.effect);

            // --- shader variables
            this.vViewport = effect.GetVariableByName("vViewport").AsVector();

            // --- get geometry
            var geometry = this.Geometry as BillboardText3D;
            if (geometry == null)
            {
                return;
            }

            // --- material
            // this.AttachMaterial();
            billboardTextureVariable = effect.GetVariableByName("billboardTexture").AsShaderResource();

            var textureBytes = geometry.Texture.ToByteArray();
            billboardTextureView = ShaderResourceView.FromMemory(Device, textureBytes);
            billboardTextureVariable.SetResource(billboardTextureView);

            // -- set geometry if given
            vertexBuffer = Device.CreateBuffer(BindFlags.VertexBuffer,
                DefaultVertex.SizeInBytes, CreateBillboardVertexArray());

            /// --- set rasterstate
            this.OnRasterStateChanged(this.DepthBias);

            /// --- flush
            this.Device.ImmediateContext.Flush();
        }
Beispiel #46
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;
			}
		}
        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();
        }
Beispiel #48
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();
        }
Beispiel #49
0
        public Effects(D3DDevice device)
        {
            // File compiled using the following command:
            // "$(DXSDK_DIR)\utilities\bin\x86\fxc" "WindowsFlag.fx" /T fx_4_0 /Fo "WindowsFlag.fxo"
            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("WindowsFlag.WindowsFlag.fxo"))
            {
                effect = device.CreateEffectFromCompiledBinary(stream);
            }
            // Obtain the technique
            technique = effect.GetTechniqueByName("Render");

            // Obtain the variables
            worldVariable = effect.GetVariableByName("World").AsMatrix();
            viewVariable = effect.GetVariableByName("View").AsMatrix();
            projectionVariable = effect.GetVariableByName("Projection").AsMatrix();

            lightDirVariable = effect.GetVariableByName("vLightDir").AsVector();
            lightColorVariable = effect.GetVariableByName("vLightColor").AsVector();
            baseColorVariable = effect.GetVariableByName("vBaseColor").AsVector();

            // Set constants
            lightColorVariable.SetFloatVectorArray(vLightColors);
            lightDirVariable.SetFloatVectorArray(vLightDirs);
        }
Beispiel #50
0
        private void BuildFX() {
            ShaderBytecode compiledShader = null;
            try {
                compiledShader = new ShaderBytecode(new DataStream(File.ReadAllBytes("fx/Lighting.fxo"), false, false));
                _fx = new Effect(Device, compiledShader);
            } catch (Exception ex) {
                MessageBox.Show(ex.Message);
                return;
            } finally {
                Util.ReleaseCom(ref compiledShader);
            }

            _tech = _fx.GetTechniqueByName("LightTech");
            _fxWVP = _fx.GetVariableByName("gWorldViewProj").AsMatrix();
            _fxWorld = _fx.GetVariableByName("gWorld").AsMatrix();
            _fxWIT = _fx.GetVariableByName("gWorldInvTranspose").AsMatrix();
            _fxEyePosW = _fx.GetVariableByName("gEyePosW").AsVector();
            _fxDirLight = _fx.GetVariableByName("gDirLight");
            _fxPointLight = _fx.GetVariableByName("gPointLight");
            _fxSpotLight = _fx.GetVariableByName("gSpotLight");
            _fxMaterial = _fx.GetVariableByName("gMaterial");
        }
 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();
 }
        /// <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();
        }
Beispiel #53
0
        /// <summary>
        /// Create Direct3D device and swap chain
        /// </summary>
        protected void InitDevice()
        {
            device = D3DDevice1.CreateDeviceAndSwapChain1(directControl.Handle);
            swapChain = device.SwapChain;

            SetViews();

            // Create the effect
            using (FileStream effectStream = File.OpenRead("Tutorial07.fxo"))
            {
                effect = device.CreateEffectFromCompiledBinary(effectStream);
            }

            // Obtain the technique
            technique = effect.GetTechniqueByName("Render");

            // Obtain the variables
            worldVariable = effect.GetVariableByName("World").AsMatrix;
            viewVariable = effect.GetVariableByName("View").AsMatrix;
            projectionVariable = effect.GetVariableByName("Projection").AsMatrix;
            meshColorVariable = effect.GetVariableByName("vMeshColor").AsVector;
            diffuseVariable = effect.GetVariableByName("txDiffuse").AsShaderResource;

            InitVertexLayout();
            InitVertexBuffer();
            InitIndexBuffer();

            // Set primitive topology
            device.IA.PrimitiveTopology = PrimitiveTopology.TriangleList;

            // Load the Texture
            textureRV = TextureLoader.LoadTexture(device, "seafloor.png");

            InitMatrices();

            diffuseVariable.Resource = textureRV;
            needsResizing = false;
        }
        public void SetSourceCode(string extendedSourceCode)
        {
            string shaderCode = File.ReadAllText(renderer.Directory + "\\Resources\\Teapot.fx");

            try
            {
                using (ShaderBytecode bytecode = ShaderBytecode.Compile(extendedSourceCode + shaderCode, null, "fx_5_0", ShaderFlags.None, EffectFlags.None))
                {
                    effect = new Effect(renderingDevice, bytecode);
                }
            }
            catch (CompilationException ex)
            {
                System.Diagnostics.Debug.Write(ex.Message);
                return;
            }

            effectViewProjection = effect.GetVariableByName("matViewProjection").AsMatrix();
            effectCameraPositionWorld = effect.GetVariableByName("cameraPositionWorld").AsVector();

            technique = effect.GetTechniqueByIndex(0);
            pass = technique.GetPassByIndex(0);

            ShaderSignature signature = pass.Description.Signature;

            inputLayout = new InputLayout(renderingDevice, signature, new[] {
				new InputElement("POSITION", 0, SlimDX.DXGI.Format.R32G32B32_Float, 0, 0),
				new InputElement("NORMAL", 0, SlimDX.DXGI.Format.R32G32B32_Float, 12, 0) 
			});
        }
Beispiel #55
0
        public void Attach(ISceneHost host)
        {
            this.Host = host;

            Device device = host.Device;
            if (device == null)
                throw new Exception("Scene host device is null");

            try
            {
                ShaderBytecode shaderBytes = ShaderBytecode.CompileFromFile("Shaders\\Particle.fx", "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
                this.ParticleEffect = new Effect(device, shaderBytes);
            }
            catch
            { }

            try
            {
                ShaderBytecode shaderBytes = ShaderBytecode.CompileFromFile("Shaders\\Shape.fx", "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
                this.ShapeEffect = new Effect(device, shaderBytes);
            }
            catch
            { }

            try
            {
                ShaderBytecode shaderBytes = ShaderBytecode.CompileFromFile("Shaders\\Line.fx", "fx_4_0", ShaderFlags.None, EffectFlags.None, null, null);
                this.LineEffect = new Effect(device, shaderBytes);
            }
            catch
            { }

            EffectTechnique technique = this.ParticleEffect.GetTechniqueByIndex(0);
            EffectPass pass = technique.GetPassByIndex(0);

            this.ParticleLayout = new InputLayout(device, pass.Description.Signature, new[] {
                new InputElement("POSITION", 0, Format.R32G32_Float, 0, 0),
                new InputElement("POSITION", 1, Format.R32G32_Float, 8, 0),
                new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0)
            });

            this.ShapeLayout = new InputLayout(device, this.ShapeEffect.GetTechniqueByIndex(0).GetPassByIndex(0).Description.Signature, new[] {
                new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0)
            });

            this.LineLayout = new InputLayout(device, this.LineEffect.GetTechniqueByIndex(0).GetPassByIndex(0).Description.Signature, new[] {
                new InputElement("POSITION", 0, Format.R32G32_Float, 0, 0)
            });

            ParticleProjection = ParticleEffect.GetVariableByName("Projection").AsVector();
            ParticleCamera = ParticleEffect.GetVariableByName("Camera").AsVector();

            ShapeCamera = ShapeEffect.GetVariableByName("Camera").AsVector();
            ShapeProjection = ShapeEffect.GetVariableByName("Projection").AsVector();
            ShapeColor = ShapeEffect.GetVariableByName("Color").AsVector();
            ShapePosition = ShapeEffect.GetVariableByName("Position").AsVector();

            ParticlePass = ParticleEffect.GetTechniqueByIndex(0).GetPassByIndex(0);
            ShapePass = ShapeEffect.GetTechniqueByIndex(0).GetPassByIndex(0);

            DataStream lines = new DataStream(linesCount * 8, true, true);
            for (int i = 0; i < linesCount; i++)
                lines.Write(new Vector2(-1.0f + (float)i / (float)linesCount * 2.0f, 0));

            lines.Position = 0;

            Disposer.RemoveAndDispose(ref this.LineBuffer);

            this.LineBuffer = new Buffer(device, lines, new BufferDescription()
            {
                BindFlags = BindFlags.VertexBuffer,
                CpuAccessFlags = CpuAccessFlags.None,
                OptionFlags = ResourceOptionFlags.None,
                SizeInBytes = linesCount * 8,
                Usage = ResourceUsage.Default
            });

            Disposer.RemoveAndDispose(ref lines);

            device.Flush();

            Initialized = true;
        }
Beispiel #56
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();

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="host"></param>
        public override void Attach(IRenderHost host)
        {
            renderTechnique = Techniques.RenderPoints;
            base.Attach(host);

            if (Geometry == null)
                return;

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

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

            effectTransforms = new EffectTransformVariables(effect);

            // --- get geometry
            var geometry = Geometry as PointGeometry3D;

            // -- set geometry if given
            if (geometry != null)
            {
                /// --- set up buffers
                vertexBuffer = Device.CreateBuffer(BindFlags.VertexBuffer, Geometry3D.PointsVertex.SizeInBytes, CreatePointVertexArray());
            }

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

            /// --- set effect per object const vars
            var pointParams = new Vector4((float)Size.Width, (float)Size.Height, (float)Figure, (float)FigureRatio);
            vPointParams.Set(pointParams);

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

            /// --- flush
            Device.ImmediateContext.Flush();
        }
Beispiel #58
0
        /// <summary>
        /// Create Direct3D device and swap chain
        /// </summary>
        protected void InitDevice()
        {
            device = D3DDevice.CreateDeviceAndSwapChain(this.Handle, out swapChain);

            SetViews();

            // Create the effect
            using (FileStream effectStream = File.OpenRead("Tutorial07.fxo"))
            {
                effect = device.CreateEffectFromCompiledBinary(new BinaryReader(effectStream));
            }

            // Obtain the technique
            technique = effect.GetTechniqueByName( "Render" );

            // Obtain the variables
            worldVariable = effect.GetVariableByName( "World" ).AsMatrix();
            viewVariable = effect.GetVariableByName( "View" ).AsMatrix();
            projectionVariable = effect.GetVariableByName( "Projection" ).AsMatrix();
            meshColorVariable = effect.GetVariableByName( "vMeshColor" ).AsVector();
            diffuseVariable = effect.GetVariableByName( "txDiffuse" ).AsShaderResource();

            InitVertexLayout();
            InitVertexBuffer();
            InitIndexBuffer();

            // Set primitive topology
            device.IA.SetPrimitiveTopology(PrimitiveTopology.TriangleList);

            // Load the Texture
            using (FileStream stream = File.OpenRead("seafloor.png"))
            {
                textureRV = TextureLoader.LoadTexture(device, stream);
            }

            InitMatrices();

            diffuseVariable.SetResource(textureRV);
            active = true;
        }
Beispiel #59
0
        public LightingDemo(IntPtr hInstance) : base(hInstance) {
            _landVB = null;
            _landIB = null;
            _waveVB = null;
            _waveIB = null;
            _fx = null;
            _tech = null;
            _fxWorld = null;
            _fxWIT = null;
            _fxEyePosW = null;
            _fxDirLight = null;
            _fxPointLight = null;
            _fxSpotLight = null;
            _fxMaterial = null;
            _fxWVP = null;
            _inputLayout = null;
            _eyePosW = new Vector3();
            _theta = 1.5f*MathF.PI;
            _phi = 0.1f*MathF.PI;
            _radius = 80.0f;

            MainWindowCaption = "Lighting Demo";

            _lastMousePos = new Point();

            _landWorld = Matrix.Identity;
            _wavesWorld = Matrix.Translation(0, -3.0f, 0);
            _view = Matrix.Identity;
            _proj = Matrix.Identity;

            _dirLight = new DirectionalLight {
                Ambient = new Color4(0.2f, 0.2f, 0.2f),
                Diffuse = new Color4(0.5f, 0.5f, 0.5f),
                Specular = new Color4(0.5f, 0.5f, 0.5f),
                Direction = new Vector3(0.57735f, -0.57735f, 0.57735f)
            };

            _pointLight = new PointLight {
                Ambient = new Color4(0.3f, 0.3f, 0.3f),
                Diffuse = new Color4(0.7f, 0.7f, 0.7f),
                Specular = new Color4(0.7f, 0.7f, 0.7f),
                Attenuation = new Vector3(0.0f, 0.1f, 0.0f),
                Range = 25.0f
            };
            _spotLight = new SpotLight {
                Ambient = new Color4(0,0,0),
                Diffuse = new Color4(1.0f, 1.0f, 0.0f),
                Specular = Color.White,
                Attenuation = new Vector3(1.0f, 0.0f, 0.0f),
                Spot = 96.0f,
                Range = 10000.0f
            };

            // NOTE: must put alpha (spec power) first, rather than last as in book code
            _landMaterial = new Material {
                Ambient = new Color4(1.0f, 0.48f, 0.77f, 0.46f),
                Diffuse = new Color4(1.0f, 0.48f, 0.77f, 0.46f),
                Specular = new Color4(16.0f, 0.2f, 0.2f, 0.2f)
            };
            _wavesMaterial = new Material {
                Ambient =  new Color4(0.137f, 0.42f, 0.556f),
                Diffuse = new Color4(0.137f, 0.42f, 0.556f),
                Specular = new Color4(96.0f, 0.8f, 0.8f, 0.8f)
            };

        }
Beispiel #60
0
		public void Attach(Device hostDevice, PointD2D hostSize)
		{
			if (hostDevice == null)
				throw new ArgumentNullException(nameof(hostDevice));

			_hostDevice = hostDevice;
			_hostSize = hostSize;

			Device device = _hostDevice;

			using (var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Altaxo.CompiledShaders.Effects.Lighting.cso"))
			{
				if (null == stream)
					throw new InvalidOperationException(string.Format("Compiled shader resource not found: {0}", "Altaxo.CompiledShaders.Effects.Lighting.cso"));

				using (var shaderBytes = ShaderBytecode.FromStream(stream))
				{
					_lightingEffect = new Effect(device, shaderBytes);
				}
			}

			int i;

			for (i = 0; i < _layoutNames.Length; ++i)
			{
				string techniqueName = "Shade_" + _layoutNames[i];
				_renderLayouts[i].technique = this._lightingEffect.GetTechniqueByName(techniqueName);
				_renderLayouts[i].pass = _renderLayouts[i].technique.GetPassByIndex(0);

				if (null == _renderLayouts[i].technique || !_renderLayouts[i].technique.IsValid)
					throw new InvalidProgramException(string.Format("Technique {0} was not found or is invalid", techniqueName));
				if (null == _renderLayouts[i].pass || !_renderLayouts[i].pass.IsValid)
					throw new InvalidProgramException(string.Format("Pass[0] of technique {0} was not found or is invalid", techniqueName));
			}

			i = 0;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0)
																								});

			i = 1;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
																																new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0)
																								});

			i = 2;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
																																new InputElement("TEXCOORD", 0, Format.R32G32_Float, 16, 0)
																								});

			i = 3;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
																																new InputElement("NORMAL", 0, Format.R32G32B32A32_Float, 16, 0)
																								});

			i = 4;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
																																new InputElement("NORMAL", 0, Format.R32G32B32A32_Float, 16, 0),
																																new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 32, 0)
																								});

			i = 5;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.Description.Signature, new[] {
																																new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
																																new InputElement("NORMAL", 0, Format.R32G32B32A32_Float, 16, 0),
																																new InputElement("TEXCOORD", 0, Format.R32G32_Float, 32, 0)
																								});

			i = 6;
			_renderLayouts[i].VertexLayout = new InputLayout(device, _renderLayouts[i].pass.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)
																								});

			// Create Constant Buffers
			//_constantBuffer = new Buffer(device, Utilities.SizeOf<Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None);
			//_constantBufferForColor = new Buffer(device, Utilities.SizeOf<Vector4>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None);
			//_constantBufferForSixPlanes = new Buffer(device, Utilities.SizeOf<Vector4>() * 6, ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None);

			// View transformation variables
			_cbViewTransformation = this._lightingEffect.GetConstantBufferByName("cbViewTransformation");
			_evWorldViewProj = _cbViewTransformation.GetMemberByName("WorldViewProj").AsMatrix();
			_evEyePosition = _cbViewTransformation.GetMemberByName("EyePosition").AsVector();

			_cbMaterial = this._lightingEffect.GetConstantBufferByName("cbMaterial");
			_evMaterialDiffuseColor = _cbMaterial.GetMemberByName("MaterialDiffuseColor").AsVector();
			_evMaterialSpecularExponent = _cbMaterial.GetMemberByName("MaterialSpecularExponent").AsScalar();
			_evMaterialSpecularExponent.Set(4.0f);
			_evMaterialSpecularIntensity = _cbMaterial.GetMemberByName("MaterialSpecularIntensity").AsScalar();
			_evMaterialSpecularIntensity.Set(1.0f);
			_evMaterialDiffuseIntensity = _cbMaterial.GetMemberByName("MaterialDiffuseIntensity").AsScalar();
			_evMaterialMetalnessValue = _cbMaterial.GetMemberByName("MaterialMetalnessValue").AsScalar();
			_evMaterialMetalnessValue.Set(0.75f);

			// Color providers
			BindTextureFor1DColorProviders();

			// Clip plane variables
			_cbClipPlanes = this._lightingEffect.GetConstantBufferByName("cbClipPlanes");
			for (i = 0; i < 6; ++i)
			{
				_evClipPlanes[i] = _cbClipPlanes.GetMemberByName("ClipPlane" + i.ToString(System.Globalization.CultureInfo.InvariantCulture)).AsVector();
			}

			// Lighting variables

			_lighting.Initialize(_lightingEffect);
			_lighting.SetDefaultLighting();

			// --------------------
			if (_drawing != null)
			{
				BringDrawingIntoBuffers(_drawing);
			}

			if (null != _markerGeometry)
			{
				BringMarkerGeometryIntoDeviceBuffers(_markerGeometry);
			}

			if (null != _overlayGeometry)
			{
				BringOverlayGeometryIntoDeviceBuffers(_overlayGeometry);
			}
		}