public override void Render() { if (fbo.Width != cam.Width || fbo.Height != cam.Height) { fbo.Width = cam.Width; fbo.Height = cam.Height; fbo.Init(); } fbo.Capture(); RenderManager.Renderer.Clear(true, true, false); renderManager.RenderBucketNormals(env, cam, RenderManager.Bucket.Opaque); renderManager.RenderBucketNormals(env, cam, RenderManager.Bucket.Transparent); fbo.Release(); texture = fbo.ColorTexture; }
public override void Update() { this.shadowMap0 = parent.ShadowCams[0].ShadowMap; this.shadowMap1 = parent.ShadowCams[1].ShadowMap; this.shadowMap2 = parent.ShadowCams[2].ShadowMap; this.shadowMap3 = parent.ShadowCams[3].ShadowMap; this.shadowMapViewProjTrans0 = parent.ShadowCams[0].ViewProjectionMatrix; this.shadowMapViewProjTrans1 = parent.ShadowCams[1].ViewProjectionMatrix; this.shadowMapViewProjTrans2 = parent.ShadowCams[2].ViewProjectionMatrix; this.shadowMapViewProjTrans3 = parent.ShadowCams[3].ViewProjectionMatrix; this.splits = parent.Splits; camMat.SetToLookAt(cam.Translation, cam.Translation.Add(new Vector3f(0, 0, -1)), cam.Up); camMat.MultiplyStore(cam.ProjectionMatrix); shader.SetUniform("u_camMat", camMat); Texture.ActiveTextureSlot(0); shadowMap0.Use(); Texture.ActiveTextureSlot(1); shadowMap1.Use(); Texture.ActiveTextureSlot(2); shadowMap2.Use(); Texture.ActiveTextureSlot(3); shadowMap3.Use(); Texture.ActiveTextureSlot(4); depthTexture.Use(); Texture.ActiveTextureSlot(5); colorTexture.Use(); Texture.ActiveTextureSlot(6); noiseMap.Use(); shader.SetUniform("u_shadowMap0", 0); shader.SetUniform("u_shadowMap1", 1); shader.SetUniform("u_shadowMap2", 2); shader.SetUniform("u_shadowMap3", 3); shader.SetUniform("u_depthTexture", 4); shader.SetUniform("u_sceneTexture", 5); shader.SetUniform("u_noiseTexture", 6); shader.SetUniform("u_shadowMapViewProjTrans0", shadowMapViewProjTrans0); shader.SetUniform("u_shadowMapViewProjTrans1", shadowMapViewProjTrans1); shader.SetUniform("u_shadowMapViewProjTrans2", shadowMapViewProjTrans2); shader.SetUniform("u_shadowMapViewProjTrans3", shadowMapViewProjTrans3); shader.SetUniform("u_cameraPosition", cam.Translation); shader.SetUniform("u_invViewProj", cam.InverseViewProjectionMatrix); shader.SetUniform("u_view", cam.ViewMatrix); shader.SetUniform("u_proj", cam.ProjectionMatrix); if (debugMode) { shader.SetUniform("B_debugMode", 1); } else { shader.SetUniform("B_debugMode", 0); } for (int i = 0; i < splits.Length; i++) { shader.SetUniform("splits[" + i + "]", splits[i]); } }
public ShadowPostFilter(ShadowMappingComponent parent) : base(SHADER_CODE) { this.parent = parent; noiseMap = AssetManager.LoadTexture(Assets.AssetManager.GetAppPath() + "\\textures\\noise.png"); }
public void SaveScreenToTexture(Camera cam, Texture toSaveTo) { toSaveTo.Use(); Renderer.CopyScreenToTexture2D(cam.Width, cam.Height); Texture2D.Clear(); }
public void RenderDepthTexture(Environment env, Camera cam) { if (depthFbo.Width != cam.Width || depthFbo.Height != cam.Height) { depthFbo.Width = cam.Width; depthFbo.Height = cam.Height; depthFbo.Init(); } depthFbo.Capture(); renderer.Clear(true, true, false); RenderBucketDepth(env, cam, Bucket.Opaque, DepthRenderMode.Depth); RenderBucketDepth(env, cam, Bucket.Transparent, DepthRenderMode.Depth); depthFbo.Release(); depthTexture = depthFbo.ColorTexture; }
public override void Init() { road = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road.jpg"); roadCorner = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road_corner.jpg"); curbModel = AssetManager.LoadModel(AssetManager.GetAppPath() + "\\models\\curb.obj"); curbCorner = AssetManager.LoadModel(AssetManager.GetAppPath() + "\\models\\curb_corner.obj"); Random rand = new Random(); int xAmt = rand.Next(2, 7), zAmt = rand.Next(2, 7), scaleX = rand.Next(10, 30), scaleZ = rand.Next(10, 30); int offset = 3; AddRoadCorner(new Line(new Vector3f(0, 0, -2), new Vector3f(0, 0, 0))); for (int x = 0; x <= xAmt; x++) { for (int i = 0; i < zAmt; i++) { AddRoad(new Line(new Vector3f(x * scaleX, 0, i * scaleZ), new Vector3f(x * scaleX, 0, (i + 1) * scaleZ - 2))); AddRoadCorner(new Line(new Vector3f(x * scaleX, 0, (i + 1) * scaleZ - 2), new Vector3f(x * scaleX, 0, (i + 1) * scaleZ))); if (x == 0) { // long bar Node curb2 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX - 1, 0, (i + 1) * scaleZ - 1); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curb2.SetLocalScale(new Vector3f(1, 1, scaleZ)); curbNode.AddChild(curb2); } else if (x == (xAmt - 1)) { Node curb2 = (Node)curbModel.Clone(); tmpVec.Set((x + 1) * scaleX + 1, 0, (i) * scaleZ - 1); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalScale(new Vector3f(1, 1, scaleZ)); curbNode.AddChild(curb2); } Node curb0 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX + 1, 0, i * scaleZ + 1); tmpVec.y = HeightRoad(tmpVec); curb0.SetLocalTranslation(tmpVec); curb0.SetLocalScale(new Vector3f(1, 1, scaleZ - offset - 1)); curbNode.AddChild(curb0); Node curb1 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX - 1, 0, (i + 1) * scaleZ - offset); tmpVec.y = HeightRoad(tmpVec); curb1.SetLocalTranslation(tmpVec); curb1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curb1.SetLocalScale(new Vector3f(1, 1, scaleZ - offset - 1)); curbNode.AddChild(curb1); if (x != 0) { Node curbCorner1 = (Node)curbCorner.Clone(); tmpVec.Set((x) * scaleX - 2, 0, (i + 1) * scaleZ - offset + 1); tmpVec.y = HeightRoad(tmpVec); curbCorner1.SetLocalTranslation(tmpVec); curbCorner1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curbNode.AddChild(curbCorner1); } if (x != xAmt) { Node curbCorner0 = (Node)curbCorner.Clone(); tmpVec.Set(x * scaleX + 2, 0, i * scaleZ); tmpVec.y = HeightRoad(tmpVec); curbCorner0.SetLocalTranslation(tmpVec); curbCorner0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 90)); curbNode.AddChild(curbCorner0); } } } for (int z = 0; z <= zAmt; z++) { for (int i = 0; i < xAmt; i++) { AddRoad(new Line(new Vector3f(i * scaleX + 1, 0, z * scaleZ - 1), new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ - 1))); AddRoadCorner(new Line(new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ - 1), new Vector3f((i + 1) * scaleX + 1, 0, z * scaleZ - 1))); // long pieces if (z == 0) { // long bar Node curb2 = (Node)curbModel.Clone(); tmpVec.Set(i * scaleX, 0, z * scaleZ - 2); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curb2.SetLocalScale(new Vector3f(scaleX, 1, 1)); curbNode.AddChild(curb2); } else if (z == (zAmt - 1)) { Node curb2 = (Node)curbModel.Clone(); tmpVec.Set((i + 1) * scaleX, 0, (z + 1) * scaleZ); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90 + 180)); curb2.SetLocalScale(new Vector3f(scaleX, 1, 1)); curbNode.AddChild(curb2); } Node curb0 = (Node)curbModel.Clone(); tmpVec.Set((i + 1) * scaleX - 2, 0, z * scaleZ); tmpVec.y = HeightRoad(tmpVec); curb0.SetLocalTranslation(tmpVec); curb0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 90)); curb0.SetLocalScale(new Vector3f(scaleX - offset - 1, 1, 1)); curbNode.AddChild(curb0); Node curb1 = (Node)curbModel.Clone(); tmpVec.Set((i) * scaleX + offset - 1, 0, z * scaleZ - 2); tmpVec.y = HeightRoad(tmpVec); curb1.SetLocalTranslation(tmpVec); curb1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curb1.SetLocalScale(new Vector3f(scaleX - offset - 1, 1, 1)); curbNode.AddChild(curb1); if (z != zAmt) { Node curbCorner0 = (Node)curbCorner.Clone(); Vector3f curbVec1 = new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ + 1); curbVec1.y = HeightRoad(curbVec1); curbCorner0.SetLocalTranslation(curbVec1); curbCorner0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curbNode.AddChild(curbCorner0); } if (z != 0) { Node curbCorner1 = (Node)curbCorner.Clone(); Vector3f curbVec1 = new Vector3f((i) * scaleX + offset - 2, 0, z * scaleZ - 3); curbVec1.y = HeightRoad(curbVec1); curbCorner1.SetLocalTranslation(curbVec1); curbCorner1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 360)); curbNode.AddChild(curbCorner1); } } } Geometry roadMerged = new Geometry(MeshUtil.MergeMeshes(roadNode)); Geometry curbMerged = new Geometry(MeshUtil.MergeMeshes(curbNode)); rootNode.AddChild(curbMerged); roadMerged.Material.SetValue(Material.MATERIAL_CULLENABLED, false); roadMerged.Material.SetValue(Material.TEXTURE_DIFFUSE, road); roadMerged.Material.SetValue(Material.SHININESS, 0.0f); Geometry roadCornerMerged = new Geometry(MeshUtil.MergeMeshes(roadCornerNode)); roadCornerMerged.Material.SetValue(Material.MATERIAL_CULLENABLED, false); roadCornerMerged.Material.SetValue(Material.TEXTURE_DIFFUSE, roadCorner); roadCornerMerged.Material.SetValue(Material.SHININESS, 0.0f); rootNode.AddChild(roadCornerMerged); rootNode.AddChild(roadMerged); /* addroad(new line(new vector3f(0, 0, 0), new vector3f(0, 0, 10))); AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(1, 0, 12))); AddRoad(new Line(new Vector3f(1, 0, 12), new Vector3f(5, 0, 12)));*/ /* for (int x = 0; x < 16; x ++) { AddRoad(new Line(new Vector3f((float)System.Math.Sin(x)*13, 0, (float)System.Math.Cos(x) * 13), new Vector3f((float)System.Math.Sin(x+1) * 13, 0, (float)System.Math.Cos(x+1) * 13))); } */ /* AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(-3, 0, 11))); AddRoad(new Line(new Vector3f(-3, 0, 11), new Vector3f(-4, 0, 12))); AddRoad(new Line(new Vector3f(-4, 0, 12), new Vector3f(-5, 0, 13))); AddRoad(new Line(new Vector3f(-5, 0, 13), new Vector3f(-6, 0, 14)));*/ // AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(10, 0, 10))); /* for (int i = 0; i < 4; i++) { Line myline = new Line(lastLine.To, lastLine.To.Add(new Vector3f(rand.Next(-15, 15),0, rand.Next(-15, 15)))); Geometry quad = new Geometry(QuadFromLine(myline)); quad.Material.SetValue(Material.MATERIAL_CULLENABLED, false); quad.Material.SetValue(Material.TEXTURE_DIFFUSE, road); quad.Material.SetValue(Material.SHININESS, 0.0f); lastLine = myline; rootNode.AddChild(quad); } */ }
public override void Init() { Environment.AmbientLight.Color.Set(0.4f, 0.25f, 0.1f, 1.0f); Environment.FogColor.Set(0.2f, 0.3f, 0.45f, 1.0f); Environment.DirectionalLight.Direction.Set(0.6f, 1, 0.6f).NormalizeStore(); Environment.DirectionalLight.Color.Set(1.0f, 0.85f, 0.65f, 1.0f); ((PerspectiveCamera)Camera).FieldOfView = 75; Camera.Far = 330; ShadowMappingComponent smc; RenderManager.AddComponent(smc = new ShadowMappingComponent(cam, Environment, new int[] { 2048, 1024 })); smc.RenderMode = ShadowMappingComponent.ShadowRenderMode.Forward; RenderManager.PostProcessor.PostFilters.Add(new FXAAFilter()); const float curb_scale_y = 0.4f; road = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road.jpg"); roadnrm = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road_nrm.jpg"); roadCorner = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road_corner.jpg"); roadCornernrm = AssetManager.LoadTexture(AssetManager.GetAppPath() + "\\textures\\road_corner_nrm.jpg"); curbModel = AssetManager.LoadModel(AssetManager.GetAppPath() + "\\models\\curb.obj"); curbCorner = AssetManager.LoadModel(AssetManager.GetAppPath() + "\\models\\curb_corner.obj"); curbCorner.SetLocalScale(new Vector3f(1, curb_scale_y, 1)); Random rand = new Random(); int xAmt = rand.Next(2, 7), zAmt = rand.Next(2, 7), scaleX = rand.Next(10, 30), scaleZ = rand.Next(10, 30); int offset = 3; AddRoadCorner(new Line(new Vector3f(0, 0, -2), new Vector3f(0, 0, 0))); for (int x = 0; x <= xAmt; x++) { for (int i = 0; i < zAmt; i++) { AddRoad(new Line(new Vector3f(x * scaleX, 0, i * scaleZ), new Vector3f(x * scaleX, 0, (i + 1) * scaleZ - 2))); AddRoadCorner(new Line(new Vector3f(x * scaleX, 0, (i + 1) * scaleZ - 2), new Vector3f(x * scaleX, 0, (i + 1) * scaleZ))); if (x == 0) { // long bar Node curb2 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX - 1, 0, (i + 1) * scaleZ - 1); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curb2.SetLocalScale(new Vector3f(1, curb_scale_y, scaleZ)); curbNode.AddChild(curb2); } else if (x == (xAmt - 1)) { Node curb2 = (Node)curbModel.Clone(); tmpVec.Set((x + 1) * scaleX + 1, 0, (i) * scaleZ - 1); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalScale(new Vector3f(1, curb_scale_y, scaleZ)); curbNode.AddChild(curb2); } Node curb0 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX + 1, 0, i * scaleZ + 1); tmpVec.y = HeightRoad(tmpVec); curb0.SetLocalTranslation(tmpVec); curb0.SetLocalScale(new Vector3f(1, curb_scale_y, scaleZ - offset - 1)); curbNode.AddChild(curb0); Node curb1 = (Node)curbModel.Clone(); tmpVec.Set(x * scaleX - 1, 0, (i + 1) * scaleZ - offset); tmpVec.y = HeightRoad(tmpVec); curb1.SetLocalTranslation(tmpVec); curb1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curb1.SetLocalScale(new Vector3f(1, curb_scale_y, scaleZ - offset - 1)); curbNode.AddChild(curb1); if (x != 0) { Node curbCorner1 = (Node)curbCorner.Clone(); tmpVec.Set((x) * scaleX - 2, 0, (i + 1) * scaleZ - offset + 1); tmpVec.y = HeightRoad(tmpVec); curbCorner1.SetLocalTranslation(tmpVec); curbCorner1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curbNode.AddChild(curbCorner1); } if (x != xAmt) { Node curbCorner0 = (Node)curbCorner.Clone(); tmpVec.Set(x * scaleX + 2, 0, i * scaleZ); tmpVec.y = HeightRoad(tmpVec); curbCorner0.SetLocalTranslation(tmpVec); curbCorner0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 90)); curbNode.AddChild(curbCorner0); } } } for (int z = 0; z <= zAmt; z++) { for (int i = 0; i < xAmt; i++) { AddRoad(new Line(new Vector3f(i * scaleX + 1, 0, z * scaleZ - 1), new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ - 1))); AddRoadCorner(new Line(new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ - 1), new Vector3f((i + 1) * scaleX + 1, 0, z * scaleZ - 1))); // long pieces if (z == 0) { // long bar Node curb2 = (Node)curbModel.Clone(); tmpVec.Set(i * scaleX, 0, z * scaleZ - 2); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curb2.SetLocalScale(new Vector3f(scaleX, curb_scale_y, 1)); curbNode.AddChild(curb2); } else if (z == (zAmt - 1)) { Node curb2 = (Node)curbModel.Clone(); tmpVec.Set((i + 1) * scaleX, 0, (z + 1) * scaleZ); tmpVec.y = HeightRoad(tmpVec); curb2.SetLocalTranslation(tmpVec); curb2.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90 + 180)); curb2.SetLocalScale(new Vector3f(scaleX, curb_scale_y, 1)); curbNode.AddChild(curb2); } Node curb0 = (Node)curbModel.Clone(); tmpVec.Set((i + 1) * scaleX - 2, 0, z * scaleZ); tmpVec.y = HeightRoad(tmpVec); curb0.SetLocalTranslation(tmpVec); curb0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 90)); curb0.SetLocalScale(new Vector3f(scaleX - offset - 1, curb_scale_y, 1)); curbNode.AddChild(curb0); Node curb1 = (Node)curbModel.Clone(); tmpVec.Set((i) * scaleX + offset - 1, 0, z * scaleZ - 2); tmpVec.y = HeightRoad(tmpVec); curb1.SetLocalTranslation(tmpVec); curb1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180 + 90)); curb1.SetLocalScale(new Vector3f(scaleX - offset - 1, curb_scale_y, 1)); curbNode.AddChild(curb1); if (z != zAmt) { Node curbCorner0 = (Node)curbCorner.Clone(); Vector3f curbVec1 = new Vector3f((i + 1) * scaleX - 1, 0, z * scaleZ + 1); curbVec1.y = HeightRoad(curbVec1); curbCorner0.SetLocalTranslation(curbVec1); curbCorner0.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 180)); curbNode.AddChild(curbCorner0); } if (z != 0) { Node curbCorner1 = (Node)curbCorner.Clone(); Vector3f curbVec1 = new Vector3f((i) * scaleX + offset - 2, 0, z * scaleZ - 3); curbVec1.y = HeightRoad(curbVec1); curbCorner1.SetLocalTranslation(curbVec1); curbCorner1.SetLocalRotation(new Quaternion().SetFromAxis(Vector3f.UnitY, 360)); curbNode.AddChild(curbCorner1); } } } Geometry roadMerged = new Geometry(MeshUtil.MergeMeshes(roadNode)); Geometry curbMerged = new Geometry(MeshUtil.MergeMeshes(curbNode)); rootNode.AddChild(curbMerged); roadMerged.Material.SetValue(Material.MATERIAL_CULLENABLED, false); roadMerged.Material.SetValue(Material.TEXTURE_DIFFUSE, road); roadMerged.Material.SetValue(Material.TEXTURE_NORMAL, roadnrm); roadMerged.Material.SetValue(Material.SHININESS, 0.3f); roadMerged.Material.SetValue(Material.ROUGHNESS, 0.3f); Geometry roadCornerMerged = new Geometry(MeshUtil.MergeMeshes(roadCornerNode)); roadCornerMerged.Material.SetValue(Material.MATERIAL_CULLENABLED, false); roadCornerMerged.Material.SetValue(Material.TEXTURE_DIFFUSE, roadCorner); roadCornerMerged.Material.SetValue(Material.TEXTURE_NORMAL, roadCornernrm); roadCornerMerged.Material.SetValue(Material.SHININESS, 0.3f); roadCornerMerged.Material.SetValue(Material.ROUGHNESS, 0.3f); rootNode.AddChild(roadCornerMerged); rootNode.AddChild(roadMerged); /* addroad(new line(new vector3f(0, 0, 0), new vector3f(0, 0, 10))); AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(1, 0, 12))); AddRoad(new Line(new Vector3f(1, 0, 12), new Vector3f(5, 0, 12)));*/ /* for (int x = 0; x < 16; x ++) { AddRoad(new Line(new Vector3f((float)System.Math.Sin(x)*13, 0, (float)System.Math.Cos(x) * 13), new Vector3f((float)System.Math.Sin(x+1) * 13, 0, (float)System.Math.Cos(x+1) * 13))); } */ /* AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(-3, 0, 11))); AddRoad(new Line(new Vector3f(-3, 0, 11), new Vector3f(-4, 0, 12))); AddRoad(new Line(new Vector3f(-4, 0, 12), new Vector3f(-5, 0, 13))); AddRoad(new Line(new Vector3f(-5, 0, 13), new Vector3f(-6, 0, 14)));*/ // AddRoad(new Line(new Vector3f(0, 0, 10), new Vector3f(10, 0, 10))); /* for (int i = 0; i < 4; i++) { Line myline = new Line(lastLine.To, lastLine.To.Add(new Vector3f(rand.Next(-15, 15),0, rand.Next(-15, 15)))); Geometry quad = new Geometry(QuadFromLine(myline)); quad.Material.SetValue(Material.MATERIAL_CULLENABLED, false); quad.Material.SetValue(Material.TEXTURE_DIFFUSE, road); quad.Material.SetValue(Material.SHININESS, 0.0f); lastLine = myline; rootNode.AddChild(quad); } */ }
public abstract void TextureWrapCube(Texture.WrapMode r, Texture.WrapMode s, Texture.WrapMode t);
public abstract void TextureWrap2D(Texture.WrapMode s, Texture.WrapMode t);