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

@@ -26,8 +26,6 @@
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
@@ -35,27 +33,25 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="kw-2">*</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">Handle</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">text_shader</span>::<span class="ident">GlyphInstance</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::<span class="ident">Vertex</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">any</span>::<span class="ident">Any</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">VertexTypes</span>;
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">DrawableTest</span> {
<span class="doccomment">/// Trait which may be inherited by objects that wish to be drawn to the screen</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Drawable</span> {
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">VertexTypes</span>;
}
<span class="doccomment">/// Accumulator for Vectors of VertexTypes</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFrameTest</span> {
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFrame</span> {
<span class="kw">pub</span> <span class="ident">map</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">VertexTypes</span><span class="op">&gt;</span>,
}
<span class="kw">impl</span> <span class="ident">CanvasFrameTest</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&amp;</span><span class="kw">dyn</span> <span class="ident">DrawableTest</span>) {
<span class="kw">impl</span> <span class="ident">CanvasFrame</span> {
<span class="doccomment">/// Push this drawable onto the back of the accumulator</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&amp;</span><span class="kw">dyn</span> <span class="ident">Drawable</span>) {
<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">push</span>(<span class="ident">drawable</span>.<span class="ident">get</span>());
}
}

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>

View File

@@ -58,24 +58,18 @@
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Handle</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">u32</span>;
}
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">DrawableHandle</span> {
<span class="ident">Texture</span>(<span class="ident">CanvasTextureHandle</span>),
<span class="ident">Image</span>(<span class="ident">CanvasImageHandle</span>),
<span class="ident">Font</span>(<span class="ident">CanvasFontHandle</span>),
}
<span class="doccomment">/// Typed wrapper for a u32 handle</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFontHandle</span> {

View File

