private void Init() { _ColorMap0Var = GetVariableByName("g_ColorMap0").AsShaderResource(); _SpecularMap0Var = GetVariableByName("g_SpecularMap0").AsShaderResource(); _NormalMap0Var = GetVariableByName("g_NormalMap0").AsShaderResource(); _ColorVar = GetVariableByName("g_Color").AsVector(); }
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(); }
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(); }
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; }
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); }
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(); }
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(); }
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(); }
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(); }
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); } }
/// <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) }); }
protected override void OnLoadShaders(string shaderFileNeme) { base.OnLoadShaders("singleColor.fx"); _CameraMatrix = Effect.GetVariableByName("ViewProjection").AsMatrix(); color = Effect.GetVariableByName("Color").AsVector(); }
public EffectDirectionalLightVariable(EffectVariable structureVar) { _StructureVariable = structureVar; _DirectionMember = structureVar.GetMemberByName("Direction").AsVector(); _DiffuseMember = structureVar.GetMemberByName("Diffuse").AsVector(); _SpecularMember = structureVar.GetMemberByName("Specular").AsVector(); }
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 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"); }
/// <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(); }
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 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)); }
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 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 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(); }
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 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(); }
public ParticleEffect(Device device, string filename) : base(device, filename) { StreamOutTech = FX.GetTechniqueByName("StreamOutTech"); DrawTech = FX.GetTechniqueByName("DrawTech"); _viewProj = FX.GetVariableByName("gViewProj").AsMatrix(); _gameTime = FX.GetVariableByName("gGameTime").AsScalar(); _timeStep = FX.GetVariableByName("gTimeStep").AsScalar(); _eyePosW = FX.GetVariableByName("gEyePosW").AsVector(); _emitPosW = FX.GetVariableByName("gEmitPosW").AsVector(); _emitDirW = FX.GetVariableByName("gEmitDirW").AsVector(); _texArray = FX.GetVariableByName("gTexArray").AsResource(); _randomTex = FX.GetVariableByName("gRandomTex").AsResource(); }
public 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(); }
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(); }
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(); }
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); }
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(); }
/// <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) }); }
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; }
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(); }
/// <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; }
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) }; }
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); } }