protected override void initEffect(ContentManager ctx) { if (effect == null) { effect = new PhongShader(ctx); } }
public void SetShader(ShaderList shaderList) { if (shaderList == ShaderList.Lamp) { shader = new LampShader(); isLight = true; } if (shaderList == ShaderList.Phong) { shader = new PhongShader(); isLight = false; } }
/// <summary> /// Gets a string representing a value. /// </summary> /// <param name="Value">Value</param> /// <returns>Expression string.</returns> public string GetString(object Value) { PhongShader Shader = (PhongShader)Value; StringBuilder sb = new StringBuilder(); sb.Append("PhongShader("); sb.Append(Expression.ToString(Shader.Material)); sb.Append(','); sb.Append(Expression.ToString(Shader.Ambient)); sb.Append(","); sb.Append(Expression.ToString(Shader.Sources)); sb.Append(')'); return sb.ToString(); }
public static void AddLighting(PhongShader effect) { var currentIndex = 0; var colors = new[] { new Vector3(1.0f, 0, 0), new Vector3(1.0f, 0.25f, 0), new Vector3(1, 0.5f, 0), new Vector3(1, 0.75f, 0), new Vector3(1, 1, 0), new Vector3(1, 0.75f, 0), new Vector3(1, 0.5f, 0), new Vector3(1, 0.25f, 0), }; // set up lights effect.LightPosition = new[] { DirectLightDirection, PointLightPosition }; effect.La = new[] { DirectLightLa, PointLightLa }; effect.Ld = new[] { DirectLightLd, PointLightLd }; effect.Ls = new[] { DirectLightLs, PointLightLs }; var t = new Timer() { Interval = COLOR_INTERVAL, AutoReset = true, }; t.Elapsed += (o, e) => { currentIndex++; currentIndex %= colors.Length; effect.Ld = new[] { DirectLightLd, colors[currentIndex] }; }; t.Start(); effect.IsDirect = new[] { 1.0f, 0.0f }; }
private void DrawThreePlanes(Canvas3D Canvas) { PhongShader Shader = new PhongShader( new PhongMaterial(1, 2, 0, 10), new PhongIntensity(64, 64, 64, 255), new PhongLightSource( new PhongIntensity(255, 0, 0, 255), new PhongIntensity(255, 255, 255, 255), new Vector3(200, 200, 100))); //new Vector3(400, 400, 50))); Canvas.Polygon(new Vector4[] { new Vector4(-200, 200, 300, 1), new Vector4(200, 200, 300, 1), new Vector4(200, -200, 300, 1), new Vector4(-200, -200, 300, 1) }, Shader); Canvas.Polygon(new Vector4[] { new Vector4(-200, 200, 100, 1), new Vector4(-200, 200, 300, 1), new Vector4(-200, -200, 300, 1), new Vector4(-200, -200, 100, 1) }, Shader); Canvas.Polygon(new Vector4[] { new Vector4(-200, -200, 300, 1), new Vector4(200, -200, 300, 1), new Vector4(200, -200, 100, 1), new Vector4(-200, -200, 100, 1) }, Shader); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); inputManager = new InputManager(this, camera); phongShader = new PhongShader(FileManager.getMediaFile("phongVS.glsl"), FileManager.getMediaFile("phongFS.glsl")); postProcessShader = new PostProcessShader(FileManager.getMediaFile("postProcessVS.glsl"), FileManager.getMediaFile("postProcessFS.glsl")); volumetricLightingShader = new VolumetricLightingShader(FileManager.getMediaFile("volumetricLightingVS.glsl"), FileManager.getMediaFile("volumetricLightingFS.glsl")); blurShader = new PostProcessShader(FileManager.getMediaFile("gaussianBlurVS.glsl"), FileManager.getMediaFile("gaussianBlurFS.glsl")); blurShader2 = new PostProcessShader(FileManager.getMediaFile("gaussianBlurVS.glsl"), FileManager.getMediaFile("gaussianBlurFS.glsl")); shadowMapShader = new DepthMapShader(FileManager.getMediaFile("depthMapVS.glsl"), FileManager.getMediaFile("depthMapFS.glsl")); depthMapShader = new DepthMapShader(FileManager.getMediaFile("depthMapVS.glsl"), FileManager.getMediaFile("depthMapFS.glsl"), screenWidth, screenHeight); shadowMappingShader = new ShadowMappingShader(FileManager.getMediaFile("shadowMappingVS.glsl"), FileManager.getMediaFile("shadowMappingFS.glsl")); blackShader = new PhongShader(FileManager.getMediaFile("blackVS.glsl"), FileManager.getMediaFile("blackFS.glsl")); whiteShader = new PhongShader(FileManager.getMediaFile("whiteVS.glsl"), FileManager.getMediaFile("whiteFS.glsl")); // Load Models sun.loadModelFromFile("sun.3ds"); sun.position = new Vector3(20f, 30f, -70f); sun.scale = new Vector3(2f); sun.update(); monkey.loadModelFromFile("monkey.3ds"); monkey.position = new Vector3(20f, 4f, 2f); monkey.update(); monkey.diffuse = new Vector3(0.1f, 0.1f, 0.8f); monkey.ambient = new Vector3(0.05f, 0.05f, 0.4f); magicBox.loadModelFromFile("magicBox.3ds"); magicBox.position = new Vector3(20f, 6f, 0f); magicBox.scale = new Vector3(5f); magicBox.update(); magicBox.diffuse = new Vector3(0.2f, 0.2f, 0f); magicBox.ambient = new Vector3(0.1f, 0.1f, 0f); // No Specular for the magicBox magicBox.specular = new Vector3(0f); magicBox.shininess = 1f; //Load floor floor.loadModelFromFile("floor.3ds"); floor.position = new Vector3(0f, 0f, -10f); // Scale the Floor (and the texCoords) floor.scale = new Vector3(1000f, 1f, 1000f); //floor.scale = new Vector3(0.05f, 0.05f, 0.05f); // floor.rotation = new Vector3(45, 0, 0); for (int i = 0; i < floor.mesh.textureCoordinates.Count; i++) floor.mesh.textureCoordinates[i] *= 200f; floor.mesh.updateTextureCoordinates(); floor.update(); // No Specular for floor floor.specular = new Vector3(0f); floor.shininess = 1f; //Load trees Random random = new Random(); for (int x = 0; x < 2; x++) { for (int z = 0; z < 10; z++) { WorldObject tree = new WorldObject(); tree.loadModelFromFile("tree.3ds"); tree.position = new Vector3((x * 10f) - 5f, 0f, -z * 6f); tree.scale = new Vector3(2f); tree.rotation = new Vector3(0f, (float)(random.NextDouble() * Math.PI * 2.0), 0f); tree.update(); tree.diffuse = new Vector3(0.6f, 0.3f, 0f); tree.ambient = new Vector3(0.3f, 0.15f, 0f); trees.Add(tree); } } // Move initial Position of the Camera away from origin camera.Position += new Vector3(10f, 10f, 10f); // Hide Mouse Cursor CursorVisible = false; }