MCPcopy Create free account
hub / github.com/RenderKit/embree / eval

Method eval

kernels/subdiv/patch_eval_simd.h:77–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75 }
76
77 vbool eval(const vbool& valid, Ref This, const vfloat& u, const vfloat& v, const float dscale, const size_t depth)
78 {
79 if (!This) return false;
80 switch (This.type())
81 {
82 case Patch::BILINEAR_PATCH: {
83 ((typename Patch::BilinearPatch*)This.object())->patch.eval(valid,u,v,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,dscale,dstride,N);
84 return valid;
85 }
86 case Patch::BSPLINE_PATCH: {
87 ((typename Patch::BSplinePatch*)This.object())->patch.eval(valid,u,v,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,dscale,dstride,N);
88 return valid;
89 }
90 case Patch::BEZIER_PATCH: {
91 ((typename Patch::BezierPatch*)This.object())->patch.eval(valid,u,v,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,dscale,dstride,N);
92 return valid;
93 }
94 case Patch::GREGORY_PATCH: {
95 ((typename Patch::GregoryPatch*)This.object())->patch.eval(valid,u,v,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,dscale,dstride,N);
96 return valid;
97 }
98 case Patch::SUBDIVIDED_QUAD_PATCH: {
99 return eval_quad(valid,((typename Patch::SubdividedQuadPatch*)This.object()),u,v,dscale,depth);
100 }
101 case Patch::SUBDIVIDED_GENERAL_PATCH: {
102 assert(dscale == 1.0f);
103 return eval_general(valid,((typename Patch::SubdividedGeneralPatch*)This.object()),u,v,depth);
104 }
105 case Patch::EVAL_PATCH: {
106 CatmullClarkPatch patch; patch.deserialize(This.object());
107 FeatureAdaptiveEvalSimd<vbool,vint,vfloat,Vertex,Vertex_t>(patch,valid,u,v,dscale,depth,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,dstride,N);
108 return valid;
109 }
110 default:
111 assert(false);
112 return false;
113 }
114 }
115
116 private:
117 float* const P;

Callers

nothing calls this directly

Calls 2

objectMethod · 0.80
typeMethod · 0.45

Tested by

no test coverage detected