PrincipledMaterialSection.qml 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477
  1. // Copyright (C) 2021 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
  3. import QtQuick 2.15
  4. import QtQuick.Layouts 1.15
  5. import HelperWidgets 2.0
  6. import StudioTheme 1.0 as StudioTheme
  7. Column {
  8. width: parent.width
  9. Section {
  10. caption: qsTr("Principled Material")
  11. width: parent.width
  12. SectionLayout {
  13. id: baseSectionLayout
  14. property bool isAlphaMaskMode: alphaModeComboBox.currentIndex === 1
  15. PropertyLabel {
  16. text: qsTr("Alpha Mode")
  17. tooltip: qsTr("Sets the mode for how the alpha channel of base color is used.")
  18. }
  19. SecondColumnLayout {
  20. ComboBox {
  21. id: alphaModeComboBox
  22. scope: "PrincipledMaterial"
  23. model: ["Default", "Mask", "Blend", "Opaque"]
  24. backendValue: backendValues.alphaMode
  25. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  26. + StudioTheme.Values.actionIndicatorWidth
  27. }
  28. ExpandingSpacer {}
  29. }
  30. PropertyLabel {
  31. visible: baseSectionLayout.isAlphaMaskMode
  32. text: qsTr("Alpha Cutoff")
  33. tooltip: qsTr("Sets the cutoff value when using the Mask alphaMode.")
  34. }
  35. SecondColumnLayout {
  36. visible: baseSectionLayout.isAlphaMaskMode
  37. SpinBox {
  38. minimumValue: 0
  39. maximumValue: 1
  40. decimals: 2
  41. stepSize: 0.1
  42. sliderIndicatorVisible: true
  43. backendValue: backendValues.alphaCutoff
  44. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  45. + StudioTheme.Values.actionIndicatorWidth
  46. }
  47. ExpandingSpacer {}
  48. }
  49. PropertyLabel {
  50. text: qsTr("Blend Mode")
  51. tooltip: qsTr("Sets how the colors of the model rendered blend with those behind it.")
  52. }
  53. SecondColumnLayout {
  54. ComboBox {
  55. scope: "PrincipledMaterial"
  56. model: ["SourceOver", "Screen", "Multiply"]
  57. backendValue: backendValues.blendMode
  58. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  59. + StudioTheme.Values.actionIndicatorWidth
  60. }
  61. ExpandingSpacer {}
  62. }
  63. PropertyLabel {
  64. text: qsTr("Lighting")
  65. tooltip: qsTr("Sets which lighting method is used when generating this material.")
  66. }
  67. SecondColumnLayout {
  68. ComboBox {
  69. scope: "PrincipledMaterial"
  70. model: ["NoLighting", "FragmentLighting"]
  71. backendValue: backendValues.lighting
  72. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  73. + StudioTheme.Values.actionIndicatorWidth
  74. }
  75. ExpandingSpacer {}
  76. }
  77. }
  78. }
  79. Section {
  80. caption: qsTr("Base Color")
  81. width: parent.width
  82. SectionLayout {
  83. PropertyLabel {
  84. text: qsTr("Color")
  85. }
  86. ColorEditor {
  87. backendValue: backendValues.baseColor
  88. supportGradient: false
  89. }
  90. PropertyLabel {
  91. text: qsTr("Map")
  92. tooltip: qsTr("Sets a texture used to set the base color of the material.")
  93. }
  94. SecondColumnLayout {
  95. ItemFilterComboBox {
  96. typeFilter: "QtQuick3D.Texture"
  97. backendValue: backendValues.baseColorMap
  98. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  99. + StudioTheme.Values.actionIndicatorWidth
  100. }
  101. ExpandingSpacer {}
  102. }
  103. PropertyLabel {
  104. text: qsTr("Use Single Channel")
  105. tooltip: qsTr("Use only a single channel from baseColorMap.")
  106. }
  107. SecondColumnLayout {
  108. CheckBox {
  109. id: baseColorSingleChannelCheckBox
  110. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  111. backendValue: backendValues.baseColorSingleChannelEnabled
  112. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  113. + StudioTheme.Values.actionIndicatorWidth
  114. }
  115. ExpandingSpacer {}
  116. }
  117. PropertyLabel {
  118. text: qsTr("Channel")
  119. tooltip: qsTr("Sets the texture channel used to read the base color value from baseColorMap.")
  120. }
  121. SecondColumnLayout {
  122. ComboBox {
  123. enabled: baseColorSingleChannelCheckBox.checked
  124. scope: "Material"
  125. model: ["R", "G", "B", "A"]
  126. backendValue: backendValues.baseColorChannel
  127. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  128. + StudioTheme.Values.actionIndicatorWidth
  129. }
  130. ExpandingSpacer {}
  131. }
  132. }
  133. }
  134. Section {
  135. caption: qsTr("Metalness")
  136. width: parent.width
  137. SectionLayout {
  138. PropertyLabel {
  139. text: qsTr("Amount")
  140. tooltip: qsTr("Sets the metalness of the the material.")
  141. }
  142. SecondColumnLayout {
  143. SpinBox {
  144. minimumValue: 0
  145. maximumValue: 1
  146. decimals: 2
  147. stepSize: 0.1
  148. sliderIndicatorVisible: true
  149. backendValue: backendValues.metalness
  150. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  151. + StudioTheme.Values.actionIndicatorWidth
  152. }
  153. ExpandingSpacer {}
  154. }
  155. PropertyLabel {
  156. text: qsTr("Map")
  157. tooltip: qsTr("Sets a texture to be used to set the metalness amount for the different parts of the material.")
  158. }
  159. SecondColumnLayout {
  160. ItemFilterComboBox {
  161. typeFilter: "QtQuick3D.Texture"
  162. backendValue: backendValues.metalnessMap
  163. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  164. + StudioTheme.Values.actionIndicatorWidth
  165. }
  166. ExpandingSpacer {}
  167. }
  168. PropertyLabel {
  169. text: qsTr("Channel")
  170. tooltip: qsTr("Sets the texture channel used to read the metalness value from metalnessMap.")
  171. }
  172. SecondColumnLayout {
  173. ComboBox {
  174. scope: "Material"
  175. model: ["R", "G", "B", "A"]
  176. backendValue: backendValues.metalnessChannel
  177. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  178. + StudioTheme.Values.actionIndicatorWidth
  179. }
  180. ExpandingSpacer {}
  181. }
  182. }
  183. }
  184. Section {
  185. caption: qsTr("Roughness")
  186. width: parent.width
  187. SectionLayout {
  188. PropertyLabel {
  189. text: qsTr("Roughness")
  190. tooltip: qsTr("Sets the size of the specular highlight generated from lights, and the clarity of reflections in general.")
  191. }
  192. SecondColumnLayout {
  193. SpinBox {
  194. minimumValue: 0
  195. maximumValue: 1
  196. decimals: 2
  197. stepSize: 0.1
  198. sliderIndicatorVisible: true
  199. backendValue: backendValues.roughness
  200. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  201. + StudioTheme.Values.actionIndicatorWidth
  202. }
  203. ExpandingSpacer {}
  204. }
  205. PropertyLabel {
  206. text: qsTr("Map")
  207. tooltip: qsTr("Sets a texture to control the specular roughness of the material.")
  208. }
  209. SecondColumnLayout {
  210. ItemFilterComboBox {
  211. typeFilter: "QtQuick3D.Texture"
  212. backendValue: backendValues.roughnessMap
  213. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  214. + StudioTheme.Values.actionIndicatorWidth
  215. }
  216. ExpandingSpacer {}
  217. }
  218. PropertyLabel {
  219. text: qsTr("Channel")
  220. tooltip: qsTr("Sets the texture channel used to read the roughness value from roughnessMap.")
  221. }
  222. SecondColumnLayout {
  223. ComboBox {
  224. scope: "Material"
  225. model: ["R", "G", "B", "A"]
  226. backendValue: backendValues.roughnessChannel
  227. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  228. + StudioTheme.Values.actionIndicatorWidth
  229. }
  230. ExpandingSpacer {}
  231. }
  232. }
  233. }
  234. Section {
  235. caption: qsTr("Normal")
  236. width: parent.width
  237. SectionLayout {
  238. PropertyLabel {
  239. text: qsTr("Map")
  240. tooltip: qsTr("Sets an RGB image used to simulate fine geometry displacement across the surface of the material.")
  241. }
  242. SecondColumnLayout {
  243. ItemFilterComboBox {
  244. typeFilter: "QtQuick3D.Texture"
  245. backendValue: backendValues.normalMap
  246. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  247. + StudioTheme.Values.actionIndicatorWidth
  248. }
  249. ExpandingSpacer {}
  250. }
  251. PropertyLabel {
  252. text: qsTr("Strength")
  253. tooltip: qsTr("Sets the amount of simulated displacement for the normalMap.")
  254. }
  255. SecondColumnLayout {
  256. SpinBox {
  257. minimumValue: 0
  258. maximumValue: 1
  259. decimals: 2
  260. stepSize: 0.1
  261. sliderIndicatorVisible: true
  262. backendValue: backendValues.normalStrength
  263. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  264. + StudioTheme.Values.actionIndicatorWidth
  265. }
  266. ExpandingSpacer {}
  267. }
  268. }
  269. }
  270. Section {
  271. caption: qsTr("Occlusion")
  272. width: parent.width
  273. SectionLayout {
  274. PropertyLabel {
  275. text: qsTr("Amount")
  276. tooltip: qsTr("Sets the factor used to modify the values from the occlusionMap texture.")
  277. }
  278. SecondColumnLayout {
  279. SpinBox {
  280. minimumValue: 0
  281. maximumValue: 1
  282. decimals: 2
  283. stepSize: 0.1
  284. sliderIndicatorVisible: true
  285. backendValue: backendValues.occlusionAmount
  286. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  287. + StudioTheme.Values.actionIndicatorWidth
  288. }
  289. ExpandingSpacer {}
  290. }
  291. PropertyLabel {
  292. text: qsTr("Map")
  293. tooltip: qsTr("Sets a texture used to determine how much indirect light the different areas of the material should receive.")
  294. }
  295. SecondColumnLayout {
  296. ItemFilterComboBox {
  297. typeFilter: "QtQuick3D.Texture"
  298. backendValue: backendValues.occlusionMap
  299. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  300. + StudioTheme.Values.actionIndicatorWidth
  301. }
  302. ExpandingSpacer {}
  303. }
  304. PropertyLabel {
  305. text: qsTr("Channel")
  306. tooltip: qsTr("Sets the texture channel used to read the occlusion value from occlusionMap.")
  307. }
  308. SecondColumnLayout {
  309. ComboBox {
  310. scope: "Material"
  311. model: ["R", "G", "B", "A"]
  312. backendValue: backendValues.occlusionChannel
  313. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  314. + StudioTheme.Values.actionIndicatorWidth
  315. }
  316. ExpandingSpacer {}
  317. }
  318. }
  319. }
  320. Section {
  321. caption: qsTr("Opacity")
  322. width: parent.width
  323. SectionLayout {
  324. PropertyLabel {
  325. text: qsTr("Amount")
  326. tooltip: qsTr("Sets the opacity of just this material, separate from the model.")
  327. }
  328. SecondColumnLayout {
  329. SpinBox {
  330. minimumValue: 0
  331. maximumValue: 1
  332. decimals: 2
  333. stepSize: 0.1
  334. sliderIndicatorVisible: true
  335. backendValue: backendValues.opacity
  336. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  337. + StudioTheme.Values.actionIndicatorWidth
  338. }
  339. ExpandingSpacer {}
  340. }
  341. PropertyLabel {
  342. text: qsTr("Map")
  343. tooltip: qsTr("Sets a texture used to control the opacity differently for different parts of the material.")
  344. }
  345. SecondColumnLayout {
  346. ItemFilterComboBox {
  347. typeFilter: "QtQuick3D.Texture"
  348. backendValue: backendValues.opacityMap
  349. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  350. + StudioTheme.Values.actionIndicatorWidth
  351. }
  352. ExpandingSpacer {}
  353. }
  354. PropertyLabel {
  355. text: qsTr("Channel")
  356. tooltip: qsTr("Sets the texture channel used to read the opacity value from opacityMap.")
  357. }
  358. SecondColumnLayout {
  359. ComboBox {
  360. scope: "Material"
  361. model: ["R", "G", "B", "A"]
  362. backendValue: backendValues.opacityChannel
  363. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  364. + StudioTheme.Values.actionIndicatorWidth
  365. }
  366. ExpandingSpacer {}
  367. }
  368. PropertyLabel {
  369. text: qsTr("Invert Channel")
  370. tooltip: qsTr("Invert the values of the opacity map.")
  371. }
  372. SecondColumnLayout {
  373. CheckBox {
  374. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  375. backendValue: backendValues.invertOpacityMapValue
  376. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  377. + StudioTheme.Values.actionIndicatorWidth
  378. }
  379. ExpandingSpacer {}
  380. }
  381. }
  382. }
  383. Section {
  384. caption: qsTr("Emissive Color")
  385. width: parent.width
  386. SectionLayout {
  387. PropertyLabel {
  388. text: qsTr("Map")
  389. tooltip: qsTr("Sets a texture to be used to set the emissive factor for different parts of the material.")
  390. }
  391. SecondColumnLayout {
  392. ItemFilterComboBox {
  393. typeFilter: "QtQuick3D.Texture"
  394. backendValue: backendValues.emissiveMap
  395. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  396. + StudioTheme.Values.actionIndicatorWidth
  397. }
  398. ExpandingSpacer {}
  399. }
  400. PropertyLabel {
  401. text: qsTr("Factor")
  402. tooltip: qsTr("Sets the color of self-illumination for this material.")
  403. }
  404. SecondColumnLayout {
  405. SpinBox {
  406. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  407. + StudioTheme.Values.actionIndicatorWidth
  408. minimumValue: -9999999
  409. maximumValue: 9999999
  410. decimals: 2
  411. stepSize: 0.01
  412. backendValue: backendValues.emissiveFactor_x
  413. }
  414. Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
  415. ControlLabel {
  416. text: "R"
  417. color: StudioTheme.Values.theme3DAxisXColor
  418. }
  419. ExpandingSpacer {}
  420. }
  421. PropertyLabel {}
  422. SecondColumnLayout {
  423. SpinBox {
  424. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  425. + StudioTheme.Values.actionIndicatorWidth
  426. minimumValue: -9999999
  427. maximumValue: 9999999
  428. decimals: 2
  429. stepSize: 0.01
  430. backendValue: backendValues.emissiveFactor_y
  431. }
  432. Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
  433. ControlLabel {
  434. text: "G"
  435. color: StudioTheme.Values.theme3DAxisYColor
  436. }
  437. ExpandingSpacer {}
  438. }
  439. PropertyLabel {}
  440. SecondColumnLayout {
  441. SpinBox {
  442. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  443. + StudioTheme.Values.actionIndicatorWidth
  444. minimumValue: -9999999
  445. maximumValue: 9999999
  446. decimals: 2
  447. stepSize: 0.01
  448. backendValue: backendValues.emissiveFactor_z
  449. }
  450. Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
  451. ControlLabel {
  452. text: "B"
  453. color: StudioTheme.Values.theme3DAxisZColor
  454. }
  455. ExpandingSpacer {}
  456. }
  457. PropertyLabel {
  458. text: qsTr("Use Single Channel")
  459. tooltip: qsTr("Use only a single channel from emissiveMap.")
  460. }
  461. SecondColumnLayout {
  462. CheckBox {
  463. id: emissiveSingleChannelCheckBox
  464. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  465. backendValue: backendValues.emissiveSingleChannelEnabled
  466. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  467. + StudioTheme.Values.actionIndicatorWidth
  468. }
  469. ExpandingSpacer {}
  470. }
  471. PropertyLabel {
  472. text: qsTr("Channel")
  473. tooltip: qsTr("Sets the texture channel used to read the emissive value from emissiveMap.")
  474. }
  475. SecondColumnLayout {
  476. ComboBox {
  477. enabled: emissiveSingleChannelCheckBox.checked
  478. scope: "Material"
  479. model: ["R", "G", "B", "A"]
  480. backendValue: backendValues.emissiveChannel
  481. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  482. + StudioTheme.Values.actionIndicatorWidth
  483. }
  484. ExpandingSpacer {}
  485. }
  486. }
  487. }
  488. Section {
  489. caption: qsTr("Height")
  490. width: parent.width
  491. SectionLayout {
  492. PropertyLabel {
  493. text: qsTr("Amount")
  494. tooltip: qsTr("Sets the factor used to modify the values from the heightMap texture.")
  495. }
  496. SecondColumnLayout {
  497. SpinBox {
  498. minimumValue: 0
  499. maximumValue: 1
  500. decimals: 2
  501. stepSize: 0.1
  502. sliderIndicatorVisible: true
  503. backendValue: backendValues.heightAmount
  504. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  505. + StudioTheme.Values.actionIndicatorWidth
  506. }
  507. ExpandingSpacer {}
  508. }
  509. PropertyLabel {
  510. text: qsTr("Map")
  511. tooltip: qsTr("Sets a texture used to determine the height the texture will be displaced when rendered through the use of Parallax Mapping.")
  512. }
  513. SecondColumnLayout {
  514. ItemFilterComboBox {
  515. typeFilter: "QtQuick3D.Texture"
  516. backendValue: backendValues.heightMap
  517. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  518. + StudioTheme.Values.actionIndicatorWidth
  519. }
  520. ExpandingSpacer {}
  521. }
  522. PropertyLabel {
  523. text: qsTr("Channel")
  524. tooltip: qsTr("Sets the texture channel used to read the height value from heightMap.")
  525. }
  526. SecondColumnLayout {
  527. ComboBox {
  528. scope: "Material"
  529. model: ["R", "G", "B", "A"]
  530. backendValue: backendValues.heightChannel
  531. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  532. + StudioTheme.Values.actionIndicatorWidth
  533. }
  534. ExpandingSpacer {}
  535. }
  536. PropertyLabel {
  537. text: qsTr("Min Map Samples")
  538. tooltip: qsTr("Sets the minimum number of samples used for performing Parallex Occlusion Mapping using the heightMap.")
  539. }
  540. SecondColumnLayout {
  541. SpinBox {
  542. minimumValue: 1
  543. maximumValue: 128
  544. decimals: 0
  545. sliderIndicatorVisible: true
  546. backendValue: backendValues.minHeightMapSamples
  547. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  548. + StudioTheme.Values.actionIndicatorWidth
  549. }
  550. ExpandingSpacer {}
  551. }
  552. PropertyLabel {
  553. text: qsTr("Max Map Samples")
  554. tooltip: qsTr("Sets the maximum number of samples used for performing Parallex Occlusion Mapping using the heightMap.")
  555. }
  556. SecondColumnLayout {
  557. SpinBox {
  558. minimumValue: 1
  559. maximumValue: 256
  560. decimals: 0
  561. sliderIndicatorVisible: true
  562. backendValue: backendValues.maxHeightMapSamples
  563. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  564. + StudioTheme.Values.actionIndicatorWidth
  565. }
  566. ExpandingSpacer {}
  567. }
  568. }
  569. }
  570. Section {
  571. caption: qsTr("Clearcoat")
  572. width: parent.width
  573. SectionLayout {
  574. PropertyLabel {
  575. text: qsTr("Amount")
  576. tooltip: qsTr("Sets the intensity of the clearcoat layer.")
  577. }
  578. SecondColumnLayout {
  579. SpinBox {
  580. minimumValue: 0
  581. maximumValue: 1
  582. decimals: 2
  583. stepSize: 0.1
  584. sliderIndicatorVisible: true
  585. backendValue: backendValues.clearcoatAmount
  586. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  587. + StudioTheme.Values.actionIndicatorWidth
  588. }
  589. ExpandingSpacer {}
  590. }
  591. PropertyLabel {
  592. text: qsTr("Map")
  593. tooltip: qsTr("Sets a texture used to determine the intensity of the clearcoat layer.")
  594. }
  595. SecondColumnLayout {
  596. ItemFilterComboBox {
  597. typeFilter: "QtQuick3D.Texture"
  598. backendValue: backendValues.clearcoatMap
  599. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  600. + StudioTheme.Values.actionIndicatorWidth
  601. }
  602. ExpandingSpacer {}
  603. }
  604. PropertyLabel {
  605. text: qsTr("Channel")
  606. tooltip: qsTr("Sets the texture channel used to read the intensity from clearcoatMap.")
  607. }
  608. SecondColumnLayout {
  609. ComboBox {
  610. scope: "Material"
  611. model: ["R", "G", "B", "A"]
  612. backendValue: backendValues.clearcoatChannel
  613. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  614. + StudioTheme.Values.actionIndicatorWidth
  615. }
  616. ExpandingSpacer {}
  617. }
  618. PropertyLabel {
  619. text: qsTr("Roughness Amount")
  620. tooltip: qsTr("Sets the roughness of the clearcoat layer.")
  621. }
  622. SecondColumnLayout {
  623. SpinBox {
  624. minimumValue: 0
  625. maximumValue: 1
  626. decimals: 2
  627. stepSize: 0.1
  628. sliderIndicatorVisible: true
  629. backendValue: backendValues.clearcoatRoughnessAmount
  630. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  631. + StudioTheme.Values.actionIndicatorWidth
  632. }
  633. ExpandingSpacer {}
  634. }
  635. PropertyLabel {
  636. text: qsTr("Roughness Map")
  637. tooltip: qsTr("Sets a texture used to determine the roughness of the clearcoat layer.")
  638. }
  639. SecondColumnLayout {
  640. ItemFilterComboBox {
  641. typeFilter: "QtQuick3D.Texture"
  642. backendValue: backendValues.clearcoatRoughnessMap
  643. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  644. + StudioTheme.Values.actionIndicatorWidth
  645. }
  646. ExpandingSpacer {}
  647. }
  648. PropertyLabel {
  649. text: qsTr("Roughness Channel")
  650. tooltip: qsTr("Sets the texture channel used to read the roughness from clearcoatRoughnessMap.")
  651. }
  652. SecondColumnLayout {
  653. ComboBox {
  654. scope: "Material"
  655. model: ["R", "G", "B", "A"]
  656. backendValue: backendValues.clearcoatRoughnessChannel
  657. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  658. + StudioTheme.Values.actionIndicatorWidth
  659. }
  660. ExpandingSpacer {}
  661. }
  662. PropertyLabel {
  663. text: qsTr("Normal Map")
  664. tooltip: qsTr("Sets a texture used as a normalMap for the clearcoat layer.")
  665. }
  666. SecondColumnLayout {
  667. ItemFilterComboBox {
  668. typeFilter: "QtQuick3D.Texture"
  669. backendValue: backendValues.clearcoatNormalMap
  670. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  671. + StudioTheme.Values.actionIndicatorWidth
  672. }
  673. ExpandingSpacer {}
  674. }
  675. PropertyLabel {
  676. text: qsTr("Normal Strength")
  677. tooltip: qsTr("Sets the Normal Strength of the clearcoat layer.")
  678. }
  679. SecondColumnLayout {
  680. SpinBox {
  681. minimumValue: 0
  682. maximumValue: 1
  683. decimals: 2
  684. stepSize: 0.1
  685. sliderIndicatorVisible: true
  686. backendValue: backendValues.clearcoatNormalStrength
  687. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  688. + StudioTheme.Values.actionIndicatorWidth
  689. }
  690. ExpandingSpacer {}
  691. }
  692. PropertyLabel {
  693. text: qsTr("Fresnel Power")
  694. tooltip: qsTr("Sets the fresnel power.")
  695. }
  696. SecondColumnLayout {
  697. SpinBox {
  698. minimumValue: 0
  699. maximumValue: 1000
  700. stepSize: 0.1
  701. decimals: 2
  702. backendValue: backendValues.clearcoatFresnelPower
  703. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  704. + StudioTheme.Values.actionIndicatorWidth
  705. }
  706. ExpandingSpacer {}
  707. }
  708. PropertyLabel {
  709. text: qsTr("Enable scale and bias")
  710. tooltip: qsTr("Sets whether fresnel scale and bias are enabled.")
  711. }
  712. SecondColumnLayout {
  713. CheckBox {
  714. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  715. backendValue: backendValues.clearcoatFresnelScaleBiasEnabled
  716. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  717. + StudioTheme.Values.actionIndicatorWidth
  718. }
  719. ExpandingSpacer {}
  720. }
  721. PropertyLabel {
  722. text: qsTr("Fresnel Scale")
  723. tooltip: qsTr("Sets the fresnel scale.")
  724. }
  725. SecondColumnLayout {
  726. SpinBox {
  727. minimumValue: 0
  728. maximumValue: 5
  729. stepSize: 0.1
  730. decimals: 2
  731. backendValue: backendValues.clearcoatFresnelScale
  732. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  733. + StudioTheme.Values.actionIndicatorWidth
  734. }
  735. ExpandingSpacer {}
  736. }
  737. PropertyLabel {
  738. text: qsTr("Fresnel Bias")
  739. tooltip: qsTr("Sets the fresnel bias.")
  740. }
  741. SecondColumnLayout {
  742. SpinBox {
  743. minimumValue: -1
  744. maximumValue: 1
  745. stepSize: 0.1
  746. decimals: 2
  747. backendValue: backendValues.clearcoatFresnelBias
  748. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  749. + StudioTheme.Values.actionIndicatorWidth
  750. }
  751. ExpandingSpacer {}
  752. }
  753. }
  754. }
  755. Section {
  756. caption: qsTr("Refraction")
  757. width: parent.width
  758. SectionLayout {
  759. PropertyLabel {
  760. text: qsTr("Transmission Factor")
  761. tooltip: qsTr("Sets the base percentage of light that is transmitted through the surface.")
  762. }
  763. SecondColumnLayout {
  764. SpinBox {
  765. minimumValue: 0
  766. maximumValue: 1
  767. decimals: 2
  768. stepSize: 0.1
  769. sliderIndicatorVisible: true
  770. backendValue: backendValues.transmissionFactor
  771. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  772. + StudioTheme.Values.actionIndicatorWidth
  773. }
  774. ExpandingSpacer {}
  775. }
  776. PropertyLabel {
  777. text: qsTr("Transmission Map")
  778. tooltip: qsTr("Sets a texture that contains the transmission percentage of a the surface.")
  779. }
  780. SecondColumnLayout {
  781. ItemFilterComboBox {
  782. typeFilter: "QtQuick3D.Texture"
  783. backendValue: backendValues.transmissionMap
  784. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  785. + StudioTheme.Values.actionIndicatorWidth
  786. }
  787. ExpandingSpacer {}
  788. }
  789. PropertyLabel {
  790. text: qsTr("Transmission Channel")
  791. tooltip: qsTr("Sets the texture channel used to read the transmission percentage from transmissionMap.")
  792. }
  793. SecondColumnLayout {
  794. ComboBox {
  795. scope: "Material"
  796. model: ["R", "G", "B", "A"]
  797. backendValue: backendValues.transmissionChannel
  798. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  799. + StudioTheme.Values.actionIndicatorWidth
  800. }
  801. ExpandingSpacer {}
  802. }
  803. PropertyLabel {
  804. text: qsTr("Index of Refraction")
  805. tooltip: qsTr("Sets the index of refraction of the material.")
  806. }
  807. SecondColumnLayout {
  808. SpinBox {
  809. minimumValue: 1
  810. maximumValue: 3
  811. decimals: 2
  812. stepSize: 0.1
  813. sliderIndicatorVisible: true
  814. backendValue: backendValues.indexOfRefraction
  815. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  816. + StudioTheme.Values.actionIndicatorWidth
  817. }
  818. ExpandingSpacer {}
  819. }
  820. PropertyLabel {
  821. text: qsTr("Thickness Factor")
  822. tooltip: qsTr("Sets the thickness of the volume beneath the surface in model coordinate space.")
  823. }
  824. SecondColumnLayout {
  825. SpinBox {
  826. minimumValue: 0
  827. maximumValue: Infinity
  828. decimals: 2
  829. backendValue: backendValues.thicknessFactor
  830. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  831. + StudioTheme.Values.actionIndicatorWidth
  832. }
  833. ExpandingSpacer {}
  834. }
  835. PropertyLabel {
  836. text: qsTr("Thickness Map")
  837. tooltip: qsTr("Sets a texture that contains the thickness of a the material volume.")
  838. }
  839. SecondColumnLayout {
  840. ItemFilterComboBox {
  841. typeFilter: "QtQuick3D.Texture"
  842. backendValue: backendValues.thicknessMap
  843. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  844. + StudioTheme.Values.actionIndicatorWidth
  845. }
  846. ExpandingSpacer {}
  847. }
  848. PropertyLabel {
  849. text: qsTr("Thickness Channel")
  850. tooltip: qsTr("Sets the texture channel used to read the thickness amount from thicknessMap.")
  851. }
  852. SecondColumnLayout {
  853. ComboBox {
  854. scope: "Material"
  855. model: ["R", "G", "B", "A"]
  856. backendValue: backendValues.thicknessChannel
  857. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  858. + StudioTheme.Values.actionIndicatorWidth
  859. }
  860. ExpandingSpacer {}
  861. }
  862. PropertyLabel {
  863. text: qsTr("Attenuation Color")
  864. tooltip: qsTr("Sets the color that white lights turn into due to absorption when reaching the attenuation distance.")
  865. }
  866. ColorEditor {
  867. backendValue: backendValues.attenuationColor
  868. supportGradient: false
  869. }
  870. PropertyLabel {
  871. text: qsTr("Attenuation Distance")
  872. tooltip: qsTr("Sets the average distance in world space that light travels in the medium before interacting with a particle.")
  873. }
  874. SecondColumnLayout {
  875. SpinBox {
  876. minimumValue: 0
  877. maximumValue: Infinity
  878. decimals: 2
  879. backendValue: backendValues.attenuationDistance
  880. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  881. + StudioTheme.Values.actionIndicatorWidth
  882. }
  883. ExpandingSpacer {}
  884. }
  885. }
  886. }
  887. Section {
  888. caption: qsTr("Fresnel")
  889. width: parent.width
  890. SectionLayout {
  891. PropertyLabel {
  892. text: qsTr("Fresnel Power")
  893. tooltip: qsTr("Sets the fresnel power.")
  894. }
  895. SecondColumnLayout {
  896. SpinBox {
  897. minimumValue: 0
  898. maximumValue: 1000
  899. stepSize: 0.1
  900. decimals: 2
  901. backendValue: backendValues.fresnelPower
  902. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  903. + StudioTheme.Values.actionIndicatorWidth
  904. }
  905. ExpandingSpacer {}
  906. }
  907. PropertyLabel {
  908. text: qsTr("Enable scale and bias")
  909. tooltip: qsTr("Sets whether fresnel scale and bias are enabled.")
  910. }
  911. SecondColumnLayout {
  912. CheckBox {
  913. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  914. backendValue: backendValues.fresnelScaleBiasEnabled
  915. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  916. + StudioTheme.Values.actionIndicatorWidth
  917. }
  918. ExpandingSpacer {}
  919. }
  920. PropertyLabel {
  921. text: qsTr("Fresnel Scale")
  922. tooltip: qsTr("Sets the fresnel scale.")
  923. }
  924. SecondColumnLayout {
  925. SpinBox {
  926. minimumValue: 0
  927. maximumValue: 5
  928. stepSize: 0.1
  929. decimals: 2
  930. backendValue: backendValues.fresnelScale
  931. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  932. + StudioTheme.Values.actionIndicatorWidth
  933. }
  934. ExpandingSpacer {}
  935. }
  936. PropertyLabel {
  937. text: qsTr("Fresnel Bias")
  938. tooltip: qsTr("Sets the fresnel bias.")
  939. }
  940. SecondColumnLayout {
  941. SpinBox {
  942. minimumValue: -1
  943. maximumValue: 1
  944. stepSize: 0.1
  945. decimals: 2
  946. backendValue: backendValues.fresnelBias
  947. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  948. + StudioTheme.Values.actionIndicatorWidth
  949. }
  950. ExpandingSpacer {}
  951. }
  952. }
  953. }
  954. Section {
  955. caption: qsTr("Vertex Color")
  956. width: parent.width
  957. SectionLayout {
  958. PropertyLabel {
  959. text: qsTr("Show Colors")
  960. tooltip: qsTr("Sets whether vertex colors are used to modulate the base color.")
  961. }
  962. SecondColumnLayout {
  963. CheckBox {
  964. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  965. backendValue: backendValues.vertexColorsEnabled
  966. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  967. + StudioTheme.Values.actionIndicatorWidth
  968. }
  969. ExpandingSpacer {}
  970. }
  971. PropertyLabel {
  972. text: qsTr("Enable Masks")
  973. tooltip: qsTr("Sets whether vertex colors mask are used.")
  974. }
  975. SecondColumnLayout {
  976. CheckBox {
  977. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  978. backendValue: backendValues.vertexColorsMaskEnabled
  979. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  980. + StudioTheme.Values.actionIndicatorWidth
  981. }
  982. ExpandingSpacer {}
  983. }
  984. ListModel {
  985. id: colorMaskModel
  986. ListElement {
  987. name: "Roughness"
  988. flag: "RoughnessMask"
  989. }
  990. ListElement {
  991. name: "Normal Strength"
  992. flag: "NormalStrengthMask"
  993. }
  994. ListElement {
  995. name: "Specular Amount"
  996. flag: "SpecularAmountMask"
  997. }
  998. ListElement {
  999. name: "Clearcoat Amount"
  1000. flag: "ClearcoatAmountMask"
  1001. }
  1002. ListElement {
  1003. name: "Clearcoat Roughness Amount"
  1004. flag: "ClearcoatRoughnessAmountMask"
  1005. }
  1006. ListElement {
  1007. name: "Clearcoat Normal Strength"
  1008. flag: "ClearcoatNormalStrengthMask"
  1009. }
  1010. ListElement {
  1011. name: "Height Amount"
  1012. flag: "HeightAmountMask"
  1013. }
  1014. ListElement {
  1015. name: "Metalness"
  1016. flag: "MetalnessMask"
  1017. }
  1018. ListElement {
  1019. name: "Occlusion Amount"
  1020. flag: "OcclusionAmountMask"
  1021. }
  1022. ListElement {
  1023. name: "Thickness Factor"
  1024. flag: "ThicknessFactorMask"
  1025. }
  1026. ListElement {
  1027. name: "Transmission Factor"
  1028. flag: "TransmissionFactorMask"
  1029. }
  1030. }
  1031. PropertyLabel {
  1032. text: qsTr("Mask R")
  1033. tooltip: qsTr("Sets the properties masked by the vertex color red channel.")
  1034. }
  1035. SecondColumnLayout {
  1036. FlagsComboBox {
  1037. backendValue: backendValues.vertexColorRedMask
  1038. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1039. + StudioTheme.Values.actionIndicatorWidth
  1040. itemsModel: colorMaskModel
  1041. scope: "PrincipledMaterial"
  1042. zeroFlag: "NoMask"
  1043. }
  1044. ExpandingSpacer {}
  1045. }
  1046. PropertyLabel {
  1047. text: qsTr("Mask G")
  1048. tooltip: qsTr("Sets the properties masked by the vertex color green channel.")
  1049. }
  1050. SecondColumnLayout {
  1051. FlagsComboBox {
  1052. backendValue: backendValues.vertexColorGreenMask
  1053. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1054. + StudioTheme.Values.actionIndicatorWidth
  1055. itemsModel: colorMaskModel
  1056. scope: "PrincipledMaterial"
  1057. zeroFlag: "NoMask"
  1058. }
  1059. ExpandingSpacer {}
  1060. }
  1061. PropertyLabel {
  1062. text: qsTr("Mask B")
  1063. tooltip: qsTr("Sets the properties masked by the vertex color blue channel.")
  1064. }
  1065. SecondColumnLayout {
  1066. FlagsComboBox {
  1067. backendValue: backendValues.vertexColorBlueMask
  1068. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1069. + StudioTheme.Values.actionIndicatorWidth
  1070. itemsModel: colorMaskModel
  1071. scope: "PrincipledMaterial"
  1072. zeroFlag: "NoMask"
  1073. }
  1074. ExpandingSpacer {}
  1075. }
  1076. PropertyLabel {
  1077. text: qsTr("Mask A")
  1078. tooltip: qsTr("Sets the properties masked by the vertex color alpha channel.")
  1079. }
  1080. SecondColumnLayout {
  1081. FlagsComboBox {
  1082. backendValue: backendValues.vertexColorAlphaMask
  1083. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1084. + StudioTheme.Values.actionIndicatorWidth
  1085. itemsModel: colorMaskModel
  1086. scope: "PrincipledMaterial"
  1087. zeroFlag: "NoMask"
  1088. }
  1089. ExpandingSpacer {}
  1090. }
  1091. }
  1092. }
  1093. Section {
  1094. caption: qsTr("Advanced")
  1095. width: parent.width
  1096. SectionLayout {
  1097. PropertyLabel {
  1098. text: qsTr("Point Size")
  1099. tooltip: qsTr("Sets the size of the points rendered, when the geometry is using a primitive type of points.")
  1100. }
  1101. SecondColumnLayout {
  1102. SpinBox {
  1103. minimumValue: 0
  1104. maximumValue: 1024
  1105. decimals: 0
  1106. backendValue: backendValues.pointSize
  1107. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1108. + StudioTheme.Values.actionIndicatorWidth
  1109. }
  1110. ExpandingSpacer {}
  1111. }
  1112. PropertyLabel {
  1113. text: qsTr("Line Width")
  1114. tooltip: qsTr("Sets the width of the lines rendered, when the geometry is using a primitive type of lines or line strips.")
  1115. }
  1116. SecondColumnLayout {
  1117. SpinBox {
  1118. minimumValue: 0
  1119. maximumValue: 1024
  1120. decimals: 0
  1121. backendValue: backendValues.lineWidth
  1122. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1123. + StudioTheme.Values.actionIndicatorWidth
  1124. }
  1125. ExpandingSpacer {}
  1126. }
  1127. }
  1128. }
  1129. Section {
  1130. caption: qsTr("Overrides")
  1131. width: parent.width
  1132. SectionLayout {
  1133. PropertyLabel {
  1134. text: qsTr("Specular Amount")
  1135. tooltip: qsTr("Override the strength of specularity (highlights and reflections).")
  1136. }
  1137. SecondColumnLayout {
  1138. SpinBox {
  1139. minimumValue: 0
  1140. maximumValue: 1
  1141. decimals: 2
  1142. stepSize: 0.1
  1143. sliderIndicatorVisible: true
  1144. backendValue: backendValues.specularAmount
  1145. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1146. + StudioTheme.Values.actionIndicatorWidth
  1147. }
  1148. ExpandingSpacer {}
  1149. }
  1150. PropertyLabel {
  1151. text: qsTr("Specular Map")
  1152. tooltip: qsTr("An RGB Texture to override the amount and the color of specularity across the surface of the material.")
  1153. }
  1154. SecondColumnLayout {
  1155. ItemFilterComboBox {
  1156. typeFilter: "QtQuick3D.Texture"
  1157. backendValue: backendValues.specularMap
  1158. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1159. + StudioTheme.Values.actionIndicatorWidth
  1160. }
  1161. ExpandingSpacer {}
  1162. }
  1163. PropertyLabel {
  1164. text: qsTr("Use Single Channel")
  1165. tooltip: qsTr("Use only a single channel from specularMap.")
  1166. }
  1167. SecondColumnLayout {
  1168. CheckBox {
  1169. id: specularSingleChannelCheckBox
  1170. text: checked ? qsTr("Enabled") : qsTr("Disabled")
  1171. backendValue: backendValues.specularSingleChannelEnabled
  1172. implicitWidth: StudioTheme.Values.twoControlColumnWidth
  1173. + StudioTheme.Values.actionIndicatorWidth
  1174. }
  1175. ExpandingSpacer {}
  1176. }
  1177. PropertyLabel {
  1178. text: qsTr("Channel")
  1179. tooltip: qsTr("Sets the texture channel used to read the specular value from specularMap.")
  1180. }
  1181. SecondColumnLayout {
  1182. ComboBox {
  1183. enabled: specularSingleChannelCheckBox.checked
  1184. scope: "Material"
  1185. model: ["R", "G", "B", "A"]
  1186. backendValue: backendValues.specularChannel
  1187. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1188. + StudioTheme.Values.actionIndicatorWidth
  1189. }
  1190. ExpandingSpacer {}
  1191. }
  1192. PropertyLabel {
  1193. text: qsTr("Specular Tint")
  1194. tooltip: qsTr("Override how much of the base color contributes to the specular reflections.")
  1195. }
  1196. SecondColumnLayout {
  1197. SpinBox {
  1198. minimumValue: 0
  1199. maximumValue: 1
  1200. decimals: 2
  1201. stepSize: 0.1
  1202. sliderIndicatorVisible: true
  1203. backendValue: backendValues.specularTint
  1204. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1205. + StudioTheme.Values.actionIndicatorWidth
  1206. }
  1207. ExpandingSpacer {}
  1208. }
  1209. PropertyLabel {
  1210. text: qsTr("Reflection Map")
  1211. tooltip: qsTr("Sets a texture used for specular highlights on the material.")
  1212. }
  1213. SecondColumnLayout {
  1214. ItemFilterComboBox {
  1215. typeFilter: "QtQuick3D.Texture"
  1216. backendValue: backendValues.specularReflectionMap
  1217. implicitWidth: StudioTheme.Values.singleControlColumnWidth
  1218. + StudioTheme.Values.actionIndicatorWidth
  1219. }
  1220. ExpandingSpacer {}
  1221. }
  1222. }
  1223. }
  1224. }