@@ -141,6 +141,8 @@
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
<span id="145">145</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">GraphicsPipelineAbstract</span>;
@@ -154,14 +156,15 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ffi</span>::<span class="ident">CStr</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">marker</span>::<span class="ident">PhantomData</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">DepthStencil</span>, <span class="ident">Compare</span>, <span class="ident">DepthBounds</span>, <span class="ident">Stencil</span>, <span class="ident">StencilOp</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">SingleBufferDefinition</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">SingleBufferDefinition</span>, <span class="ident">VertexDefinition</span>, <span class="ident">Vertex</span>};
<span class="kw">use</span> <span class="ident">shade_runner</span> <span class="kw">as</span> <span class="ident">sr</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>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">SafeDeref</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">ShaderType</span>, <span class="ident">CompiledGraphicsPipelineResources</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">ShaderType</span>, <span class="ident">CompiledShaderResources</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">handles</span>::<span class="ident">CompiledShaderHandle</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">ShaderSpecializationConstants</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">ColorVertex3D</span>};
<span class="doccomment">/// CanvasShader holds the pipeline and render pass for the input shader source</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
@@ -176,16 +179,17 @@
}
<span class="kw">impl</span> <span class="ident">GenericShader</span> {}
<span class="kw">impl</span> <span class="ident">GenericShader</span> {
}
<span class="doccomment">/// Gives CanvasShader the resource functions</span>
<span class="kw">impl</span> <span class="ident">CompiledGraphicsPipelineResources</span> <span class="kw">for</span> <span class="ident">GenericShader</span> {}
<span class="kw">impl</span> <span class="ident">CompiledShaderResources</span> <span class="kw">for</span> <span class="ident">GenericShader</span> {}
<span class="doccomment">/// Convenience interface so we don&#39;t have to juggle shader types</span>
<span class="kw">impl</span> <span class="ident">CompiledGraphicsPipeline</span> <span class="kw">for</span> <span class="ident">GenericShader</span> {
<span class="kw">impl</span> <span class="ident">CompiledShader</span> <span class="kw">for</span> <span class="ident">GenericShader</span> {
<span class="doccomment">/// This will explode when the shader does not want to compile</span>
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="kw">fn</span> <span class="ident">new</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">&gt;</span>(<span class="ident">filename</span>: <span class="ident">String</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">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GenericShader</span> {
@@ -226,8 +230,8 @@
<span class="ident">graphics_pipeline</span>:
<span class="prelude-val">Some</span>(<span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">GraphicsPipeline</span>::<span class="ident">start</span>()
<span class="comment">//SingleBufferDefinition::&lt;Vertex3D&gt;</span>
.<span class="ident">vertex_input</span>(<span class="ident">vertex_definition</span>)
.<span class="ident">vertex_input</span>(<span class="ident">SingleBufferDefinition</span>::<span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>::<span class="ident">new</span>())
<span class="comment">//.vertex_input(vertex_definition)</span>
.<span class="ident">vertex_shader</span>(<span class="ident">vertex_entry_point</span>.<span class="ident">clone</span>(), <span class="ident">ShaderSpecializationConstants</span> {
<span class="ident">first_constant</span>: <span class="number">0</span>,
@@ -277,8 +281,8 @@
<span class="self">self</span>.<span class="ident">renderpass</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">recompile</span>(<span class="self">self</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GenericShader</span> {
<span class="ident">GenericShader</span>::<span class="ident">new</span>(<span class="self">self</span>.<span class="ident">name</span>,
<span class="kw">fn</span> <span class="ident">recompile</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">&gt;</span>(<span class="self">self</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GenericShader</span> {
<span class="ident">GenericShader</span>::<span class="ident">new</span>::<span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>(<span class="self">self</span>.<span class="ident">name</span>,
<span class="self">self</span>.<span class="ident">device</span>,
<span class="self">self</span>.<span class="ident">handle</span>,
<span class="ident">render_pass</span>.<span class="ident">clone</span>())

View File

@@ -121,6 +121,7 @@
<span id="121">121</span>
<span id="122">122</span>
<span id="123">123</span>
<span id="124">124</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashSet</span>;
@@ -133,6 +134,7 @@
<span class="kw">use</span> <span class="ident">shade_runner</span>::<span class="ident">Entry</span>;
<span class="kw">use</span> <span class="ident">shaderc</span>::<span class="ident">ShaderKind</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">CompiledShaderHandle</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::<span class="ident">Vertex</span>;
<span class="comment">/*
@@ -152,7 +154,7 @@ This best works I think if I allow users to
<span class="doccomment">/// Inheriting this gives private functions to grab resources</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompiledGraphicsPipelineResources</span> {
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompiledShaderResources</span> {
<span class="kw">fn</span> <span class="ident">get_path</span>(<span class="ident">filename</span>: <span class="ident">String</span>, <span class="ident">shader_type</span>: <span class="ident">ShaderType</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PathBuf</span> {
<span class="kw">let</span> <span class="ident">project_root</span> <span class="op">=</span>
@@ -223,16 +225,16 @@ This best works I think if I allow users to
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompiledGraphicsPipeline</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompiledShader</span> {
<span class="kw">fn</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">String</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">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> <span class="kw">where</span> <span class="self">Self</span>: <span class="ident">Sized</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> <span class="kw">where</span> <span class="self">Self</span>: <span class="ident">Sized</span>, <span class="ident">V</span>: <span class="ident">Vertex</span>,;
<span class="kw">fn</span> <span class="ident">get_name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span>;
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_pipeline</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GraphicsPipelineAbstract</span> <span class="op">+</span> <span class="ident">Sync</span> <span class="op">+</span> <span class="ident">Send</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_renderpass</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</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>;
<span class="kw">fn</span> <span class="ident">recompile</span>(<span class="self">self</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>)
<span class="kw">fn</span> <span class="ident">recompile</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">&gt;</span>(<span class="self">self</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>)
<span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> <span class="kw">where</span> <span class="self">Self</span>: <span class="ident">Sized</span>;
}

View File

@@ -173,12 +173,6 @@
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">GraphicsPipelineAbstract</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
@@ -191,22 +185,15 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ffi</span>::<span class="ident">CStr</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">marker</span>::<span class="ident">PhantomData</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">DepthStencil</span>, <span class="ident">Compare</span>, <span class="ident">DepthBounds</span>, <span class="ident">Stencil</span>, <span class="ident">StencilOp</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">SingleBufferDefinition</span>, <span class="ident">OneVertexOneInstanceDefinition</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">SingleBufferDefinition</span>, <span class="ident">OneVertexOneInstanceDefinition</span>, <span class="ident">Vertex</span>};
<span class="kw">use</span> <span class="ident">shade_runner</span> <span class="kw">as</span> <span class="ident">sr</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">ShaderType</span>, <span class="ident">CompiledGraphicsPipelineResources</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">ShaderType</span>, <span class="ident">CompiledShaderResources</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">handles</span>::<span class="ident">CompiledShaderHandle</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">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">ShaderSpecializationConstants</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::<span class="ident">ColorVertex3D</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GlyphInstance</span> {
<span class="kw">pub</span> <span class="ident">screen_position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">atlas_position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">atlas_size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">scale</span>: <span class="ident">f32</span>,
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">GlyphInstance</span>, <span class="ident">screen_position</span>, <span class="ident">atlas_position</span>, <span class="ident">atlas_size</span>, <span class="ident">scale</span>);
<span class="doccomment">/// CanvasShader holds the pipeline and render pass for the input shader source</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
@@ -223,13 +210,13 @@
<span class="kw">impl</span> <span class="ident">TextShader</span> {}
<span class="doccomment">/// Gives CanvasShader the resource functions</span>
<span class="kw">impl</span> <span class="ident">CompiledGraphicsPipelineResources</span> <span class="kw">for</span> <span class="ident">TextShader</span> {}
<span class="kw">impl</span> <span class="ident">CompiledShaderResources</span> <span class="kw">for</span> <span class="ident">TextShader</span> {}
<span class="doccomment">/// Convenience interface so we don&#39;t have to juggle shader types</span>
<span class="kw">impl</span> <span class="ident">CompiledGraphicsPipeline</span> <span class="kw">for</span> <span class="ident">TextShader</span> {
<span class="kw">impl</span> <span class="ident">CompiledShader</span> <span class="kw">for</span> <span class="ident">TextShader</span> {
<span class="doccomment">/// This will explode when the shader does not want to compile</span>
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="kw">fn</span> <span class="ident">new</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">&gt;</span>(<span class="ident">filename</span>: <span class="ident">String</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">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">TextShader</span> {
@@ -293,8 +280,9 @@
<span class="ident">TextShader</span> {
<span class="ident">graphics_pipeline</span>:
<span class="prelude-val">Some</span>(<span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">GraphicsPipeline</span>::<span class="ident">start</span>()
<span class="comment">//OneVertexOneInstanceDefinition::&lt;Vertex3D, GlyphInstance&gt;</span>
.<span class="ident">vertex_input</span>(<span class="ident">vertex_definition</span>)
.<span class="ident">vertex_input</span>(<span class="ident">SingleBufferDefinition</span>::<span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>::<span class="ident">new</span>())
<span class="comment">//.vertex_input(vertex_definition)</span>
.<span class="ident">vertex_shader</span>(<span class="ident">vertex_entry_point</span>.<span class="ident">clone</span>(), <span class="ident">ShaderSpecializationConstants</span> {
<span class="ident">first_constant</span>: <span class="number">0</span>,
@@ -342,8 +330,8 @@
<span class="kw">fn</span> <span class="ident">get_renderpass</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</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> {
<span class="self">self</span>.<span class="ident">renderpass</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">recompile</span>(<span class="self">self</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">TextShader</span> {
<span class="ident">TextShader</span>::<span class="ident">new</span>(<span class="self">self</span>.<span class="ident">name</span>,
<span class="kw">fn</span> <span class="ident">recompile</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">&gt;</span>(<span class="self">self</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>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">TextShader</span> {
<span class="ident">TextShader</span>::<span class="ident">new</span>::<span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>(<span class="self">self</span>.<span class="ident">name</span>,
<span class="self">self</span>.<span class="ident">device</span>,
<span class="self">self</span>.<span class="ident">handle</span>,
<span class="self">self</span>.<span class="ident">renderpass</span>.<span class="ident">clone</span>())

View File

@@ -246,6 +246,10 @@
<span id="246">246</span>
<span id="247">247</span>
<span id="248">248</span>
<span id="249">249</span>
<span id="250">250</span>
<span id="251">251</span>
<span id="252">252</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">dead_code</span>)]</span>
<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">unused_variables</span>)]</span>
@@ -273,11 +277,12 @@
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">instance</span>::<span class="ident">debug</span>::<span class="ident">DebugCallback</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_frame</span>::<span class="ident">CompuFrame</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="ident">DrawableTest</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="ident">Drawable</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">compu_sprite</span>::<span class="ident">CompuSprite</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</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">Handle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex2D</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">Handle</span>, <span class="ident">CanvasFontHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex3D</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CompuBufferHandle</span>, <span class="ident">CompuKernelHandle</span>};
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">util</span>;
@@ -338,13 +343,11 @@
<span class="ident">processor</span>.<span class="ident">preload_fonts</span>();
}
<span class="kw">let</span> <span class="ident">q2</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Game Objects&quot;</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">timer</span> <span class="op">=</span> <span class="ident">Timer</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">frame_future</span> <span class="op">=</span> <span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">sync</span>::<span class="ident">now</span>(<span class="ident">processor</span>.<span class="ident">device</span>.<span class="ident">clone</span>())) <span class="kw">as</span> <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">&gt;</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">frame_future</span> : <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">sync</span>::<span class="ident">now</span>(<span class="ident">processor</span>.<span class="ident">device</span>.<span class="ident">clone</span>())) <span class="kw">as</span> <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">&gt;</span>;
<span class="kw">let</span> <span class="ident">step_size</span>: <span class="ident">f32</span> <span class="op">=</span> <span class="number">0.005</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">elapsed_time</span>: <span class="ident">f32</span>;
@@ -353,26 +356,31 @@
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">current_time</span>: <span class="ident">f32</span> <span class="op">=</span> <span class="ident">timer</span>.<span class="ident">elap_time</span>();
<span class="kw">let</span> <span class="ident">image_data</span> <span class="op">=</span> <span class="ident">load_raw</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;funky-bird.jpg&quot;</span>));
<span class="kw">let</span> <span class="ident">image_dimensions_f</span> <span class="op">=</span> ((<span class="ident">image_data</span>.<span class="number">1</span>).<span class="number">0</span> <span class="kw">as</span> <span class="ident">f32</span>, (<span class="ident">image_data</span>.<span class="number">1</span>).<span class="number">1</span> <span class="kw">as</span> <span class="ident">f32</span>);
<span class="kw">let</span> <span class="ident">image_dimensions_u</span> <span class="op">=</span> <span class="ident">image_data</span>.<span class="number">1</span>;
<span class="kw">let</span> <span class="ident">compu_sprite1</span> <span class="op">=</span> <span class="ident">CompuSprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.4</span>, <span class="number">0.4</span>), <span class="number">0</span>, <span class="ident">image_dimensions_f</span>,
<span class="comment">// This swap image needs to match the size of the compute</span>
<span class="ident">processor</span>.<span class="ident">new_swap_image</span>(<span class="ident">image_dimensions_u</span>));
<span class="kw">let</span> <span class="ident">image_dimensions_f</span> : (<span class="ident">f32</span>, <span class="ident">f32</span>) <span class="op">=</span> ((<span class="ident">image_data</span>.<span class="number">1</span>).<span class="number">0</span> <span class="kw">as</span> <span class="ident">f32</span>, (<span class="ident">image_data</span>.<span class="number">1</span>).<span class="number">1</span> <span class="kw">as</span> <span class="ident">f32</span>);
<span class="kw">let</span> <span class="ident">image_dimensions_u</span> : (<span class="ident">u32</span>, <span class="ident">u32</span>) <span class="op">=</span> <span class="ident">image_data</span>.<span class="number">1</span>;
<span class="kw">let</span> <span class="ident">compu_sprite1</span> : <span class="ident">CompuSprite</span> <span class="op">=</span>
<span class="ident">CompuSprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.4</span>, <span class="number">0.4</span>), <span class="number">0</span>, <span class="ident">image_dimensions_f</span>,
<span class="comment">// Swap image to render the result to. Must match dimensions</span>
<span class="ident">processor</span>.<span class="ident">new_swap_image</span>(<span class="ident">image_dimensions_u</span>));
<span class="kw">let</span> <span class="ident">compute_buffer</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">new_compute_buffer</span>(<span class="ident">image_data</span>.<span class="number">0</span>, <span class="ident">image_data</span>.<span class="number">1</span>, <span class="number">4</span>);
<span class="kw">let</span> <span class="ident">compute_buffer</span> : <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompuBufferHandle</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">processor</span>.<span class="ident">new_compute_buffer</span>(<span class="ident">image_data</span>.<span class="number">0</span>, <span class="ident">image_data</span>.<span class="number">1</span>, <span class="number">4</span>);
<span class="kw">let</span> <span class="ident">compute_kernel</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_kernel_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple-edge.compute&quot;</span>))
<span class="kw">let</span> <span class="ident">compute_kernel</span> : <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompuKernelHandle</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">processor</span>.<span class="ident">get_kernel_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple-edge.compute&quot;</span>))
.<span class="ident">expect</span>(<span class="string">&quot;Can&#39;t find that kernel&quot;</span>);
<span class="kw">let</span> <span class="ident">funky_handle</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_texture_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;funky-bird.jpg&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">sfml_handle</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_texture_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sfml.png&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">font_handle</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_font_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sansation.ttf&quot;</span>)).<span class="ident">unwrap</span>();
<span class="comment">// Get the handles for the assets</span>
<span class="kw">let</span> <span class="ident">funky_handle</span> : <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">processor</span>.<span class="ident">get_texture_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;funky-bird.jpg&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">sfml_handle</span> : <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">processor</span>.<span class="ident">get_texture_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sfml.png&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">font_handle</span> : <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span> <span class="op">=</span>
<span class="ident">processor</span>.<span class="ident">get_font_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sansation.ttf&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">funky_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">0</span>, <span class="ident">funky_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="ident">sfml_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">1</span>, <span class="ident">sfml_handle</span>.<span class="ident">clone</span>());
<span class="comment">//let text_sprite = Text::new((-0.1,-0.1), (10.0, 10.0), font_handle.clone());</span>
<span class="comment">//let test_polygon = Poly::new_with_color((-0.5, -0.5), (0.5, 0.5), 1, (1.0,0.0,0.0,0.0));</span>
<span class="ident">drop</span>(<span class="ident">q2</span>);
@@ -435,7 +443,7 @@
<span class="kw">let</span> <span class="ident">funky_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">0</span>, <span class="ident">funky_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">canvas_frame</span> <span class="op">=</span> <span class="ident">CanvasFrameTest</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">canvas_frame</span> <span class="op">=</span> <span class="ident">CanvasFrame</span>::<span class="ident">default</span>();
<span class="ident">canvas_frame</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">funky_sprite</span>);
<span class="ident">canvas_frame</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">sfml_sprite</span>);

View File

@@ -42,13 +42,32 @@
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="kw-2">*</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">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasTextureHandle</span>, <span class="ident">Handle</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">text_shader</span>::<span class="ident">GlyphInstance</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">DrawableTest</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex2D</span>, <span class="ident">Vertex3D</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">Drawable</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex3D</span>, <span class="ident">Vertex3D</span>};
<span class="doccomment">///</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
@@ -71,14 +90,35 @@
<span class="kw">let</span> <span class="ident">normalized_depth</span> <span class="op">=</span> (<span class="ident">depth</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">255.0</span>);
<span class="kw">let</span> <span class="ident">verts</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// top left</span>
<span class="ident">ti_position</span>: [<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>] },
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// bottom left</span>
<span class="ident">ti_position</span>: [<span class="op">-</span><span class="number">0.0</span>, <span class="number">1.0</span>] },
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// bottom right</span>
<span class="ident">ti_position</span>: [<span class="number">1.0</span>, <span class="number">1.0</span>] },
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// top left</span>
<span class="ident">ti_position</span>: [<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>] },
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// bottom right</span>
<span class="ident">ti_position</span>: [<span class="number">1.0</span>, <span class="number">1.0</span>] },
<span class="ident">TextureVertex3D</span>{
<span class="ident">v_position</span>: [<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>], <span class="comment">// top right</span>
<span class="ident">ti_position</span>: [<span class="number">1.0</span>, <span class="op">-</span><span class="number">0.0</span>] },
];
<span class="ident">Sprite</span> {
<span class="ident">verts</span>: <span class="ident">VertexTypes</span>::<span class="ident">TextureType</span>(<span class="ident">Vec</span>::<span class="ident">new</span>(), <span class="ident">texture_handle</span>),
<span class="ident">verts</span>: <span class="ident">VertexTypes</span>::<span class="ident">TextureType</span>(<span class="ident">verts</span>, <span class="ident">texture_handle</span>),
<span class="ident">position</span>: <span class="ident">position</span>,
<span class="ident">size</span>: <span class="ident">size</span>,
}
}
}
<span class="kw">impl</span> <span class="ident">DrawableTest</span> <span class="kw">for</span> <span class="ident">Sprite</span>{
<span class="kw">impl</span> <span class="ident">Drawable</span> <span class="kw">for</span> <span class="ident">Sprite</span>{
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">VertexTypes</span> {
<span class="self">self</span>.<span class="ident">verts</span>.<span class="ident">clone</span>()
}

View File

@@ -76,6 +76,14 @@
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
<span id="83">83</span>
<span id="84">84</span>
<span id="85">85</span>
<span id="86">86</span>
</pre><div class="example-wrap"><pre class="rust ">
<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="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
@@ -83,25 +91,25 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextureVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextureVertex3D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextureVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">ti_position</span>);
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextureVertex3D</span>, <span class="ident">v_position</span>, <span class="ident">ti_position</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ColorVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ColorVertex3D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
<span class="kw">pub</span> <span class="ident">color</span>: [<span class="ident">f32</span>; <span class="number">4</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ColorVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>);
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ColorVertex3D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ImageVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="ident">color</span>: [<span class="ident">f32</span>; <span class="number">4</span>],
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ImageVertex3D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ImageVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>);
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ImageVertex3D</span>, <span class="ident">v_position</span>, <span class="ident">ti_position</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Vertex3D</span> {
@@ -119,13 +127,21 @@
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextVertex3D</span>, <span class="ident">position</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GlyphInstance</span> {
<span class="kw">pub</span> <span class="ident">screen_position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">atlas_position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">atlas_size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="kw">pub</span> <span class="ident">scale</span>: <span class="ident">f32</span>,
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">GlyphInstance</span>, <span class="ident">screen_position</span>, <span class="ident">atlas_position</span>, <span class="ident">atlas_size</span>, <span class="ident">scale</span>);
<span class="comment">// ==============================================================================</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">VertexTypes</span> {
<span class="ident">TextureType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex2D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>),
<span class="ident">ImageType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex2D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>),
<span class="ident">ColorType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex2D</span><span class="op">&gt;</span>),
<span class="ident">TextureType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex3D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>),
<span class="ident">ImageType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex3D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>),
<span class="ident">ColorType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex3D</span><span class="op">&gt;</span>),
<span class="ident">ThreeDType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Vertex3D</span><span class="op">&gt;</span>),
}

View File

@@ -352,7 +352,7 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_state</span>::<span class="ident">CompuState</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">image</span>::<span class="ident">ImageUsage</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_frame</span>::<span class="ident">CompuFrame</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">time</span>::<span class="ident">Duration</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">DynamicStencilValue</span>, <span class="ident">StencilFaceFlags</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">OneVertexOneInstanceDefinition</span>, <span class="ident">SingleBufferDefinition</span>};
@@ -361,7 +361,7 @@
<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">text_shader</span>::<span class="ident">TextShader</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">CompiledShaderHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CompuKernelHandle</span>, <span class="ident">CompuBufferHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</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">VertexTypes</span>, <span class="ident">ColorVertex3D</span>, <span class="ident">TextVertex3D</span>, <span class="ident">TextureVertex3D</span>, <span class="ident">ImageVertex3D</span>};
<span class="doccomment">/// VKProcessor holds the vulkan instance information, the swapchain,</span>
@@ -509,10 +509,10 @@
<span class="doccomment">/// A hardcoded list of shaders which can be preloaded from this function</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">preload_shaders</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) {
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;color-passthrough&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_texture&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_image&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">TextShader</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_text&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span>, <span class="ident">ColorVertex3D</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;color-passthrough&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span>, <span class="ident">TextureVertex3D</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_texture&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">load_shader</span>::<span class="op">&lt;</span><span class="ident">GenericShader</span>, <span class="ident">ImageVertex3D</span><span class="op">&gt;</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;simple_image&quot;</span>), <span class="self">self</span>.<span class="ident">physical</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">capabilities</span>.<span class="ident">clone</span>());
<span class="comment">// self.canvas_state.load_shader::&lt;TextShader, TextVertex3D&gt;(String::from(&quot;simple_text&quot;), self.physical.clone(), self.capabilities.clone());</span>
}
<span class="doccomment">/// A hardcoded list of shaders which can be proloaded from this function</span>
@@ -567,7 +567,7 @@
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">run</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="ident">surface</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Surface</span><span class="op">&lt;</span><span class="ident">Window</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">//canvas_frame: CanvasFrame,</span>
<span class="ident">canvas_frame</span>: <span class="ident">CanvasFrameTest</span>,
<span class="ident">canvas_frame</span>: <span class="ident">CanvasFrame</span>,
<span class="ident">compute_frame</span>: <span class="ident">CompuFrame</span>,
) {