Blender  V3.3
eval_output_gpu.h
Go to the documentation of this file.
1 // Copyright 2021 Blender Foundation. All rights reserved.
2 //
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software Foundation,
15 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 //
17 // Author: Sergey Sharybin
18 
19 #ifndef OPENSUBDIV_EVAL_OUTPUT_GPU_H_
20 #define OPENSUBDIV_EVAL_OUTPUT_GPU_H_
21 
24 
25 #include <opensubdiv/osd/glPatchTable.h>
26 #include <opensubdiv/osd/glVertexBuffer.h>
27 
28 using OpenSubdiv::Osd::GLVertexBuffer;
29 
30 namespace blender {
31 namespace opensubdiv {
32 
33 class GpuEvalOutput : public VolatileEvalOutput<GLVertexBuffer,
34  GLVertexBuffer,
35  GLStencilTableSSBO,
36  GLPatchTable,
37  GLComputeEvaluator> {
38  public:
39  GpuEvalOutput(const StencilTable *vertex_stencils,
40  const StencilTable *varying_stencils,
41  const vector<const StencilTable *> &all_face_varying_stencils,
42  const int face_varying_width,
43  const PatchTable *patch_table,
44  EvaluatorCache *evaluator_cache = NULL);
45 
46  void fillPatchArraysBuffer(OpenSubdiv_Buffer *patch_arrays_buffer) override;
47 
48  void wrapPatchIndexBuffer(OpenSubdiv_Buffer *patch_index_buffer) override;
49 
50  void wrapPatchParamBuffer(OpenSubdiv_Buffer *patch_param_buffer) override;
51 
52  void wrapSrcBuffer(OpenSubdiv_Buffer *src_buffer) override;
53 
54  void wrapSrcVertexDataBuffer(OpenSubdiv_Buffer *src_buffer) override;
55 
56  void fillFVarPatchArraysBuffer(const int face_varying_channel,
57  OpenSubdiv_Buffer *patch_arrays_buffer) override;
58 
59  void wrapFVarPatchIndexBuffer(const int face_varying_channel,
60  OpenSubdiv_Buffer *patch_index_buffer) override;
61 
62  void wrapFVarPatchParamBuffer(const int face_varying_channel,
63  OpenSubdiv_Buffer *patch_param_buffer) override;
64 
65  void wrapFVarSrcBuffer(const int face_varying_channel, OpenSubdiv_Buffer *src_buffer) override;
66 };
67 
68 } // namespace opensubdiv
69 } // namespace blender
70 
71 #endif // OPENSUBDIV_EVAL_OUTPUT_GPU_H_
void fillFVarPatchArraysBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_arrays_buffer) override
void wrapPatchIndexBuffer(OpenSubdiv_Buffer *patch_index_buffer) override
void wrapSrcBuffer(OpenSubdiv_Buffer *src_buffer) override
void fillPatchArraysBuffer(OpenSubdiv_Buffer *patch_arrays_buffer) override
GpuEvalOutput(const StencilTable *vertex_stencils, const StencilTable *varying_stencils, const vector< const StencilTable * > &all_face_varying_stencils, const int face_varying_width, const PatchTable *patch_table, EvaluatorCache *evaluator_cache=NULL)
void wrapPatchParamBuffer(OpenSubdiv_Buffer *patch_param_buffer) override
void wrapFVarPatchIndexBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_index_buffer) override
void wrapFVarPatchParamBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_param_buffer) override
void wrapFVarSrcBuffer(const int face_varying_channel, OpenSubdiv_Buffer *src_buffer) override
void wrapSrcVertexDataBuffer(OpenSubdiv_Buffer *src_buffer) override