bring docs up to date
This commit is contained in:
@@ -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">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></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"><</span><span class="ident">VertexTypes</span><span class="op">></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">&</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&</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">&</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&</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>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"><</span><span class="ident">Sampler</span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasImage</span><span class="op">></span><span class="op">></span>,
|
||||
<span class="ident">texture_buffers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasTexture</span><span class="op">></span><span class="op">></span>,
|
||||
<span class="ident">font_buffers</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasFont</span><span class="op">></span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">CompiledGraphicsPipeline</span><span class="op">></span><span class="op">></span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">Box</span><span class="op"><</span><span class="kw">dyn</span> <span class="ident">CompiledShader</span><span class="op">></span><span class="op">></span><span class="op">></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"><</span><span class="ident">Queue</span><span class="op">></span>,
|
||||
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Device</span><span class="op">></span>,
|
||||
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></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'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"><</span><span class="ident">T</span>: <span class="lifetime">'static</span><span class="op">></span>(<span class="kw-2">&</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"><</span><span class="ident">T</span>: <span class="lifetime">'static</span>, <span class="ident">V</span><span class="op">></span>(<span class="kw-2">&</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">></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CompiledShaderHandle</span><span class="op">></span><span class="op">></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"><</span><span class="kw">dyn</span> <span class="ident">CompiledGraphicsPipeline</span><span class="op">></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"><</span><span class="kw">dyn</span> <span class="ident">CompiledShader</span><span class="op">></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"><</span><span class="ident">V</span><span class="op">></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">&</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">></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">&</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">></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"><</span><span class="ident">ColorVertex2D</span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">TextureVertex2D</span><span class="op">></span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasImageHandle</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">ImageVertex2D</span><span class="op">></span><span class="op">></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"><</span><span class="ident">ColorVertex3D</span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">TextureVertex3D</span><span class="op">></span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasImageHandle</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">ImageVertex3D</span><span class="op">></span><span class="op">></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"><</span><span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasFontHandle</span><span class="op">></span>, <span class="ident">Vec</span><span class="op"><</span><span class="ident">TextVertex3D</span><span class="op">></span><span class="op">></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">&</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">"simple_text"</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("simple_text"))</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>
|
||||
|
||||
@@ -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">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></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> {
|
||||
|
||||
@@ -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'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"><</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">></span>(<span class="ident">filename</span>: <span class="ident">String</span>,
|
||||
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Device</span><span class="op">></span>,
|
||||
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">CompiledShaderHandle</span><span class="op">></span>,
|
||||
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>) <span class="op">-</span><span class="op">></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::<Vertex3D></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"><</span><span class="ident">V</span><span class="op">></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"><</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">></span>) <span class="op">-</span><span class="op">></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"><</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">></span>(<span class="self">self</span>, <span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>) <span class="op">-</span><span class="op">></span> <span class="ident">GenericShader</span> {
|
||||
<span class="ident">GenericShader</span>::<span class="ident">new</span>::<span class="op"><</span><span class="ident">V</span><span class="op">></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>())
|
||||
|
||||
@@ -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">></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"><</span><span class="ident">V</span><span class="op">></span>(<span class="ident">filename</span>: <span class="ident">String</span>,
|
||||
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Device</span><span class="op">></span>,
|
||||
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">CompiledShaderHandle</span><span class="op">></span>,
|
||||
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>) <span class="op">-</span><span class="op">></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"><</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">></span>) <span class="op">-</span><span class="op">></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">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">String</span>;
|
||||
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">CompiledShaderHandle</span><span class="op">></span>;
|
||||
<span class="kw">fn</span> <span class="ident">get_pipeline</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">Arc</span><span class="op"><</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">></span>;
|
||||
<span class="kw">fn</span> <span class="ident">get_renderpass</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">Arc</span><span class="op"><</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">></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"><</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">></span>)
|
||||
<span class="kw">fn</span> <span class="ident">recompile</span><span class="op"><</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">></span>(<span class="self">self</span>, <span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>)
|
||||
<span class="op">-</span><span class="op">></span> <span class="self">Self</span> <span class="kw">where</span> <span class="self">Self</span>: <span class="ident">Sized</span>;
|
||||
}
|
||||
|
||||
|
||||
@@ -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'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"><</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">></span>(<span class="ident">filename</span>: <span class="ident">String</span>,
|
||||
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">Device</span><span class="op">></span>,
|
||||
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op"><</span><span class="ident">CompiledShaderHandle</span><span class="op">></span>,
|
||||
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>) <span class="op">-</span><span class="op">></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::<Vertex3D, GlyphInstance></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"><</span><span class="ident">V</span><span class="op">></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">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">Arc</span><span class="op"><</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">></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"><</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">></span>) <span class="op">-</span><span class="op">></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"><</span><span class="ident">V</span>: <span class="ident">Vertex</span><span class="op">></span>(<span class="self">self</span>, <span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op"><</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">></span>) <span class="op">-</span><span class="op">></span> <span class="ident">TextShader</span> {
|
||||
<span class="ident">TextShader</span>::<span class="ident">new</span>::<span class="op"><</span><span class="ident">V</span><span class="op">></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>())
|
||||
|
||||
@@ -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">"Game Objects"</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"><</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">></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"><</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">></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"><</span><span class="kw">dyn</span> <span class="ident">GpuFuture</span><span class="op">></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">"funky-bird.jpg"</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"><</span><span class="ident">CompuBufferHandle</span><span class="op">></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">"simple-edge.compute"</span>))
|
||||
<span class="kw">let</span> <span class="ident">compute_kernel</span> : <span class="ident">Arc</span><span class="op"><</span><span class="ident">CompuKernelHandle</span><span class="op">></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">"simple-edge.compute"</span>))
|
||||
.<span class="ident">expect</span>(<span class="string">"Can't find that kernel"</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">"funky-bird.jpg"</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">"sfml.png"</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">"sansation.ttf"</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"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></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">"funky-bird.jpg"</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"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></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">"sfml.png"</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"><</span><span class="ident">CanvasFontHandle</span><span class="op">></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">"sansation.ttf"</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">&</span><span class="ident">funky_sprite</span>);
|
||||
<span class="ident">canvas_frame</span>.<span class="ident">draw</span>(<span class="kw-2">&</span><span class="ident">sfml_sprite</span>);
|
||||
|
||||
|
||||
@@ -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">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">VertexTypes</span> {
|
||||
<span class="self">self</span>.<span class="ident">verts</span>.<span class="ident">clone</span>()
|
||||
}
|
||||
|
||||
@@ -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"><</span><span class="ident">TextureVertex2D</span><span class="op">></span>, <span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></span>),
|
||||
<span class="ident">ImageType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">ImageVertex2D</span><span class="op">></span>, <span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasImageHandle</span><span class="op">></span>),
|
||||
<span class="ident">ColorType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">ColorVertex2D</span><span class="op">></span>),
|
||||
<span class="ident">TextureType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">TextureVertex3D</span><span class="op">></span>, <span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasTextureHandle</span><span class="op">></span>),
|
||||
<span class="ident">ImageType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">ImageVertex3D</span><span class="op">></span>, <span class="ident">Arc</span><span class="op"><</span><span class="ident">CanvasImageHandle</span><span class="op">></span>),
|
||||
<span class="ident">ColorType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">ColorVertex3D</span><span class="op">></span>),
|
||||
<span class="ident">ThreeDType</span>(<span class="ident">Vec</span><span class="op"><</span><span class="ident">Vertex3D</span><span class="op">></span>),
|
||||
|
||||
}
|
||||
|
||||
@@ -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">&</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"><</span><span class="ident">GenericShader</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"color-passthrough"</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"><</span><span class="ident">GenericShader</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"simple_texture"</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"><</span><span class="ident">GenericShader</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"simple_image"</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"><</span><span class="ident">TextShader</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"simple_text"</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"><</span><span class="ident">GenericShader</span>, <span class="ident">ColorVertex3D</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"color-passthrough"</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"><</span><span class="ident">GenericShader</span>, <span class="ident">TextureVertex3D</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"simple_texture"</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"><</span><span class="ident">GenericShader</span>, <span class="ident">ImageVertex3D</span><span class="op">></span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">"simple_image"</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::<TextShader, TextVertex3D>(String::from("simple_text"), 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">&</span><span class="kw-2">mut</span> <span class="self">self</span>,
|
||||
<span class="ident">surface</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Arc</span><span class="op"><</span><span class="ident">Surface</span><span class="op"><</span><span class="ident">Window</span><span class="op">></span><span class="op">></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>,
|
||||
) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user