public ModelBatch(RenderContext context, ShaderProvider shaderProvider, RenderableSorter sorter) { this.sorter = sorter ?? new DefaultRenderableSorter(); this.ownContext = (context == null); this.context = context ?? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)); this.shaderProvider = shaderProvider ?? new DefaultShaderProvider(); }
private void SetContextStates() { InputElement[] inputElements = { new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0), new InputElement("NORMAL", 0, Format.R32G32B32A32_Float, 16, 0) }; layout = new InputLayout(device, ShaderProvider.GetSignatureFromShader("Shader/GoL.fx"), inputElements); deviceContext.InputAssembler.InputLayout = layout; deviceContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; deviceContext.OutputMerger.BlendState = States.Instance.blendDisabled; deviceContext.OutputMerger.DepthStencilState = States.Instance.depthEnabledStencilDisabledWriteEnabled; deviceContext.Rasterizer.SetViewports(new Viewport(0, 0, RenderForm.ClientSize.Width, RenderForm.ClientSize.Height)); }
public static void AddAxesToNode(ShaderProvider provider, INode node) { var x = new LineRenderer(provider.DefaultWorldShader); x.SetLine(Vector3.Zero, Vector3.UnitX * _scale); x.Color = Color4.Red; var y = new LineRenderer(provider.DefaultWorldShader); y.SetLine(Vector3.Zero, Vector3.UnitY * _scale); y.Color = Color4.Green; var z = new LineRenderer(provider.DefaultWorldShader); z.SetLine(Vector3.Zero, Vector3.UnitZ * _scale); z.Color = Color4.Blue; x.LineWidth = y.LineWidth = z.LineWidth = 1.5f; node.AttachComponents(x, y, z); }
public SpriteBatch() { ps = ShaderProvider.CompilePS("Shader/Sprite2D.fx"); vs = ShaderProvider.CompileVS("Shader/Sprite2D.fx"); InputElement[] inputElements = { new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0), new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0) }; layoutSprite = new InputLayout(RenderFrame.Instance.device, ShaderProvider.GetSignatureFromShader("Shader/Sprite2D.fx"), inputElements); tex = Texture2D.FromFile(RenderFrame.Instance.device, @".\Content\Font.png"); res = new ShaderResourceView(RenderFrame.Instance.device, tex); textVS = ShaderProvider.CompileVS("Shader/Font.fx"); textPS = ShaderProvider.CompilePS("Shader/Font.fx"); layoutFont = new InputLayout(RenderFrame.Instance.device, ShaderProvider.GetSignatureFromShader("Shader/Font.fx"), inputElements); }
public JellySimulation(SceneManager sceneManager, ShaderProvider shaderProvider) { _sceneManager = sceneManager; _shaderProvider = shaderProvider; ControlFrame = new Node(new Transform(Vector3.Zero, Quaternion.Identity /* Quaternion.FromEulerAngles(1.0f, 1.0f, 0.0f)*/, Vector3.One), "controlFrame"); ControlFrameRenderer = new LineRenderer(shaderProvider.DefaultShader); var jellyControlFrame = new JellyControlFrame(ControlFrameRenderer, 1.0); ControlFrame.AttachComponents(ControlFrameRenderer, jellyControlFrame); Jelly = new Node(new Transform(Vector3.Zero, Quaternion.Identity, Vector3.One), "jelly"); var boundingBoxRenderer = new LineRenderer(shaderProvider.DefaultShader); var jellyBoundingBox = new JellyBoundingBox(boundingBoxRenderer, 5.0); var jellyData = new JellyData(); JellyRenderer = new DynamicPatchRenderer(shaderProvider.SurfaceShaderBezier, new Mesh(VertexLayout.Type.Position), jellyData); JellyController = new JellyController(jellyControlFrame); WireframeRenderer = new LineRenderer(shaderProvider.DefaultShader); var jellyCPVisualizer = new JellyControlPointVisualizer(WireframeRenderer); Jelly.AttachComponents(jellyData, JellyRenderer, JellyController, boundingBoxRenderer, jellyBoundingBox, WireframeRenderer, jellyCPVisualizer); _sceneManager.CurrentScene.AttachChild(Jelly); _sceneManager.CurrentScene.AttachChild(ControlFrame); var meshData = MeshLoader.LoadObj("monkey2.obj"); var monkey = new Node(new Transform(Vector3.Zero, Quaternion.Identity, Vector3.One), "monkey"); var jellyMesh = new JellyMesh(jellyData, meshData.positions, meshData.normals); JellyMeshRenderer = new DynamicMeshRenderer(shaderProvider.PhongShader, meshData.mesh); monkey.AttachComponents(JellyMeshRenderer, jellyMesh); _sceneManager.CurrentScene.AttachChild(monkey); }