Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _TessType は float の uniform 変数でマテリアルでは 0 を設定しているつもりなのだが、下の条件分岐が上手く動かず、
- HsConstantOutput hullConst(InputPatch<v2f, 3> i) {
- // 2~16 の値域をもつ _TessFactor から tessFactor を計算する
- float4 tessFactor;
- if (_TessType < 0.5) { // DISTANCE
- tessFactor = worldDistanceBasedTess(calcWorldSpaceBasePos(i[0].ws_vertex), _TESS_MIN_DIST, _TESS_MAX_DIST, _TessFactor);
- }
- else if (_TessType < 1.5) { // EDGE_LENGTH
- tessFactor = worldEdgeLengthBasedTess(i[0].ws_vertex, i[1].ws_vertex, i[2].ws_vertex, 64 / _TessFactor);
- }
- else { // FIXED
- tessFactor = _TessFactor.xxxx;
- }
- HsConstantOutput o = (HsConstantOutput) 0;
- o.tessFact[0] = tessFactor.x;
- o.tessFact[1] = tessFactor.y;
- o.tessFact[2] = tessFactor.z;
- o.insideTessFact = tessFactor.w;
- return o;
- }
- 条件分岐だけをコメントアウトすると意図通りの挙動が行われる。
- HsConstantOutput hullConst(InputPatch<v2f, 3> i) {
- // 2~16 の値域をもつ _TessFactor から tessFactor を計算する
- float4 tessFactor;
- // if (_TessType < 0.5) { // DISTANCE
- tessFactor = worldDistanceBasedTess(calcWorldSpaceBasePos(i[0].ws_vertex), _TESS_MIN_DIST, _TESS_MAX_DIST, _TessFactor);
- // }
- // else if (_TessType < 1.5) { // EDGE_LENGTH
- // tessFactor = worldEdgeLengthBasedTess(i[0].ws_vertex, i[1].ws_vertex, i[2].ws_vertex, 64 / _TessFactor);
- // }
- // else { // FIXED
- // tessFactor = _TessFactor.xxxx;
- // }
- HsConstantOutput o = (HsConstantOutput) 0;
- o.tessFact[0] = tessFactor.x;
- o.tessFact[1] = tessFactor.y;
- o.tessFact[2] = tessFactor.z;
- o.insideTessFact = tessFactor.w;
- return o;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement