public void Apply(ObjectMesh objectMesh) { CameraConstant.Set(Camera); LightDirectionConstant.Set(LightDirection); LightDirection2Constant.Set(LightDirection2); LightColorConstant.Set(LightColor); LightColor2Constant.Set(LightColor2); ApplyInstanceContants(objectMesh); Shader.Apply(); }
public void Apply() { ApplyGlobalContants(); ApplyInstanceContants(); ApplyInstancingContants(); Shader.Apply(); }
public void Apply(InstanceObjectMesh instanceObjectMesh) { CameraConstant.Set(Camera); ApplyInstanceContants(instanceObjectMesh); Shader.Apply(); }
public unsafe void Flush() { if (buffer.Size == 0) { return; } primitiveShader.Apply(); primitiveShader.SetUniform("mvp", camera.ViewProjection); glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null); }
public void Draw(Shader shader) { shader.Apply(InputLayout); Device.NativeDeviceContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; Device.NativeDeviceContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, Stride, 0)); Device.NativeDeviceContext.InputAssembler.SetIndexBuffer(IndexBuffer, Format.R32_UInt, 0); foreach (var segment in Segments) { shader.Prepare(this, segment); Device.NativeDeviceContext.DrawIndexed(segment.Count * 3, segment.Offset * 3, 0); } }
public unsafe void Flush() { if (buffer.Size == 0) { return; } shader.Apply(); shader.SetUniform("mvp", camera.ViewProjection); glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null); Statistics.Increment(RenderKeys.DrawCalls); }
public void DrawTargets() { modelTarget.Apply(); // Note that by this point, the scene's shadow map should have already been computed. var renderer = Scene.Renderer; renderer.VpMatrix = viewOrientation; renderer.Draw(); shader.Apply(); Sky.Target.Bind(0); modelTarget.Bind(1); }
public override void Draw() { base.Draw(); GraphicsDevice.Debug.PushGroup("Test"); GraphicsDevice.Clear(Color.Black); GraphicsDevice.Debug.Marker("Binding Mesh"); GraphicsDevice.BindBuffer(vertexBuffer); GraphicsDevice.BindBuffer(indexBuffer); Shader.Apply(); GraphicsDevice.DrawIndexed(indexBuffer.Size, 1, 0, 0, 0); GraphicsDevice.Debug.PopGroup(); }
protected override void CustomRender() { Matrix viewProj = Matrix.Multiply(mView, mProj); mDeviceContext.ClearDepthStencilView(mDepthView, DepthStencilClearFlags.Depth, 1.0f, 0); mDeviceContext.ClearRenderTargetView(mRenderView, Color.Black); float currentTime = mClock.ElapsedMilliseconds / 1000.0f; Matrix worldViewProj = Matrix.RotationX(currentTime) * Matrix.RotationY(currentTime * 2.0f) * Matrix.RotationZ(currentTime * 0.7f) * viewProj; worldViewProj.Transpose(); mShader.SetShaderParam(mDevice, worldViewProj, Vector3.Zero, Vector4.Zero, Vector4.Zero); mShader.Apply(mDevice); mCube.Draw(mDevice); }
public void Draw(Camera3D camera) { glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, shadowMapTarget.Id); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, defaultTexture.Id); mat4[] bones = { bone1, bone2 }; skeletalShader.Apply(); skeletalShader.SetUniform("lightDirection", lightDirection); skeletalShader.SetUniform("lightColor", Color.White.ToVec3()); skeletalShader.SetUniform("ambientIntensity", 0.1f); skeletalShader.SetUniform("bones[0]", bones); // See http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/. mat4 biasMatrix = new mat4 ( 0.5f, 0.0f, 0.0f, 0, 0.0f, 0.5f, 0.0f, 0, 0.0f, 0.0f, 0.5f, 0, 0.5f, 0.5f, 0.5f, 1 ); mat4 cameraMatrix = camera.ViewProjection; mat4 world = model.WorldMatrix; quat orientation = model.Orientation; skeletalShader.SetUniform("orientation", orientation.ToMat4); skeletalShader.SetUniform("mvp", cameraMatrix * world); skeletalShader.SetUniform("lightBiasMatrix", biasMatrix * lightMatrix * world); Draw(model.Mesh); }
public void Draw(Camera3D camera) { glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, shadowMapTarget.Id); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, defaultTexture.Id); modelShader.Apply(); modelShader.SetUniform("lightDirection", LightDirection); modelShader.SetUniform("lightColor", LightColor.ToVec3()); modelShader.SetUniform("ambientIntensity", AmbientIntensity); // See http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/. mat4 biasMatrix = new mat4 ( 0.5f, 0.0f, 0.0f, 0, 0.0f, 0.5f, 0.0f, 0, 0.0f, 0.0f, 0.5f, 0, 0.5f, 0.5f, 0.5f, 1 ); mat4 cameraMatrix = camera.ViewProjection; foreach (ModelHandle handle in handles) { Model model = handle.Model; mat4 world = model.WorldMatrix; quat orientation = model.Orientation; modelShader.SetUniform("orientation", orientation.ToMat4); modelShader.SetUniform("mvp", cameraMatrix * world); modelShader.SetUniform("lightBiasMatrix", biasMatrix * lightMatrix * world); Draw(handle); } }
public void DrawTargets() { const int OrthoSize = 8; glDisable(GL_CULL_FACE); mat4 lightView = mat4.LookAt(-LightDirection * 10, vec3.Zero, vec3.UnitY); mat4 lightProjection = mat4.Ortho(-OrthoSize, OrthoSize, -OrthoSize, OrthoSize, 0.1f, 100); lightMatrix = lightProjection * lightView; shadowMapTarget.Apply(); shadowMapShader.Apply(); foreach (ModelHandle handle in handles) { Model model = handle.Model; model.RecomputeWorldMatrix(); shadowMapShader.SetUniform("lightMatrix", lightMatrix * model.WorldMatrix); Draw(handle); } }
async void beginexecblock() { if ((await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFilesAsync()).Count == 0) { await ApplicationData.Current.RoamingFolder.CreateFileAsync("testfile.txt"); ApplicationData.Current.SignalDataChanged(); Windows.UI.Popups.MessageDialog tdlg = new Windows.UI.Popups.MessageDialog("Roaming file creation success", "Sync status"); await tdlg.ShowAsync(); } try { DateTime started = DateTime.Now; RenderContext mtext = new RenderContext(); maincontext = mtext; StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation; StorageFile file = await folder.GetFileAsync("DXInteropLib\\VertexShader.cso"); var stream = (await file.OpenAsync(FileAccessMode.Read)); Windows.Storage.Streams.DataReader mreader = new Windows.Storage.Streams.DataReader(stream.GetInputStreamAt(0)); byte[] dgram = new byte[file.Size]; await mreader.LoadAsync((uint)dgram.Length); mreader.ReadBytes(dgram); file = await folder.GetFileAsync("DXInteropLib\\PixelShader.cso"); stream = await file.OpenAsync(FileAccessMode.Read); mreader = new Windows.Storage.Streams.DataReader(stream.GetInputStreamAt(0)); byte[] mgram = new byte[file.Size]; await mreader.LoadAsync((uint)file.Size); mreader.ReadBytes(mgram); try { defaultshader = mtext.CreateShader(dgram, mgram); mtext.InitializeLayout(dgram); defaultshader.Apply(); mtext.OnRenderFrame += onrenderframe; } catch (Exception er) { Windows.UI.Popups.MessageDialog mdlg = new Windows.UI.Popups.MessageDialog(er.ToString(),"Fatal error"); mdlg.ShowAsync().Start(); } IStorageFile[] files = (await folder.GetFilesAsync()).ToArray(); bool founddata = false; foreach (IStorageFile et in files) { if (et.FileName.Contains("rawimage.dat")) { stream = await et.OpenAsync(FileAccessMode.Read); founddata = true; } } int width; int height; byte[] rawdata; if (!founddata) { file = await folder.GetFileAsync("TestProgram\\test.png"); stream = await file.OpenAsync(FileAccessMode.Read); var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream); var pixeldata = await decoder.GetPixelDataAsync(Windows.Graphics.Imaging.BitmapPixelFormat.Rgba8, Windows.Graphics.Imaging.BitmapAlphaMode.Straight, new Windows.Graphics.Imaging.BitmapTransform(), Windows.Graphics.Imaging.ExifOrientationMode.IgnoreExifOrientation, Windows.Graphics.Imaging.ColorManagementMode.DoNotColorManage); width = (int)decoder.PixelWidth; height = (int)decoder.PixelHeight; rawdata = pixeldata.DetachPixelData(); file = await folder.CreateFileAsync("rawimage.dat"); stream = (await file.OpenAsync(FileAccessMode.ReadWrite)); var realstream = stream.GetOutputStreamAt(0); DataWriter mwriter = new DataWriter(realstream); mwriter.WriteInt32(width); mwriter.WriteInt32(height); mwriter.WriteBytes(rawdata); await mwriter.StoreAsync(); await realstream.FlushAsync(); } else { DataReader treader = new DataReader(stream.GetInputStreamAt(0)); await treader.LoadAsync((uint)stream.Size); rawdata = new byte[stream.Size-(sizeof(int)*2)]; width = treader.ReadInt32(); height = treader.ReadInt32(); treader.ReadBytes(rawdata); } Texture2D mtex = maincontext.createTexture2D(rawdata, width, height); List<VertexPositionNormalTexture> triangle = new List<VertexPositionNormalTexture>(); triangle.Add(new VertexPositionNormalTexture(new Vector3(-.5f,-.5f,0),new Vector3(1,1,1),new Vector2(0,0))); triangle.Add(new VertexPositionNormalTexture(new Vector3(0,0.5f,0),new Vector3(1,1,1),new Vector2(1,0))); triangle.Add(new VertexPositionNormalTexture(new Vector3(.5f,-0.5f,0),new Vector3(1,1,1),new Vector2(1,1))); byte[] gpudata = VertexPositionNormalTexture.Serialize(triangle.ToArray()); VertexBuffer mbuffer = maincontext.createVertexBuffer(gpudata,VertexPositionNormalTexture.Size); mbuffer.Apply(VertexPositionNormalTexture.Size); vertcount = 3; Windows.UI.Popups.MessageDialog tdlg = new Windows.UI.Popups.MessageDialog("Unit tests successfully completed\nShader creation: Success\nTexture load: Success\nVertex buffer creation: Success\nTime:"+(DateTime.Now-started).ToString(), "Results"); tdlg.ShowAsync().Start(); } catch (Exception er) { Windows.UI.Popups.MessageDialog tdlg = new Windows.UI.Popups.MessageDialog(er.ToString(), "Fatal error"); tdlg.ShowAsync().Start(); } }