OpenSubdiv
Toggle main menu visibility
Loading...
Searching...
No Matches
mtlPatchTable.h
Go to the documentation of this file.
1
//
2
// Copyright 2013 Pixar
3
//
4
// Licensed under the Apache License, Version 2.0 (the "Apache License")
5
// with the following modification; you may not use this file except in
6
// compliance with the Apache License and the following modification to it:
7
// Section 6. Trademarks. is deleted and replaced with:
8
//
9
// 6. Trademarks. This License does not grant permission to use the trade
10
// names, trademarks, service marks, or product names of the Licensor
11
// and its affiliates, except as required to comply with Section 4(c) of
12
// the License and to reproduce the content of the NOTICE file.
13
//
14
// You may obtain a copy of the Apache License at
15
//
16
// http://www.apache.org/licenses/LICENSE-2.0
17
//
18
// Unless required by applicable law or agreed to in writing, software
19
// distributed under the Apache License with the above modification is
20
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
// KIND, either express or implied. See the Apache License for the specific
22
// language governing permissions and limitations under the Apache License.
23
//
24
25
#ifndef OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H
26
#define OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H
27
28
#include "../version.h"
29
#include "
../far/patchDescriptor.h
"
30
#include "
../osd/nonCopyable.h
"
31
#include "
../osd/types.h
"
32
#include "
../osd/mtlCommon.h
"
33
34
@protocol
MTLDevice;
35
@protocol
MTLBuffer;
36
37
namespace
OpenSubdiv
{
38
namespace
OPENSUBDIV_VERSION
{
39
40
namespace
Far
{
41
class
PatchTable
;
42
};
43
44
namespace
Osd
{
45
46
class
MTLPatchTable
:
private
NonCopyable
<MTLPatchTable> {
47
public
:
48
typedef
id<MTLBuffer>
VertexBufferBinding
;
49
50
MTLPatchTable
();
51
~MTLPatchTable
();
52
53
template
<
typename
DEVICE_CONTEXT>
54
static
MTLPatchTable
*
Create
(
Far::PatchTable
const
*farPatchTable, DEVICE_CONTEXT context)
55
{
56
return
Create
(farPatchTable, context);
57
}
58
59
static
MTLPatchTable
*
Create
(
Far::PatchTable
const
*farPatchTable,
MTLContext
* context);
60
61
PatchArrayVector
const
&
GetPatchArrays
()
const
{
return
_patchArrays
; }
62
id<MTLBuffer>
GetPatchIndexBuffer
()
const
{
return
_indexBuffer
; }
63
id<MTLBuffer>
GetPatchParamBuffer
()
const
{
return
_patchParamBuffer
; }
64
65
PatchArrayVector
const
&
GetVaryingPatchArrays
()
const
{
return
_varyingPatchArrays
; }
66
id<MTLBuffer>
GetVaryingPatchIndexBuffer
()
const
{
return
_varyingPatchIndexBuffer
; }
67
68
int
GetNumFVarChannels
()
const
{
return
(
int
)
_fvarPatchArrays
.size(); }
69
PatchArrayVector
const
&
GetFVarPatchArrays
(
int
fvarChannel = 0)
const
{
return
_fvarPatchArrays
[
fvarChannel
]; }
70
id<MTLBuffer>
GetFVarPatchIndexBuffer
(
int
fvarChannel = 0)
const
{
return
_fvarIndexBuffers
[
fvarChannel
]; }
71
id<MTLBuffer>
GetFVarPatchParamBuffer
(
int
fvarChannel = 0)
const
{
return
_fvarParamBuffers
[
fvarChannel
]; }
72
73
protected
:
74
bool
allocate
(
Far::PatchTable
const
*farPatchTable,
MTLContext
* context);
75
76
PatchArrayVector
_patchArrays
;
77
78
id<MTLBuffer>
_indexBuffer
;
79
id<MTLBuffer>
_patchParamBuffer
;
80
81
PatchArrayVector
_varyingPatchArrays
;
82
83
id<MTLBuffer>
_varyingPatchIndexBuffer
;
84
85
std::vector<PatchArrayVector>
_fvarPatchArrays
;
86
std::vector<id<MTLBuffer>>
_fvarIndexBuffers
;
87
std::vector<id<MTLBuffer>>
_fvarParamBuffers
;
88
};
89
90
}
// end namespace Osd
91
92
}
//end namespace OPENSUBDIV_VERSION
93
using namespace
OPENSUBDIV_VERSION
;
94
95
}
//end namespace OpenSubdiv
96
97
#endif
//end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H
nonCopyable.h
mtlCommon.h
patchDescriptor.h
OpenSubdiv
Definition
error.h:30
OpenSubdiv::OPENSUBDIV_VERSION
Definition
error.h:31
OpenSubdiv::OPENSUBDIV_VERSION::Far
Definition
error.h:33
OpenSubdiv::OPENSUBDIV_VERSION::Osd
Definition
bufferDescriptor.h:34
OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector
std::vector< PatchArray > PatchArrayVector
Definition
types.h:132
OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable
Container for arrays of parametric patches.
Definition
patchTable.h:55
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext
Definition
mtlCommon.h:40
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable
Definition
mtlPatchTable.h:46
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchArrays
PatchArrayVector const & GetPatchArrays() const
Definition
mtlPatchTable.h:61
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::allocate
bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create
static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchIndexBuffer
id< MTLBuffer > GetVaryingPatchIndexBuffer() const
Definition
mtlPatchTable.h:66
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarIndexBuffers
std::vector< id< MTLBuffer > > _fvarIndexBuffers
Definition
mtlPatchTable.h:86
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchParamBuffer
id< MTLBuffer > GetFVarPatchParamBuffer(int fvarChannel=0) const
Definition
mtlPatchTable.h:71
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::MTLPatchTable
MTLPatchTable()
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchParamBuffer
id< MTLBuffer > GetPatchParamBuffer() const
Definition
mtlPatchTable.h:63
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchIndexBuffer
id< MTLBuffer > GetPatchIndexBuffer() const
Definition
mtlPatchTable.h:62
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchArrays
PatchArrayVector _patchArrays
Definition
mtlPatchTable.h:76
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::VertexBufferBinding
id< MTLBuffer > VertexBufferBinding
Definition
mtlPatchTable.h:48
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetNumFVarChannels
int GetNumFVarChannels() const
Definition
mtlPatchTable.h:68
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchArrays
PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const
Definition
mtlPatchTable.h:69
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchIndexBuffer
id< MTLBuffer > _varyingPatchIndexBuffer
Definition
mtlPatchTable.h:83
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarParamBuffers
std::vector< id< MTLBuffer > > _fvarParamBuffers
Definition
mtlPatchTable.h:87
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarPatchArrays
std::vector< PatchArrayVector > _fvarPatchArrays
Definition
mtlPatchTable.h:85
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchParamBuffer
id< MTLBuffer > _patchParamBuffer
Definition
mtlPatchTable.h:79
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchArrays
PatchArrayVector _varyingPatchArrays
Definition
mtlPatchTable.h:81
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create
static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)
Definition
mtlPatchTable.h:54
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::~MTLPatchTable
~MTLPatchTable()
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchIndexBuffer
id< MTLBuffer > GetFVarPatchIndexBuffer(int fvarChannel=0) const
Definition
mtlPatchTable.h:70
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchArrays
PatchArrayVector const & GetVaryingPatchArrays() const
Definition
mtlPatchTable.h:65
OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_indexBuffer
id< MTLBuffer > _indexBuffer
Definition
mtlPatchTable.h:78
OpenSubdiv::OPENSUBDIV_VERSION::Osd::NonCopyable< MTLPatchTable >::NonCopyable
NonCopyable()
Definition
nonCopyable.h:37
types.h
opensubdiv
osd
mtlPatchTable.h
Generated on
for OpenSubdiv by
1.18.0