MCPcopy Create free account
hub / github.com/ImageEngine/cortex / primVar

Method primVar

src/IECoreScene/CurvesPrimitiveEvaluator.cpp:94–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92
93template<class T>
94T CurvesPrimitiveEvaluator::Result::primVar( const PrimitiveVariable &primVar, const float *coefficients ) const
95{
96 switch( primVar.interpolation )
97 {
98 case PrimitiveVariable::Constant :
99 {
100 const TypedData<T> *d = static_cast<TypedData<T> *>( primVar.data.get() );
101 return d->readable();
102 }
103 break;
104 case PrimitiveVariable::Uniform :
105 {
106 const vector<T> &d = static_cast<TypedData<vector<T> > *>( primVar.data.get() )->readable();
107 return d[m_curveIndex];
108 }
109 case PrimitiveVariable::Vertex :
110 {
111 const vector<T> &d = static_cast<TypedData<vector<T> > *>( primVar.data.get() )->readable();
112
113 if ( m_linear )
114 {
115 return (T)( coefficients[0] * d[m_vertexDataIndices[0]] +
116 coefficients[1] * d[m_vertexDataIndices[1]] );
117 }
118 else
119 {
120 return (T)( coefficients[0] * d[m_vertexDataIndices[0]] +
121 coefficients[1] * d[m_vertexDataIndices[1]] +
122 coefficients[2] * d[m_vertexDataIndices[2]] +
123 coefficients[3] * d[m_vertexDataIndices[3]] );
124 }
125 }
126 case PrimitiveVariable::Varying :
127 case PrimitiveVariable::FaceVarying :
128 {
129 const vector<T> &d = static_cast<TypedData<vector<T> > *>( primVar.data.get() )->readable();
130 return lerp( d[m_varyingDataIndices[0]], d[m_varyingDataIndices[1]], m_segmentV );
131 }
132 default :
133 throw InvalidArgumentException( "PrimitiveVariable has invalid interpolation" );
134 }
135}
136
137Imath::V3f CurvesPrimitiveEvaluator::Result::point() const
138{

Callers 1

runTestMethod · 0.80

Calls 3

InvalidArgumentExceptionFunction · 0.85
readableMethod · 0.80
getMethod · 0.45

Tested by 1

runTestMethod · 0.64