bring docs up to date

This commit is contained in:
2020-02-20 23:56:15 -08:00
parent 438f96eb32
commit 99ed07e070
64 changed files with 345 additions and 288 deletions

View File

@@ -584,6 +584,8 @@
<span id="584">584</span>
<span id="585">585</span>
<span id="586">586</span>
<span id="587">587</span>
<span id="588">588</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">command_buffer</span>::{<span class="ident">AutoCommandBufferBuilder</span>, <span class="ident">DynamicState</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::{<span class="ident">HashMap</span>, <span class="ident">HashSet</span>};
@@ -605,7 +607,7 @@
<span class="kw">use</span> <span class="ident">winit</span>::<span class="ident">Window</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">viewport</span>::<span class="ident">Viewport</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">descriptor</span>::<span class="ident">descriptor</span>::<span class="ident">DescriptorDescTy</span>::<span class="ident">TexelBuffer</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrameTest</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrame</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">hash</span>::<span class="ident">Hash</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">depth_stencil</span>::{<span class="ident">StencilFaceFlags</span>, <span class="ident">DynamicStencilValue</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">memory</span>::<span class="ident">pool</span>::<span class="ident">PotentialDedicatedAllocation</span>::<span class="ident">Generic</span>;
@@ -613,14 +615,15 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">fs</span>::<span class="ident">File</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Read</span>;
<span class="kw">use</span> <span class="ident">rusttype</span>::{<span class="ident">Font</span>, <span class="ident">PositionedGlyph</span>, <span class="ident">Scale</span>, <span class="ident">Rect</span>, <span class="ident">point</span>, <span class="ident">GlyphId</span>, <span class="ident">Line</span>, <span class="ident">Curve</span>, <span class="ident">Segment</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::<span class="ident">VertexDefinition</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">VertexDefinition</span>, <span class="ident">Vertex</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">dynamic_vertex</span>::<span class="ident">RuntimeVertexDef</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CompiledShaderHandle</span>, <span class="ident">Handle</span>, <span class="ident">DrawableHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">gpu_buffers</span>::{<span class="ident">CanvasImage</span>, <span class="ident">CanvasTexture</span>, <span class="ident">CanvasFont</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">shader_common</span>::<span class="ident">CompiledGraphicsPipeline</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">shader_common</span>::<span class="ident">CompiledShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">generic_shader</span>::<span class="ident">GenericShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">VertexTypes</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">TextVertex3D</span>, <span class="ident">TextureVertex2D</span>, <span class="ident">ImageVertex2D</span>, <span class="ident">ColorVertex2D</span>, <span class="ident">CanvasFrameAllocation</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">TextVertex3D</span>, <span class="ident">TextureVertex3D</span>, <span class="ident">ImageVertex3D</span>, <span class="ident">ColorVertex3D</span>, <span class="ident">CanvasFrameAllocation</span>};
<span class="kw">use</span> <span class="ident">shade_runner</span>::<span class="ident">Input</span>;
<span class="doccomment">/// Canvas state is used for storage of texture and image buffers in addition to vertex buffers</span>
@@ -632,15 +635,15 @@
<span class="doccomment">/// Generated during new()</span>
<span class="ident">sampler</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Sampler</span><span class="op">&gt;</span>,
<span class="comment">// hold the image, texture, and Fonts the same was as we do CompuState</span>
<span class="doccomment">/// hold the image, texture, and Fonts the same was as we do CompuState</span>
<span class="ident">image_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImage</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">texture_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTexture</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">font_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFont</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">// Compiled Graphics pipelines have a handle which self describe their position in this vector</span>
<span class="ident">shader_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">CompiledGraphicsPipeline</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="doccomment">/// Compiled Graphics pipelines have a handle which self describe their position in this vector</span>
<span class="ident">shader_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">CompiledShader</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">// Looks like we gotta hold onto the queue for managing textures</span>
<span class="doccomment">/// Looks like we gotta hold onto the queue for managing textures</span>
<span class="ident">queue</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Queue</span><span class="op">&gt;</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>,
@@ -842,16 +845,17 @@
<span class="doccomment">/// Load and Compile a shader with the filename at resources/shaders</span>
<span class="doccomment">/// Takes physical and capabilities as we don&#39;t store that in Canvas</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">load_shader</span><span class="op">&lt;</span><span class="ident">T</span>: <span class="lifetime">&#39;static</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">load_shader</span><span class="op">&lt;</span><span class="ident">T</span>: <span class="lifetime">&#39;static</span>, <span class="ident">V</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="ident">physical</span>: <span class="ident">PhysicalDevice</span>,
<span class="ident">capabilities</span>: <span class="ident">Capabilities</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>
<span class="kw">where</span> <span class="ident">T</span>: <span class="ident">CompiledGraphicsPipeline</span> {
<span class="kw">where</span> <span class="ident">T</span>: <span class="ident">CompiledShader</span>, <span class="ident">V</span>: <span class="ident">Vertex</span> {
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">CompiledShaderHandle</span> {
<span class="ident">handle</span>: <span class="self">self</span>.<span class="ident">shader_buffers</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u32</span>
});
<span class="kw">let</span> <span class="ident">shader</span>: <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">CompiledGraphicsPipeline</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">T</span>::<span class="ident">new</span>(
<span class="kw">let</span> <span class="ident">shader</span>: <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">CompiledShader</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">T</span>::<span class="ident">new</span>::<span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>(
<span class="ident">filename</span>.<span class="ident">clone</span>(),
<span class="self">self</span>.<span class="ident">device</span>.<span class="ident">clone</span>(),
<span class="ident">handle</span>.<span class="ident">clone</span>(),
@@ -972,12 +976,12 @@
<span class="ident">o</span>
}
<span class="doccomment">/// Consume and allocated the canvas frame data to the GPU</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">allocate</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">canvas_frame</span>: <span class="ident">CanvasFrameTest</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">CanvasFrameAllocation</span> {
<span class="doccomment">/// Consume and allocate the canvas frame data to the GPU</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">allocate</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">canvas_frame</span>: <span class="ident">CanvasFrame</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">CanvasFrameAllocation</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">colored_vertex_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex2D</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">textured_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex2D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">image_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex2D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">colored_vertex_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex3D</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">textured_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex3D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">image_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex3D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">text_instances</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextVertex3D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">for</span> <span class="ident">value</span> <span class="kw">in</span> <span class="ident">canvas_frame</span>.<span class="ident">map</span> {
@@ -1062,7 +1066,7 @@
<span class="comment">// This looks a little weird as colored_vertex_buffer is a vec of GPU allocated vecs.</span>
<span class="comment">// But we can pass in multiple vertex buffers</span>
<span class="kw">if</span> <span class="ident">allocated_buffers</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">if</span> <span class="op">!</span><span class="ident">allocated_buffers</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="ident">command_buffer</span> <span class="op">=</span> <span class="ident">command_buffer</span>.<span class="ident">draw</span>(
<span class="ident">shader</span>.<span class="ident">get_pipeline</span>().<span class="ident">clone</span>(),
<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">dynamic_state</span>.<span class="ident">clone</span>(),
@@ -1114,10 +1118,10 @@
}
<span class="comment">// Text</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">shader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">shader_buffers</span>.<span class="ident">get</span>(
<span class="self">self</span>.<span class="ident">get_shader_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_text&quot;</span>))
.<span class="ident">unwrap</span>().<span class="ident">clone</span>().<span class="ident">get_handle</span>() <span class="kw">as</span> <span class="ident">usize</span>
).<span class="ident">unwrap</span>();
<span class="comment">// let mut shader = self.shader_buffers.get(</span>
<span class="comment">// self.get_shader_handle(String::from(&quot;simple_text&quot;))</span>
<span class="comment">// .unwrap().clone().get_handle() as usize</span>
<span class="comment">// ).unwrap();</span>
<span class="comment">//</span>
<span class="comment">// if !self.text_instances.is_empty() {</span>