public override void RenderFrame(GraphicsPipeline3D pipeline, MoleculeRenderingScheme scheme, bool alphaPass) { Matrix wvp = pipeline.WorldMatrix * pipeline.ViewMatrix * pipeline.ProjectionMatrix; effect.SetValue("worldViewProj", wvp); // do passes effect.Technique = technique; effect.Begin(FX.None); effect.BeginPass(0); // render everything from the scheme scheme.RenderAtoms(false, false); scheme.RenderBonds(false, false); effect.EndPass(); effect.End(); }
public override void RenderFrame(GraphicsPipeline3D pipeline, MoleculeRenderingScheme scheme, bool alphaPass) { Effect cEffect; if (lod == 0) cEffect = effect1; else if (lod == 1) cEffect = effect2; else return; Matrix wvp = pipeline.WorldMatrix * pipeline.ViewMatrix * pipeline.ProjectionMatrix; Matrix iv = Matrix.Invert(pipeline.ViewMatrix); cEffect.SetValue("worldViewProj", wvp); cEffect.SetValue("viewInverse", iv); cEffect.SetValue("worldInverseTranspose", Matrix.TransposeMatrix(iv)); cEffect.SetValue("shininess", 3); cEffect.SetValue("diffuseTexture", testTexture); if (alphaPass) { cEffect.Technique = alphaTechnique; cEffect.Begin(FX.None); cEffect.BeginPass(0); scheme.RenderAtoms(false, false); cEffect.EndPass(); cEffect.End(); } else { // do light passes cEffect.Technique = technique; cEffect.Begin(FX.None); cEffect.BeginPass(0); //effect.SetValue("diffuseTexture", texture); foreach (NuGenSVisualLib.Rendering.Lighting.Light light in setup.lights) { if (!light.Enabled) continue; if (light is DirectionalLight) { DirectionalLight dLight = (DirectionalLight)light; cEffect.SetValue("lightDir", new Vector4(dLight.Direction.X, dLight.Direction.Y, dLight.Direction.Z, 1.0f)); cEffect.SetValue("lightColor", ColorValue.FromColor(dLight.Clr)); // render everything from the scheme scheme.RenderAtoms(false, false); if (scheme.LightBonds) scheme.RenderBonds(false, false); } } cEffect.EndPass(); cEffect.End(); } //if (!scheme.LightBonds) //{ // effect.Technique = lineTechnique; // effect.Begin(FX.None); // effect.BeginPass(0); // scheme.RenderBonds(); // effect.EndPass(); // effect.End(); //} //device.SetTexture(0, null); }