public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.DeferredNormal) { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; nrmGenVS.SetValue("mvp", ref mvp); nrmGenPS.SetValue("move", move); nrmGenPS.SetTexture("dudvMap", mat.GetTexture(0)); nrmGenPS.SetTexture("normalMap", mat.GetTexture(1)); } else { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; Vector3 vpos = EffectParams.CurrentCamera.Position; vtxShader.SetValue("mvp", ref mvp); vtxShader.SetValue("world", ref op.Transformation); vtxShader.SetValue("viewPos", ref vpos); Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); vtxShader.SetValue("smTrans", lightPrjTrans); pixShader.SetTexture("dudvMap", mat.GetTexture(0)); pixShader.SetTexture("normalMap", mat.GetTexture(1)); pixShader.SetTexture("reflectionMap", reflection); pixShader.SetValue("move", move); } }
public override void Setup(Material mat, ref RenderOperation op) { //Matrix m = EffectParams.CurrentCamera.ViewMatrix; //m.TranslationValue = new Vector3(); //m *= EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix); }
//protected override int beginInst() //{ // stateSetted = false; // return effectInst.Begin(FX.DoNotSaveState | FX.DoNotSaveShaderState | FX.DoNotSaveSamplerState); //} //protected override void endInst() //{ // effectInst.End(); //} //public override void BeginPassInst(int passId) //{ // effectInst.BeginPass(passId); //} //public override void EndPassInst() //{ // effectInst.EndPass(); //} #endregion protected override int begin() { if (mode == RenderMode.Depth) { renderSys.BindShader(shdVtxShader); renderSys.BindShader(shdPixShader); } else if (mode == RenderMode.DeferredNormal) { renderSys.BindShader(nrmGenPShader); renderSys.BindShader(nrmGenVShader); } else { renderSys.BindShader(vtxShader); renderSys.BindShader(pixShader); pixShader.SetValue("i_a", EffectParams.LightAmbient); pixShader.SetValue("i_d", EffectParams.LightDiffuse); pixShader.SetValue("i_s", EffectParams.LightSpecular); pixShader.SetValue("lightDir", EffectParams.LightDir); vtxShader.SetValue("viewPos", EffectParams.CurrentCamera.Position); ShaderSamplerState state2 = new ShaderSamplerState(); state2.AddressU = TextureAddressMode.Wrap; state2.AddressV = TextureAddressMode.Wrap; state2.AddressW = TextureAddressMode.Wrap; state2.MinFilter = TextureFilter.Anisotropic; state2.MagFilter = TextureFilter.Anisotropic; state2.MipFilter = TextureFilter.Linear; state2.MaxAnisotropy = 8; state2.MipMapLODBias = 0; pixShader.SetTexture("hatch0", MaterialLibrary.Instance.Hatch0); pixShader.SetTexture("hatch1", MaterialLibrary.Instance.Hatch1); pixShader.SetSamplerState("hatch0", ref state2); pixShader.SetSamplerState("hatch1", ref state2); ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Border; state.AddressV = TextureAddressMode.Border; state.AddressW = TextureAddressMode.Border; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.None; state.BorderColor = ColorValue.White; state.MaxAnisotropy = 0; state.MipMapLODBias = 0; pixShader.SetSamplerState("texShd", ref state); pixShader.SetTexture("texShd", EffectParams.DepthMap[0]); } stateSetted = false; return(1); //return effect.Begin(FX.DoNotSaveState | FX.DoNotSaveShaderState | FX.DoNotSaveSamplerState); }
public override void Setup(Material mat, ref RenderOperation op) { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); //vtxShader.SetValue("cameraZ", EffectParams.InvView.Forward); if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetValue("k_a", mat.Ambient); pixShader.SetValue("k_d", mat.Diffuse); pixShader.SetValue("k_e", mat.Emissive); pixShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { pixShader.SetTexture("texDif", noTexture); } else { pixShader.SetTexture("texDif", clrTex); } } }
//public override void BeginShadowPass() //{ // throw new NotImplementedException(); //} //public override void EndShadowPass() //{ // throw new NotImplementedException(); //} public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.Depth) { Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); shdVtxShader.SetValue("mvp", ref lightPrjTrans); } else if (mode == RenderMode.DeferredNormal) { nrmPixShader.SetValue("view", EffectParams.CurrentCamera.ViewMatrix); Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; nrmVtxShader.SetValue("mvp", ref mvp); } else { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); vtxShader.SetValue("world", ref op.Transformation); Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); vtxShader.SetValue("smTrans", lightPrjTrans); if (!stateSetted) { pixShader.SetValue("k_a", mat.Ambient); pixShader.SetValue("k_d", mat.Diffuse); stateSetted = true; } } }
public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.Final) { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); pixShader.SetTexture("texDif", clrTex != null ? clrTex.Resource : null); stateSetted = true; } } else if (mode == RenderMode.DeferredNormal) { Matrix worldView = op.Transformation * EffectParams.CurrentCamera.ViewMatrix; Matrix mvp = worldView * EffectParams.CurrentCamera.ProjectionMatrix; nrmGenVShader.SetValue("mvp", ref mvp); nrmGenVShader.SetValue("worldView", ref worldView); if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; nrmGenPShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { nrmGenPShader.SetTexture("texDif", null); } else { nrmGenPShader.SetTexture("texDif", clrTex); } } } }
public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.Depth) { Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); skShdVtxShader.SetValue("mvp", ref lightPrjTrans); if (op.BoneTransforms != null) { skShdVtxShader.SetValue("Bones", op.BoneTransforms); } } else if (mode == RenderMode.DeferredNormal) { Matrix worldView = op.Transformation * EffectParams.CurrentCamera.ViewMatrix; Matrix mvp = worldView * EffectParams.CurrentCamera.ProjectionMatrix; nrmGenVtxShader.SetValue("mvp", ref mvp); nrmGenVtxShader.SetValue("worldView", ref worldView); if (op.BoneTransforms != null) { nrmGenVtxShader.SetValue("Bones", op.BoneTransforms); } if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; nrmGenPShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { nrmGenPShader.SetTexture("texDif", noTexture); } else { nrmGenPShader.SetTexture("texDif", clrTex); } } } else { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); vtxShader.SetValue("world", ref op.Transformation); Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); vtxShader.SetValue("smTrans", lightPrjTrans); if (op.BoneTransforms != null) { vtxShader.SetValue("Bones", op.BoneTransforms); } WorldObject wo = op.Sender as WorldObject; if (wo != null) { pixShader.SetValue("visiblity", wo.Visiblity); } else { pixShader.SetValue("visiblity", 1.0f); } if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetValue("k_a", mat.Ambient); pixShader.SetValue("k_d", mat.Diffuse); pixShader.SetValue("k_s", mat.Specular); pixShader.SetValue("k_e", mat.Emissive); pixShader.SetValue("k_power", mat.Power); pixShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { pixShader.SetTexture("texDif", noTexture); } else { pixShader.SetTexture("texDif", clrTex); } if (mat.IsVegetation) { vtxShader.SetValue("isVegetation", new Vector4(100, 100, 100, 100)); } else { vtxShader.SetValue("isVegetation", new Vector4()); } stateSetted = true; } } }
public override void Setup(Material mat, ref RenderOperation op) { vtxShader.SetValue("mvp", EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix); }
protected override int begin() { if (mode == RenderMode.Depth) { renderSystem.BindShader(shdVtxShader); renderSystem.BindShader(shdPixShader); } else if (mode == RenderMode.DeferredNormal) { renderSystem.BindShader(nrmVtxShader); renderSystem.BindShader(nrmPixShader); nrmPixShader.SetTexture("texNorm", MaterialLibrary.Instance.GlobalBakedNormalTexture); } else { renderSystem.BindShader(vtxShader); renderSystem.BindShader(pixShader); vtxShader.SetValue("terrSize", (float)terrSize); pixShader.SetValue("i_a", EffectParams.LightAmbient); pixShader.SetValue("i_d", EffectParams.LightDiffuse); //pixShader.SetValue("i_s", EffectParams.LightSpecular); vtxShader.SetValue("lightDir", EffectParams.LightDir); //vtxShader.SetValue("viewPos", EffectParams.CurrentCamera.Position); pixShader.SetTexture("texShd", EffectParams.DepthMap[0]); pixShader.SetTexture("texFog", FogMask); ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; ShaderSamplerState state2 = new ShaderSamplerState(); state2.AddressU = TextureAddressMode.Wrap; state2.AddressV = TextureAddressMode.Wrap; state2.AddressW = TextureAddressMode.Wrap; state2.MinFilter = TextureFilter.Anisotropic; state2.MagFilter = TextureFilter.Anisotropic; state2.MipFilter = TextureFilter.Linear; state2.MaxAnisotropy = 8; state2.MipMapLODBias = 0; pixShader.SetTexture("texDif", MaterialLibrary.Instance.GlobalIndexTexture); pixShader.SetTexture("texNorm", MaterialLibrary.Instance.GlobalNormalTexture); //pixShader.SetTexture("texEdge", MaterialLibrary.Instance.FadeEdge); pixShader.SetTexture("hatch0", MaterialLibrary.Instance.Hatch0); pixShader.SetTexture("hatch1", MaterialLibrary.Instance.Hatch1); pixShader.SetSamplerState("hatch0", ref state2); pixShader.SetSamplerState("hatch1", ref state2); pixShader.SetSamplerState("texDif", ref state); pixShader.SetSamplerState("texNorm", ref state); pixShader.SetSamplerState("texFog", ref state); TerrainTexture tex; tex = MaterialLibrary.Instance.GetTexture("Snow"); pixShader.SetTexture("texDet1", tex.Texture); pixShader.SetSamplerState("texDet1", ref state); tex = MaterialLibrary.Instance.GetTexture("Grass"); pixShader.SetTexture("texDet2", tex.Texture); pixShader.SetSamplerState("texDet2", ref state); tex = MaterialLibrary.Instance.GetTexture("Sand"); pixShader.SetTexture("texDet3", tex.Texture); pixShader.SetSamplerState("texDet3", ref state); tex = MaterialLibrary.Instance.GetTexture("Rock"); pixShader.SetTexture("texDet4", tex.Texture); pixShader.SetSamplerState("texDet4", ref state); state.AddressU = TextureAddressMode.Clamp; state.AddressV = TextureAddressMode.Clamp; state.AddressW = TextureAddressMode.Clamp; state.AddressU = TextureAddressMode.Border; state.AddressV = TextureAddressMode.Border; state.AddressW = TextureAddressMode.Border; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.None; state.BorderColor = ColorValue.White; state.MaxAnisotropy = 0; state.MipMapLODBias = 0; pixShader.SetSamplerState("texShd", ref state); } stateSetted = false; return(1); }
protected override int begin() { if (mode == RenderMode.DeferredNormal) { renderSystem.BindShader(nrmGenVS); renderSystem.BindShader(nrmGenPS); ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; nrmGenPS.SetSamplerState("dudvMap", ref state); nrmGenPS.SetSamplerState("normalMap", ref state); } else { renderSystem.BindShader(vtxShader); renderSystem.BindShader(pixShader); vtxShader.SetValue("lightDir", EffectParams.LightDir); ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetSamplerState("dudvMap", ref state); pixShader.SetSamplerState("normalMap", ref state); pixShader.SetSamplerState("reflectionMap", ref state); pixShader.SetTexture("texShd", EffectParams.DepthMap[0]); state.AddressU = TextureAddressMode.Clamp; state.AddressV = TextureAddressMode.Clamp; state.AddressW = TextureAddressMode.Clamp; state.AddressU = TextureAddressMode.Border; state.AddressV = TextureAddressMode.Border; state.AddressW = TextureAddressMode.Border; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.None; state.BorderColor = ColorValue.White; state.MaxAnisotropy = 0; state.MipMapLODBias = 0; pixShader.SetSamplerState("texShd", ref state); ShaderSamplerState state2 = new ShaderSamplerState(); state2.AddressU = TextureAddressMode.Wrap; state2.AddressV = TextureAddressMode.Wrap; state2.AddressW = TextureAddressMode.Wrap; state2.MinFilter = TextureFilter.Anisotropic; state2.MagFilter = TextureFilter.Anisotropic; state2.MipFilter = TextureFilter.Linear; state2.MaxAnisotropy = 8; state2.MipMapLODBias = 0; pixShader.SetTexture("hatch0", MaterialLibrary.Instance.Hatch0); pixShader.SetTexture("hatch1", MaterialLibrary.Instance.Hatch1); pixShader.SetSamplerState("hatch0", ref state2); pixShader.SetSamplerState("hatch1", ref state2); } move += 0.0000067f; while (move > 1) { move--; } return(1); }
public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.Depth) { Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); shdVtxShader.SetValue("mvp", ref lightPrjTrans); } else if (mode == RenderMode.DeferredNormal) { Matrix worldView = op.Transformation * EffectParams.CurrentCamera.ViewMatrix; Matrix mvp = worldView * EffectParams.CurrentCamera.ProjectionMatrix; nrmGenVShader.SetValue("mvp", ref mvp); nrmGenVShader.SetValue("worldView", ref worldView); if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; nrmGenPShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex != null) { nrmGenPShader.SetTexture("texDif", clrTex); } } } else { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); vtxShader.SetValue("world", ref op.Transformation); Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); vtxShader.SetValue("smTrans", lightPrjTrans); City sender = op.Sender as City; pixShader.SetValue("k_a", mat.Ambient); if (sender != null && sender.IsCaptured) { Color4F color = new Color4F(sender.Owner.SideColor); pixShader.SetValue("k_d", color); } else { pixShader.SetValue("k_d", mat.Diffuse); } if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex != null) { pixShader.SetTexture("texDif", clrTex); } stateSetted = true; } } }