UniformsGroup.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>UniformsGroup - Three.js Docs</title>
  6. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7. <script src="../scripts/highlight.min.js"></script>
  8. <link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
  9. <link type="text/css" rel="stylesheet" href="../styles/page.css">
  10. </head>
  11. <body>
  12. <p class="inheritance" translate="no"><a href="EventDispatcher.html">EventDispatcher</a> → </p>
  13. <h1 translate="no">UniformsGroup</h1>
  14. <section>
  15. <header>
  16. <div class="class-description"><p>A class for managing multiple uniforms in a single group. The renderer will process
  17. such a definition as a single UBO.</p>
  18. <p>Since this class can only be used in context of <a href="ShaderMaterial.html">ShaderMaterial</a>, it is only supported
  19. in <a href="WebGLRenderer.html">WebGLRenderer</a>.</p></div>
  20. </header>
  21. <article>
  22. <div class="container-overview">
  23. <h2>Constructor</h2>
  24. <h3 class="name name-method" id="UniformsGroup" translate="no">new <a href="#UniformsGroup">UniformsGroup</a><span class="signature">()</span> </h3>
  25. <div class="method">
  26. <div class="description">
  27. <p>Constructs a new uniforms group.</p>
  28. </div>
  29. </div>
  30. </div>
  31. <h2 class="subsection-title">Properties</h2>
  32. <div class="member">
  33. <h3 class="name" id="buffer" translate="no">.<a href="#buffer">buffer</a><span class="type-signature"> : Float32Array</span> </h3>
  34. <div class="description">
  35. <p>A Float32 array buffer with the uniform values.</p>
  36. </div>
  37. <dl class="details">
  38. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="UniformBuffer.html#buffer">UniformBuffer#buffer</a></dt>
  39. </dl>
  40. </div>
  41. <div class="member">
  42. <h3 class="name" id="byteLength" translate="no">.<a href="#byteLength">byteLength</a><span class="type-signature"> : number</span> </h3>
  43. <div class="description">
  44. <p>The byte length of the buffer with correct buffer alignment.</p>
  45. </div>
  46. <dl class="details">
  47. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="UniformBuffer.html#byteLength">UniformBuffer#byteLength</a></dt>
  48. </dl>
  49. </div>
  50. <div class="member">
  51. <h3 class="name" id="id" translate="no">.<a href="#id">id</a><span class="type-signature"> : number</span> <span class="type-signature">(readonly) </span></h3>
  52. <div class="description">
  53. <p>The ID of the 3D object.</p>
  54. </div>
  55. </div>
  56. <div class="member">
  57. <h3 class="name" id="isUniformsGroup" translate="no">.<a href="#isUniformsGroup">isUniformsGroup</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
  58. <div class="description">
  59. <p>This flag can be used for type testing.</p>
  60. <p>Default is <code>true</code>.</p>
  61. </div>
  62. </div>
  63. <div class="member">
  64. <h3 class="name" id="isUniformsGroup" translate="no">.<a href="#isUniformsGroup">isUniformsGroup</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
  65. <div class="description">
  66. <p>This flag can be used for type testing.</p>
  67. <p>Default is <code>true</code>.</p>
  68. </div>
  69. </div>
  70. <div class="member">
  71. <h3 class="name" id="name" translate="no">.<a href="#name">name</a><span class="type-signature"> : string</span> </h3>
  72. <div class="description">
  73. <p>The name of the uniforms group.</p>
  74. </div>
  75. <dl class="details">
  76. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="UniformBuffer.html#name">UniformBuffer#name</a></dt>
  77. </dl>
  78. </div>
  79. <div class="member">
  80. <h3 class="name" id="uniforms" translate="no">.<a href="#uniforms">uniforms</a><span class="type-signature"> : Array.&lt;<a href="Uniform.html">Uniform</a>></span> </h3>
  81. <div class="description">
  82. <p>An array holding the uniforms.</p>
  83. </div>
  84. </div>
  85. <div class="member">
  86. <h3 class="name" id="uniforms" translate="no">.<a href="#uniforms">uniforms</a><span class="type-signature"> : Array.&lt;<a href="Uniform.html">Uniform</a>></span> </h3>
  87. <div class="description">
  88. <p>An array of uniform objects.</p>
  89. <p>The order of uniforms in this array must match the order of uniforms in the shader.</p>
  90. </div>
  91. </div>
  92. <div class="member">
  93. <h3 class="name" id="usage" translate="no">.<a href="#usage">usage</a><span class="type-signature"> : <a href="global.html#StaticDrawUsage">StaticDrawUsage</a> | <a href="global.html#DynamicDrawUsage">DynamicDrawUsage</a> | <a href="global.html#StreamDrawUsage">StreamDrawUsage</a> | <a href="global.html#StaticReadUsage">StaticReadUsage</a> | <a href="global.html#DynamicReadUsage">DynamicReadUsage</a> | <a href="global.html#StreamReadUsage">StreamReadUsage</a> | <a href="global.html#StaticCopyUsage">StaticCopyUsage</a> | <a href="global.html#DynamicCopyUsage">DynamicCopyUsage</a> | <a href="global.html#StreamCopyUsage">StreamCopyUsage</a></span> </h3>
  94. <div class="description">
  95. <p>The buffer usage.</p>
  96. <p>Default is <code>StaticDrawUsage</code>.</p>
  97. </div>
  98. </div>
  99. <div class="member">
  100. <h3 class="name" id="values" translate="no">.<a href="#values">values</a><span class="type-signature"> : Array.&lt;number></span> </h3>
  101. <div class="description">
  102. <p>An array with the raw uniform values.</p>
  103. </div>
  104. </div>
  105. <h2 class="subsection-title">Methods</h2>
  106. <h3 class="name name-method" id="add" translate="no">.<a href="#add">add</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  107. <div class="method">
  108. <div class="description">
  109. <p>Adds the given uniform to this uniforms group.</p>
  110. </div>
  111. <table class="params">
  112. <tbody>
  113. <tr>
  114. <td class="name">
  115. <strong>uniform</strong>
  116. </td>
  117. <td class="description last">
  118. <p>The uniform to add.</p>
  119. </td>
  120. </tr>
  121. </tbody>
  122. </table>
  123. <dl class="details">
  124. <dt class="tag-returns"><strong>Returns:</strong> A reference to this uniforms group.</dt>
  125. </dl>
  126. </div>
  127. <h3 class="name name-method" id="addUniform" translate="no">.<a href="#addUniform">addUniform</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  128. <div class="method">
  129. <div class="description">
  130. <p>Adds a uniform to this group.</p>
  131. </div>
  132. <table class="params">
  133. <tbody>
  134. <tr>
  135. <td class="name">
  136. <strong>uniform</strong>
  137. </td>
  138. <td class="description last">
  139. <p>The uniform to add.</p>
  140. </td>
  141. </tr>
  142. </tbody>
  143. </table>
  144. <dl class="details">
  145. <dt class="tag-returns"><strong>Returns:</strong> A reference to this group.</dt>
  146. </dl>
  147. </div>
  148. <h3 class="name name-method" id="clone" translate="no">.<a href="#clone">clone</a><span class="signature">()</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  149. <div class="method">
  150. <div class="description">
  151. <p>Returns a new uniforms group with copied values from this instance.</p>
  152. </div>
  153. <dl class="details">
  154. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="UniformBuffer.html#clone">UniformBuffer#clone</a></dt>
  155. </dl>
  156. <dl class="details">
  157. <dt class="tag-returns"><strong>Returns:</strong> A clone of this instance.</dt>
  158. </dl>
  159. </div>
  160. <h3 class="name name-method" id="copy" translate="no">.<a href="#copy">copy</a><span class="signature">( source : <span class="param-type"><a href="UniformsGroup.html">UniformsGroup</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  161. <div class="method">
  162. <div class="description">
  163. <p>Copies the values of the given uniforms group to this instance.</p>
  164. </div>
  165. <table class="params">
  166. <tbody>
  167. <tr>
  168. <td class="name">
  169. <strong>source</strong>
  170. </td>
  171. <td class="description last">
  172. <p>The uniforms group to copy.</p>
  173. </td>
  174. </tr>
  175. </tbody>
  176. </table>
  177. <dl class="details">
  178. <dt class="tag-returns"><strong>Returns:</strong> A reference to this uniforms group.</dt>
  179. </dl>
  180. </div>
  181. <h3 class="name name-method" id="dispose" translate="no">.<a href="#dispose">dispose</a><span class="signature">()</span> </h3>
  182. <div class="method">
  183. <div class="description">
  184. <p>Frees the GPU-related resources allocated by this instance. Call this
  185. method whenever this instance is no longer used in your app.</p>
  186. </div>
  187. <h5>Fires:</h5>
  188. <ul>
  189. <li><a href="Texture.html#event:dispose">Texture#event:dispose</a></li>
  190. </ul>
  191. </div>
  192. <h3 class="name name-method" id="remove" translate="no">.<a href="#remove">remove</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  193. <div class="method">
  194. <div class="description">
  195. <p>Removes the given uniform from this uniforms group.</p>
  196. </div>
  197. <table class="params">
  198. <tbody>
  199. <tr>
  200. <td class="name">
  201. <strong>uniform</strong>
  202. </td>
  203. <td class="description last">
  204. <p>The uniform to remove.</p>
  205. </td>
  206. </tr>
  207. </tbody>
  208. </table>
  209. <dl class="details">
  210. <dt class="tag-returns"><strong>Returns:</strong> A reference to this uniforms group.</dt>
  211. </dl>
  212. </div>
  213. <h3 class="name name-method" id="removeUniform" translate="no">.<a href="#removeUniform">removeUniform</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  214. <div class="method">
  215. <div class="description">
  216. <p>Removes a uniform from this group.</p>
  217. </div>
  218. <table class="params">
  219. <tbody>
  220. <tr>
  221. <td class="name">
  222. <strong>uniform</strong>
  223. </td>
  224. <td class="description last">
  225. <p>The uniform to remove.</p>
  226. </td>
  227. </tr>
  228. </tbody>
  229. </table>
  230. <dl class="details">
  231. <dt class="tag-returns"><strong>Returns:</strong> A reference to this group.</dt>
  232. </dl>
  233. </div>
  234. <h3 class="name name-method" id="setName" translate="no">.<a href="#setName">setName</a><span class="signature">( name : <span class="param-type">string</span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  235. <div class="method">
  236. <div class="description">
  237. <p>Sets the name of this uniforms group.</p>
  238. </div>
  239. <table class="params">
  240. <tbody>
  241. <tr>
  242. <td class="name">
  243. <strong>name</strong>
  244. </td>
  245. <td class="description last">
  246. <p>The name to set.</p>
  247. </td>
  248. </tr>
  249. </tbody>
  250. </table>
  251. <dl class="details">
  252. <dt class="tag-returns"><strong>Returns:</strong> A reference to this uniforms group.</dt>
  253. </dl>
  254. </div>
  255. <h3 class="name name-method" id="setUsage" translate="no">.<a href="#setUsage">setUsage</a><span class="signature">( value : <span class="param-type"><a href="global.html#StaticDrawUsage">StaticDrawUsage</a> | <a href="global.html#DynamicDrawUsage">DynamicDrawUsage</a> | <a href="global.html#StreamDrawUsage">StreamDrawUsage</a> | <a href="global.html#StaticReadUsage">StaticReadUsage</a> | <a href="global.html#DynamicReadUsage">DynamicReadUsage</a> | <a href="global.html#StreamReadUsage">StreamReadUsage</a> | <a href="global.html#StaticCopyUsage">StaticCopyUsage</a> | <a href="global.html#DynamicCopyUsage">DynamicCopyUsage</a> | <a href="global.html#StreamCopyUsage">StreamCopyUsage</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
  256. <div class="method">
  257. <div class="description">
  258. <p>Sets the usage of this uniforms group.</p>
  259. </div>
  260. <table class="params">
  261. <tbody>
  262. <tr>
  263. <td class="name">
  264. <strong>value</strong>
  265. </td>
  266. <td class="description last">
  267. <p>The usage to set.</p>
  268. </td>
  269. </tr>
  270. </tbody>
  271. </table>
  272. <dl class="details">
  273. <dt class="tag-returns"><strong>Returns:</strong> A reference to this uniforms group.</dt>
  274. </dl>
  275. </div>
  276. <h3 class="name name-method" id="update" translate="no">.<a href="#update">update</a><span class="signature">()</span><span class="type-signature"> : boolean</span> </h3>
  277. <div class="method">
  278. <div class="description">
  279. <p>Updates this group by updating each uniform object of
  280. the internal uniform list. The uniform objects check if their
  281. values has actually changed so this method only returns
  282. <code>true</code> if there is a real value change.</p>
  283. </div>
  284. <dl class="details">
  285. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="UniformBuffer.html#update">UniformBuffer#update</a></dt>
  286. </dl>
  287. <dl class="details">
  288. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniforms have been updated and
  289. must be uploaded to the GPU.</dt>
  290. </dl>
  291. </div>
  292. <h3 class="name name-method" id="updateByType" translate="no">.<a href="#updateByType">updateByType</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  293. <div class="method">
  294. <div class="description">
  295. <p>Updates a given uniform by calling an update method matching
  296. the uniforms type.</p>
  297. </div>
  298. <table class="params">
  299. <tbody>
  300. <tr>
  301. <td class="name">
  302. <strong>uniform</strong>
  303. </td>
  304. <td class="description last">
  305. <p>The uniform to update.</p>
  306. </td>
  307. </tr>
  308. </tbody>
  309. </table>
  310. <dl class="details">
  311. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  312. </dl>
  313. </div>
  314. <h3 class="name name-method" id="updateColor" translate="no">.<a href="#updateColor">updateColor</a><span class="signature">( uniform : <span class="param-type"><a href="ColorUniform.html">ColorUniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  315. <div class="method">
  316. <div class="description">
  317. <p>Updates a given Color uniform.</p>
  318. </div>
  319. <table class="params">
  320. <tbody>
  321. <tr>
  322. <td class="name">
  323. <strong>uniform</strong>
  324. </td>
  325. <td class="description last">
  326. <p>The Color uniform.</p>
  327. </td>
  328. </tr>
  329. </tbody>
  330. </table>
  331. <dl class="details">
  332. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  333. </dl>
  334. </div>
  335. <h3 class="name name-method" id="updateMatrix3" translate="no">.<a href="#updateMatrix3">updateMatrix3</a><span class="signature">( uniform : <span class="param-type"><a href="Matrix3Uniform.html">Matrix3Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  336. <div class="method">
  337. <div class="description">
  338. <p>Updates a given Matrix3 uniform.</p>
  339. </div>
  340. <table class="params">
  341. <tbody>
  342. <tr>
  343. <td class="name">
  344. <strong>uniform</strong>
  345. </td>
  346. <td class="description last">
  347. <p>The Matrix3 uniform.</p>
  348. </td>
  349. </tr>
  350. </tbody>
  351. </table>
  352. <dl class="details">
  353. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  354. </dl>
  355. </div>
  356. <h3 class="name name-method" id="updateMatrix4" translate="no">.<a href="#updateMatrix4">updateMatrix4</a><span class="signature">( uniform : <span class="param-type"><a href="Matrix4Uniform.html">Matrix4Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  357. <div class="method">
  358. <div class="description">
  359. <p>Updates a given Matrix4 uniform.</p>
  360. </div>
  361. <table class="params">
  362. <tbody>
  363. <tr>
  364. <td class="name">
  365. <strong>uniform</strong>
  366. </td>
  367. <td class="description last">
  368. <p>The Matrix4 uniform.</p>
  369. </td>
  370. </tr>
  371. </tbody>
  372. </table>
  373. <dl class="details">
  374. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  375. </dl>
  376. </div>
  377. <h3 class="name name-method" id="updateNumber" translate="no">.<a href="#updateNumber">updateNumber</a><span class="signature">( uniform : <span class="param-type"><a href="NumberUniform.html">NumberUniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  378. <div class="method">
  379. <div class="description">
  380. <p>Updates a given Number uniform.</p>
  381. </div>
  382. <table class="params">
  383. <tbody>
  384. <tr>
  385. <td class="name">
  386. <strong>uniform</strong>
  387. </td>
  388. <td class="description last">
  389. <p>The Number uniform.</p>
  390. </td>
  391. </tr>
  392. </tbody>
  393. </table>
  394. <dl class="details">
  395. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  396. </dl>
  397. </div>
  398. <h3 class="name name-method" id="updateVector2" translate="no">.<a href="#updateVector2">updateVector2</a><span class="signature">( uniform : <span class="param-type"><a href="Vector2Uniform.html">Vector2Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  399. <div class="method">
  400. <div class="description">
  401. <p>Updates a given Vector2 uniform.</p>
  402. </div>
  403. <table class="params">
  404. <tbody>
  405. <tr>
  406. <td class="name">
  407. <strong>uniform</strong>
  408. </td>
  409. <td class="description last">
  410. <p>The Vector2 uniform.</p>
  411. </td>
  412. </tr>
  413. </tbody>
  414. </table>
  415. <dl class="details">
  416. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  417. </dl>
  418. </div>
  419. <h3 class="name name-method" id="updateVector3" translate="no">.<a href="#updateVector3">updateVector3</a><span class="signature">( uniform : <span class="param-type"><a href="Vector3Uniform.html">Vector3Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  420. <div class="method">
  421. <div class="description">
  422. <p>Updates a given Vector3 uniform.</p>
  423. </div>
  424. <table class="params">
  425. <tbody>
  426. <tr>
  427. <td class="name">
  428. <strong>uniform</strong>
  429. </td>
  430. <td class="description last">
  431. <p>The Vector3 uniform.</p>
  432. </td>
  433. </tr>
  434. </tbody>
  435. </table>
  436. <dl class="details">
  437. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  438. </dl>
  439. </div>
  440. <h3 class="name name-method" id="updateVector4" translate="no">.<a href="#updateVector4">updateVector4</a><span class="signature">( uniform : <span class="param-type"><a href="Vector4Uniform.html">Vector4Uniform</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
  441. <div class="method">
  442. <div class="description">
  443. <p>Updates a given Vector4 uniform.</p>
  444. </div>
  445. <table class="params">
  446. <tbody>
  447. <tr>
  448. <td class="name">
  449. <strong>uniform</strong>
  450. </td>
  451. <td class="description last">
  452. <p>The Vector4 uniform.</p>
  453. </td>
  454. </tr>
  455. </tbody>
  456. </table>
  457. <dl class="details">
  458. <dt class="tag-returns"><strong>Returns:</strong> Whether the uniform has been updated or not.</dt>
  459. </dl>
  460. </div>
  461. <h2 class="subsection-title">Source</h2>
  462. <p>
  463. <a href="https://github.com/mrdoob/three.js/blob/master/src/core/UniformsGroup.js" translate="no" target="_blank" rel="noopener">src/core/UniformsGroup.js</a>
  464. </p>
  465. </article>
  466. </section>
  467. <script src="../scripts/linenumber.js"></script>
  468. <script src="../scripts/page.js"></script>
  469. </body>
  470. </html>
粤ICP备19079148号