Loading...
Searching...
No Matches
RenderedISFSamplerUtils.hpp
1#pragma once
2#include <Gfx/Graph/RenderList.hpp>
3#include <Gfx/Graph/RenderedISFUtils.hpp>
4
5#include <score/tools/Debug.hpp>
6
7namespace score::gfx
8{
9
10inline std::vector<Sampler> initInputSamplers(
11 const ProcessNode& node, RenderList& renderer, const std::vector<Port*>& ports,
12 ossia::small_flat_map<const Port*, TextureRenderTarget, 2>& m_rts)
13{
14 std::vector<Sampler> samplers;
15 QRhi& rhi = *renderer.state.rhi;
16
17 int cur_port = 0;
18 for(Port* in : ports)
19 {
20 switch(in->type)
21 {
22 case Types::Image: {
23 auto spec = node.resolveRenderTargetSpecs(cur_port, renderer);
24 auto sampler = rhi.newSampler(
25 spec.mag_filter, spec.min_filter, spec.mipmap_mode, spec.address_u,
26 spec.address_v, spec.address_w);
27 sampler->setName("ISFNode::initInputSamplers::sampler");
28 SCORE_ASSERT(sampler->create());
29
31 renderer.state, spec.format, spec.size, renderer.samples(),
32 renderer.requiresDepth());
33 auto texture = rt.texture;
34 samplers.push_back({sampler, texture});
35
36 m_rts[in] = std::move(rt);
37 break;
38 }
39
40 default:
41 break;
42 }
43 cur_port++;
44 }
45 return samplers;
46}
47
48inline std::vector<Sampler>
49initAudioTextures(RenderList& renderer, std::list<AudioTexture>& textures)
50{
51 std::vector<Sampler> samplers;
52 QRhi& rhi = *renderer.state.rhi;
53 for(auto& texture : textures)
54 {
55 auto sampler = rhi.newSampler(
56 QRhiSampler::Linear, QRhiSampler::Linear, QRhiSampler::None,
57 QRhiSampler::ClampToEdge, QRhiSampler::ClampToEdge);
58 sampler->setName("ISFNode::initAudioTextures::sampler");
59 sampler->create();
60
61 samplers.push_back({sampler, &renderer.emptyTexture()});
62 texture.samplers[&renderer] = {sampler, nullptr};
63 }
64 return samplers;
65}
66
67}
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
TextureRenderTarget createRenderTarget(const RenderState &state, QRhiTexture *tex, int samples, bool depth)
Create a render target from a texture.
Definition score-plugin-gfx/Gfx/Graph/Utils.cpp:10