7a115de7-2d94-4620-8b89-766d7f8cbff9.json 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. {
  2. "__type__": "cc.EffectAsset",
  3. "_name": "internal/editor/terrain-image-brush",
  4. "_objFlags": 0,
  5. "__editorExtras__": {},
  6. "_native": "",
  7. "techniques": [
  8. {
  9. "name": "transparent",
  10. "passes": [
  11. {
  12. "blendState": {
  13. "targets": [
  14. {
  15. "blend": true,
  16. "blendSrc": 2,
  17. "blendDst": 4,
  18. "blendDstAlpha": 4
  19. }
  20. ]
  21. },
  22. "program": "internal/editor/terrain-image-brush|terrain-brush-vs:vert|terrain-brush-fs:frag",
  23. "depthStencilState": {
  24. "depthTest": true,
  25. "depthWrite": false
  26. },
  27. "properties": {
  28. "BrushPos": {
  29. "value": [
  30. 0,
  31. 0,
  32. 0,
  33. 1
  34. ],
  35. "type": 16
  36. },
  37. "BrushParams": {
  38. "value": [
  39. 2.5,
  40. 2.5,
  41. 0,
  42. 0
  43. ],
  44. "type": 16
  45. },
  46. "BrushImage": {
  47. "value": "grey",
  48. "type": 28
  49. }
  50. }
  51. }
  52. ]
  53. }
  54. ],
  55. "shaders": [
  56. {
  57. "blocks": [
  58. {
  59. "name": "TexCoords",
  60. "members": [
  61. {
  62. "name": "BrushPos",
  63. "type": 16,
  64. "count": 1
  65. },
  66. {
  67. "name": "BrushParams",
  68. "type": 16,
  69. "count": 1
  70. }
  71. ],
  72. "defines": [],
  73. "stageFlags": 16,
  74. "binding": 0
  75. }
  76. ],
  77. "samplerTextures": [
  78. {
  79. "name": "BrushImage",
  80. "type": 28,
  81. "count": 1,
  82. "defines": [],
  83. "stageFlags": 16,
  84. "binding": 1
  85. }
  86. ],
  87. "samplers": [],
  88. "textures": [],
  89. "buffers": [],
  90. "images": [],
  91. "subpassInputs": [],
  92. "attributes": [
  93. {
  94. "name": "a_position",
  95. "defines": [],
  96. "format": 32,
  97. "location": 0
  98. }
  99. ],
  100. "varyings": [
  101. {
  102. "name": "wposition",
  103. "type": 16,
  104. "count": 1,
  105. "defines": [],
  106. "stageFlags": 17,
  107. "location": 0
  108. }
  109. ],
  110. "fragColors": [
  111. {
  112. "name": "cc_FragColor",
  113. "typename": "vec4",
  114. "type": 16,
  115. "count": 1,
  116. "defines": [],
  117. "stageFlags": 16,
  118. "location": 0
  119. }
  120. ],
  121. "descriptors": [
  122. {
  123. "rate": 0,
  124. "blocks": [
  125. {
  126. "tags": {
  127. "builtin": "local"
  128. },
  129. "name": "CCLocal",
  130. "members": [
  131. {
  132. "name": "cc_matWorld",
  133. "typename": "mat4",
  134. "type": 25,
  135. "count": 1,
  136. "precision": "highp "
  137. },
  138. {
  139. "name": "cc_matWorldIT",
  140. "typename": "mat4",
  141. "type": 25,
  142. "count": 1,
  143. "precision": "highp "
  144. },
  145. {
  146. "name": "cc_lightingMapUVParam",
  147. "typename": "vec4",
  148. "type": 16,
  149. "count": 1,
  150. "precision": "highp "
  151. },
  152. {
  153. "name": "cc_localShadowBias",
  154. "typename": "vec4",
  155. "type": 16,
  156. "count": 1,
  157. "precision": "highp "
  158. },
  159. {
  160. "name": "cc_reflectionProbeData1",
  161. "typename": "vec4",
  162. "type": 16,
  163. "count": 1,
  164. "precision": "highp "
  165. },
  166. {
  167. "name": "cc_reflectionProbeData2",
  168. "typename": "vec4",
  169. "type": 16,
  170. "count": 1,
  171. "precision": "highp "
  172. },
  173. {
  174. "name": "cc_reflectionProbeBlendData1",
  175. "typename": "vec4",
  176. "type": 16,
  177. "count": 1,
  178. "precision": "highp "
  179. },
  180. {
  181. "name": "cc_reflectionProbeBlendData2",
  182. "typename": "vec4",
  183. "type": 16,
  184. "count": 1,
  185. "precision": "highp "
  186. }
  187. ],
  188. "defines": [],
  189. "stageFlags": 1
  190. }
  191. ],
  192. "samplerTextures": [],
  193. "samplers": [],
  194. "textures": [],
  195. "buffers": [],
  196. "images": [],
  197. "subpassInputs": []
  198. },
  199. {
  200. "rate": 1,
  201. "blocks": [
  202. {
  203. "name": "TexCoords",
  204. "members": [
  205. {
  206. "name": "BrushPos",
  207. "type": 16,
  208. "count": 1
  209. },
  210. {
  211. "name": "BrushParams",
  212. "type": 16,
  213. "count": 1
  214. }
  215. ],
  216. "defines": [],
  217. "stageFlags": 16,
  218. "binding": 0
  219. }
  220. ],
  221. "samplerTextures": [
  222. {
  223. "name": "BrushImage",
  224. "type": 28,
  225. "count": 1,
  226. "defines": [],
  227. "stageFlags": 16,
  228. "binding": 1
  229. }
  230. ],
  231. "samplers": [],
  232. "textures": [],
  233. "buffers": [],
  234. "images": [],
  235. "subpassInputs": []
  236. },
  237. {
  238. "rate": 2,
  239. "blocks": [],
  240. "samplerTextures": [],
  241. "samplers": [],
  242. "textures": [],
  243. "buffers": [],
  244. "images": [],
  245. "subpassInputs": []
  246. },
  247. {
  248. "rate": 3,
  249. "blocks": [
  250. {
  251. "tags": {
  252. "builtin": "global"
  253. },
  254. "name": "CCGlobal",
  255. "members": [
  256. {
  257. "name": "cc_time",
  258. "typename": "vec4",
  259. "type": 16,
  260. "count": 1,
  261. "precision": "highp "
  262. },
  263. {
  264. "name": "cc_screenSize",
  265. "typename": "vec4",
  266. "type": 16,
  267. "count": 1,
  268. "precision": "mediump "
  269. },
  270. {
  271. "name": "cc_nativeSize",
  272. "typename": "vec4",
  273. "type": 16,
  274. "count": 1,
  275. "precision": "mediump "
  276. },
  277. {
  278. "name": "cc_probeInfo",
  279. "typename": "vec4",
  280. "type": 16,
  281. "count": 1,
  282. "precision": "mediump "
  283. },
  284. {
  285. "name": "cc_debug_view_mode",
  286. "typename": "vec4",
  287. "type": 16,
  288. "count": 1,
  289. "precision": "mediump "
  290. }
  291. ],
  292. "defines": [],
  293. "stageFlags": 17
  294. },
  295. {
  296. "tags": {
  297. "builtin": "global"
  298. },
  299. "name": "CCCamera",
  300. "members": [
  301. {
  302. "name": "cc_matView",
  303. "typename": "mat4",
  304. "type": 25,
  305. "count": 1,
  306. "precision": "highp "
  307. },
  308. {
  309. "name": "cc_matViewInv",
  310. "typename": "mat4",
  311. "type": 25,
  312. "count": 1,
  313. "precision": "highp "
  314. },
  315. {
  316. "name": "cc_matProj",
  317. "typename": "mat4",
  318. "type": 25,
  319. "count": 1,
  320. "precision": "highp "
  321. },
  322. {
  323. "name": "cc_matProjInv",
  324. "typename": "mat4",
  325. "type": 25,
  326. "count": 1,
  327. "precision": "highp "
  328. },
  329. {
  330. "name": "cc_matViewProj",
  331. "typename": "mat4",
  332. "type": 25,
  333. "count": 1,
  334. "precision": "highp "
  335. },
  336. {
  337. "name": "cc_matViewProjInv",
  338. "typename": "mat4",
  339. "type": 25,
  340. "count": 1,
  341. "precision": "highp "
  342. },
  343. {
  344. "name": "cc_cameraPos",
  345. "typename": "vec4",
  346. "type": 16,
  347. "count": 1,
  348. "precision": "highp "
  349. },
  350. {
  351. "name": "cc_surfaceTransform",
  352. "typename": "vec4",
  353. "type": 16,
  354. "count": 1,
  355. "precision": "mediump "
  356. },
  357. {
  358. "name": "cc_screenScale",
  359. "typename": "vec4",
  360. "type": 16,
  361. "count": 1,
  362. "precision": "mediump "
  363. },
  364. {
  365. "name": "cc_exposure",
  366. "typename": "vec4",
  367. "type": 16,
  368. "count": 1,
  369. "precision": "mediump "
  370. },
  371. {
  372. "name": "cc_mainLitDir",
  373. "typename": "vec4",
  374. "type": 16,
  375. "count": 1,
  376. "precision": "mediump "
  377. },
  378. {
  379. "name": "cc_mainLitColor",
  380. "typename": "vec4",
  381. "type": 16,
  382. "count": 1,
  383. "precision": "mediump "
  384. },
  385. {
  386. "name": "cc_ambientSky",
  387. "typename": "vec4",
  388. "type": 16,
  389. "count": 1,
  390. "precision": "mediump "
  391. },
  392. {
  393. "name": "cc_ambientGround",
  394. "typename": "vec4",
  395. "type": 16,
  396. "count": 1,
  397. "precision": "mediump "
  398. },
  399. {
  400. "name": "cc_fogColor",
  401. "typename": "vec4",
  402. "type": 16,
  403. "count": 1,
  404. "precision": "mediump "
  405. },
  406. {
  407. "name": "cc_fogBase",
  408. "typename": "vec4",
  409. "type": 16,
  410. "count": 1,
  411. "precision": "mediump "
  412. },
  413. {
  414. "name": "cc_fogAdd",
  415. "typename": "vec4",
  416. "type": 16,
  417. "count": 1,
  418. "precision": "mediump "
  419. },
  420. {
  421. "name": "cc_nearFar",
  422. "typename": "vec4",
  423. "type": 16,
  424. "count": 1,
  425. "precision": "mediump "
  426. },
  427. {
  428. "name": "cc_viewPort",
  429. "typename": "vec4",
  430. "type": 16,
  431. "count": 1,
  432. "precision": "mediump "
  433. }
  434. ],
  435. "defines": [],
  436. "stageFlags": 17
  437. }
  438. ],
  439. "samplerTextures": [],
  440. "samplers": [],
  441. "textures": [],
  442. "buffers": [],
  443. "images": [],
  444. "subpassInputs": []
  445. }
  446. ],
  447. "hash": 1136071784,
  448. "glsl4": {
  449. "vert": "\nprecision mediump float;\nlayout(set = 0, binding = 0) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(set = 0, binding = 1) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nlayout(set = 2, binding = 0) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n};\nlayout(location = 0) in vec3 a_position;\nlayout(location = 0) out vec4 wposition;\nvec4 vert () {\n vec3 worldPos;\n worldPos.x = cc_matWorld[3][0] + a_position.x;\n worldPos.y = cc_matWorld[3][1] + a_position.y;\n worldPos.z = cc_matWorld[3][2] + a_position.z;\n worldPos.y += 0.01;\n vec4 pos = vec4(worldPos, 1);\n pos = cc_matViewProj * pos;\n wposition = vec4(worldPos, 1);\n return pos;\n}\nvoid main() { gl_Position = vert(); }",
  450. "frag": "\nprecision mediump float;\nlayout(set = 0, binding = 0) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(set = 0, binding = 1) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nlayout(location = 0) in vec4 wposition;\nlayout(set = 1, binding = 0) uniform TexCoords {\n vec4 BrushPos;\n vec4 BrushParams;\n};\nlayout(set = 1, binding = 1) uniform sampler2D BrushImage;\nvec4 frag () {\n float Radius = BrushParams.x;\n float Falloff = BrushParams.y;\n float Rotation = BrushParams.z;\n float DeltaU = BrushPos.x - wposition.x;\n float DeltaV = BrushPos.z - wposition.z;\n if (Rotation != 0.0) {\n float sine = sin(Rotation);\n float cosine = cos(Rotation);\n float _11 = cosine, _21 = sine;\n float _12 = -sine, _22 = cosine;\n float tmpx = DeltaU * _11 + DeltaV * _21;\n float tmpz = DeltaU * _12 + DeltaV * _22;\n DeltaU = tmpx;\n DeltaV = tmpz;\n }\n float k = 0.0;\n if (abs(DeltaU) < Radius && abs(DeltaV) < Radius) {\n float u = DeltaU / Radius * 0.5 + 0.5;\n float v = DeltaV / Radius * 0.5 + 0.5;\n k = texture(BrushImage, vec2(u, v)).r;\n }\n vec4 color = vec4(0, 0, 0, 0);\n color.rgb = vec3(100, 100, 135) / 255.0;\n color.a = 0.85 * k;\n return CCFragOutput(color);\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"
  451. },
  452. "glsl3": {
  453. "vert": "\nprecision mediump float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nlayout(std140) uniform CCLocal {\n highp mat4 cc_matWorld;\n highp mat4 cc_matWorldIT;\n highp vec4 cc_lightingMapUVParam;\n highp vec4 cc_localShadowBias;\n highp vec4 cc_reflectionProbeData1;\n highp vec4 cc_reflectionProbeData2;\n highp vec4 cc_reflectionProbeBlendData1;\n highp vec4 cc_reflectionProbeBlendData2;\n};\nin vec3 a_position;\nout vec4 wposition;\nvec4 vert () {\n vec3 worldPos;\n worldPos.x = cc_matWorld[3][0] + a_position.x;\n worldPos.y = cc_matWorld[3][1] + a_position.y;\n worldPos.z = cc_matWorld[3][2] + a_position.z;\n worldPos.y += 0.01;\n vec4 pos = vec4(worldPos, 1);\n pos = cc_matViewProj * pos;\n wposition = vec4(worldPos, 1);\n return pos;\n}\nvoid main() { gl_Position = vert(); }",
  454. "frag": "\nprecision mediump float;\nlayout(std140) uniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_nativeSize;\n mediump vec4 cc_probeInfo;\n mediump vec4 cc_debug_view_mode;\n};\nlayout(std140) uniform CCCamera {\n highp mat4 cc_matView;\n highp mat4 cc_matViewInv;\n highp mat4 cc_matProj;\n highp mat4 cc_matProjInv;\n highp mat4 cc_matViewProj;\n highp mat4 cc_matViewProjInv;\n highp vec4 cc_cameraPos;\n mediump vec4 cc_surfaceTransform;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_exposure;\n mediump vec4 cc_mainLitDir;\n mediump vec4 cc_mainLitColor;\n mediump vec4 cc_ambientSky;\n mediump vec4 cc_ambientGround;\n mediump vec4 cc_fogColor;\n mediump vec4 cc_fogBase;\n mediump vec4 cc_fogAdd;\n mediump vec4 cc_nearFar;\n mediump vec4 cc_viewPort;\n};\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nin vec4 wposition;\nlayout(std140) uniform TexCoords {\n vec4 BrushPos;\n vec4 BrushParams;\n};\nuniform sampler2D BrushImage;\nvec4 frag () {\n float Radius = BrushParams.x;\n float Falloff = BrushParams.y;\n float Rotation = BrushParams.z;\n float DeltaU = BrushPos.x - wposition.x;\n float DeltaV = BrushPos.z - wposition.z;\n if (Rotation != 0.0) {\n float sine = sin(Rotation);\n float cosine = cos(Rotation);\n float _11 = cosine, _21 = sine;\n float _12 = -sine, _22 = cosine;\n float tmpx = DeltaU * _11 + DeltaV * _21;\n float tmpz = DeltaU * _12 + DeltaV * _22;\n DeltaU = tmpx;\n DeltaV = tmpz;\n }\n float k = 0.0;\n if (abs(DeltaU) < Radius && abs(DeltaV) < Radius) {\n float u = DeltaU / Radius * 0.5 + 0.5;\n float v = DeltaV / Radius * 0.5 + 0.5;\n k = texture(BrushImage, vec2(u, v)).r;\n }\n vec4 color = vec4(0, 0, 0, 0);\n color.rgb = vec3(100, 100, 135) / 255.0;\n color.a = 0.85 * k;\n return CCFragOutput(color);\n}\nlayout(location = 0) out vec4 cc_FragColor;\nvoid main() { cc_FragColor = frag(); }"
  455. },
  456. "glsl1": {
  457. "vert": "\nprecision mediump float;\nuniform highp mat4 cc_matViewProj;\nuniform highp mat4 cc_matWorld;\nattribute vec3 a_position;\nvarying vec4 wposition;\nvec4 vert () {\n vec3 worldPos;\n worldPos.x = cc_matWorld[3][0] + a_position.x;\n worldPos.y = cc_matWorld[3][1] + a_position.y;\n worldPos.z = cc_matWorld[3][2] + a_position.z;\n worldPos.y += 0.01;\n vec4 pos = vec4(worldPos, 1);\n pos = cc_matViewProj * pos;\n wposition = vec4(worldPos, 1);\n return pos;\n}\nvoid main() { gl_Position = vert(); }",
  458. "frag": "\nprecision mediump float;\nvec4 CCFragOutput (vec4 color) {\n return color;\n}\nvarying vec4 wposition;\n uniform vec4 BrushPos;\n uniform vec4 BrushParams;\nuniform sampler2D BrushImage;\nvec4 frag () {\n float Radius = BrushParams.x;\n float Falloff = BrushParams.y;\n float Rotation = BrushParams.z;\n float DeltaU = BrushPos.x - wposition.x;\n float DeltaV = BrushPos.z - wposition.z;\n if (Rotation != 0.0) {\n float sine = sin(Rotation);\n float cosine = cos(Rotation);\n float _11 = cosine, _21 = sine;\n float _12 = -sine, _22 = cosine;\n float tmpx = DeltaU * _11 + DeltaV * _21;\n float tmpz = DeltaU * _12 + DeltaV * _22;\n DeltaU = tmpx;\n DeltaV = tmpz;\n }\n float k = 0.0;\n if (abs(DeltaU) < Radius && abs(DeltaV) < Radius) {\n float u = DeltaU / Radius * 0.5 + 0.5;\n float v = DeltaV / Radius * 0.5 + 0.5;\n k = texture2D(BrushImage, vec2(u, v)).r;\n }\n vec4 color = vec4(0, 0, 0, 0);\n color.rgb = vec3(100, 100, 135) / 255.0;\n color.a = 0.85 * k;\n return CCFragOutput(color);\n}\nvoid main() { gl_FragColor = frag(); }"
  459. },
  460. "builtins": {
  461. "globals": {
  462. "blocks": [
  463. {
  464. "name": "CCGlobal",
  465. "defines": []
  466. },
  467. {
  468. "name": "CCCamera",
  469. "defines": []
  470. }
  471. ],
  472. "samplerTextures": [],
  473. "buffers": [],
  474. "images": []
  475. },
  476. "locals": {
  477. "blocks": [
  478. {
  479. "name": "CCLocal",
  480. "defines": []
  481. }
  482. ],
  483. "samplerTextures": [],
  484. "buffers": [],
  485. "images": []
  486. },
  487. "statistics": {
  488. "CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS": 56,
  489. "CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS": 44
  490. }
  491. },
  492. "defines": [],
  493. "name": "internal/editor/terrain-image-brush|terrain-brush-vs:vert|terrain-brush-fs:frag"
  494. }
  495. ],
  496. "combinations": [],
  497. "hideInEditor": true
  498. }