Advertisement
whiteflare

Untitled

May 31st, 2020
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. _TessType は float の uniform 変数でマテリアルでは 0 を設定しているつもりなのだが、下の条件分岐が上手く動かず、
  2.  
  3. HsConstantOutput hullConst(InputPatch<v2f, 3> i) {
  4. // 2~16 の値域をもつ _TessFactor から tessFactor を計算する
  5. float4 tessFactor;
  6.  
  7. if (_TessType < 0.5) { // DISTANCE
  8. tessFactor = worldDistanceBasedTess(calcWorldSpaceBasePos(i[0].ws_vertex), _TESS_MIN_DIST, _TESS_MAX_DIST, _TessFactor);
  9. }
  10. else if (_TessType < 1.5) { // EDGE_LENGTH
  11. tessFactor = worldEdgeLengthBasedTess(i[0].ws_vertex, i[1].ws_vertex, i[2].ws_vertex, 64 / _TessFactor);
  12. }
  13. else { // FIXED
  14. tessFactor = _TessFactor.xxxx;
  15. }
  16.  
  17. HsConstantOutput o = (HsConstantOutput) 0;
  18. o.tessFact[0] = tessFactor.x;
  19. o.tessFact[1] = tessFactor.y;
  20. o.tessFact[2] = tessFactor.z;
  21. o.insideTessFact = tessFactor.w;
  22.  
  23. return o;
  24. }
  25.  
  26. 条件分岐だけをコメントアウトすると意図通りの挙動が行われる。
  27.  
  28. HsConstantOutput hullConst(InputPatch<v2f, 3> i) {
  29. // 2~16 の値域をもつ _TessFactor から tessFactor を計算する
  30. float4 tessFactor;
  31.  
  32. // if (_TessType < 0.5) { // DISTANCE
  33. tessFactor = worldDistanceBasedTess(calcWorldSpaceBasePos(i[0].ws_vertex), _TESS_MIN_DIST, _TESS_MAX_DIST, _TessFactor);
  34. // }
  35. // else if (_TessType < 1.5) { // EDGE_LENGTH
  36. // tessFactor = worldEdgeLengthBasedTess(i[0].ws_vertex, i[1].ws_vertex, i[2].ws_vertex, 64 / _TessFactor);
  37. // }
  38. // else { // FIXED
  39. // tessFactor = _TessFactor.xxxx;
  40. // }
  41.  
  42. HsConstantOutput o = (HsConstantOutput) 0;
  43. o.tessFact[0] = tessFactor.x;
  44. o.tessFact[1] = tessFactor.y;
  45. o.tessFact[2] = tessFactor.z;
  46. o.insideTessFact = tessFactor.w;
  47.  
  48. return o;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement