@inhuman.tools/quickdraw 0.0.0-bootstrap.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +102 -1
  3. package/aurora.vert +168 -0
  4. package/dist/bench/host.d.ts +62 -0
  5. package/dist/bench/host.d.ts.map +1 -0
  6. package/dist/bench/host.js +77 -0
  7. package/dist/bench/host.js.map +1 -0
  8. package/dist/bench/main.d.ts +6 -0
  9. package/dist/bench/main.d.ts.map +1 -0
  10. package/dist/bench/main.js +118 -0
  11. package/dist/bench/main.js.map +1 -0
  12. package/dist/bench/model.d.ts +36 -0
  13. package/dist/bench/model.d.ts.map +1 -0
  14. package/dist/bench/model.js +112 -0
  15. package/dist/bench/model.js.map +1 -0
  16. package/dist/bench/tea.d.ts +14 -0
  17. package/dist/bench/tea.d.ts.map +1 -0
  18. package/dist/bench/tea.js +6 -0
  19. package/dist/bench/tea.js.map +1 -0
  20. package/dist/bench/view.d.ts +9 -0
  21. package/dist/bench/view.d.ts.map +1 -0
  22. package/dist/bench/view.js +88 -0
  23. package/dist/bench/view.js.map +1 -0
  24. package/dist/bench/worker.d.ts +6 -0
  25. package/dist/bench/worker.d.ts.map +1 -0
  26. package/dist/bench/worker.js +46 -0
  27. package/dist/bench/worker.js.map +1 -0
  28. package/dist/buffer/bgfx-mark.d.ts +32 -0
  29. package/dist/buffer/bgfx-mark.d.ts.map +1 -0
  30. package/dist/buffer/bgfx-mark.js +43 -0
  31. package/dist/buffer/bgfx-mark.js.map +1 -0
  32. package/dist/buffer/index.d.ts +191 -0
  33. package/dist/buffer/index.d.ts.map +1 -0
  34. package/dist/buffer/index.js +353 -0
  35. package/dist/buffer/index.js.map +1 -0
  36. package/dist/capabilities/env.d.ts +23 -0
  37. package/dist/capabilities/env.d.ts.map +1 -0
  38. package/dist/capabilities/env.js +35 -0
  39. package/dist/capabilities/env.js.map +1 -0
  40. package/dist/capabilities/index.d.ts +13 -0
  41. package/dist/capabilities/index.d.ts.map +1 -0
  42. package/dist/capabilities/index.js +13 -0
  43. package/dist/capabilities/index.js.map +1 -0
  44. package/dist/capabilities/parse.d.ts +41 -0
  45. package/dist/capabilities/parse.d.ts.map +1 -0
  46. package/dist/capabilities/parse.js +86 -0
  47. package/dist/capabilities/parse.js.map +1 -0
  48. package/dist/capabilities/probe.d.ts +37 -0
  49. package/dist/capabilities/probe.d.ts.map +1 -0
  50. package/dist/capabilities/probe.js +75 -0
  51. package/dist/capabilities/probe.js.map +1 -0
  52. package/dist/capabilities/sequences.d.ts +33 -0
  53. package/dist/capabilities/sequences.d.ts.map +1 -0
  54. package/dist/capabilities/sequences.js +36 -0
  55. package/dist/capabilities/sequences.js.map +1 -0
  56. package/dist/capabilities/types.d.ts +25 -0
  57. package/dist/capabilities/types.d.ts.map +1 -0
  58. package/dist/capabilities/types.js +5 -0
  59. package/dist/capabilities/types.js.map +1 -0
  60. package/dist/index.d.ts +11 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +11 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/input/decode.d.ts +167 -0
  65. package/dist/input/decode.d.ts.map +1 -0
  66. package/dist/input/decode.js +825 -0
  67. package/dist/input/decode.js.map +1 -0
  68. package/dist/input/draft.d.ts +85 -0
  69. package/dist/input/draft.d.ts.map +1 -0
  70. package/dist/input/draft.js +276 -0
  71. package/dist/input/draft.js.map +1 -0
  72. package/dist/input/index.d.ts +3 -0
  73. package/dist/input/index.d.ts.map +1 -0
  74. package/dist/input/index.js +3 -0
  75. package/dist/input/index.js.map +1 -0
  76. package/dist/input/prompt-blocks.d.ts +58 -0
  77. package/dist/input/prompt-blocks.d.ts.map +1 -0
  78. package/dist/input/prompt-blocks.js +48 -0
  79. package/dist/input/prompt-blocks.js.map +1 -0
  80. package/dist/input/rich-draft.d.ts +46 -0
  81. package/dist/input/rich-draft.d.ts.map +1 -0
  82. package/dist/input/rich-draft.js +391 -0
  83. package/dist/input/rich-draft.js.map +1 -0
  84. package/dist/input/rich-hit.d.ts +17 -0
  85. package/dist/input/rich-hit.d.ts.map +1 -0
  86. package/dist/input/rich-hit.js +89 -0
  87. package/dist/input/rich-hit.js.map +1 -0
  88. package/dist/input/rich-intake.d.ts +16 -0
  89. package/dist/input/rich-intake.d.ts.map +1 -0
  90. package/dist/input/rich-intake.js +22 -0
  91. package/dist/input/rich-intake.js.map +1 -0
  92. package/dist/input/rich-paint.d.ts +13 -0
  93. package/dist/input/rich-paint.d.ts.map +1 -0
  94. package/dist/input/rich-paint.js +18 -0
  95. package/dist/input/rich-paint.js.map +1 -0
  96. package/dist/internals/bgfx/index.d.ts +17 -0
  97. package/dist/internals/bgfx/index.d.ts.map +1 -0
  98. package/dist/internals/bgfx/index.js +17 -0
  99. package/dist/internals/bgfx/index.js.map +1 -0
  100. package/dist/internals/bgfx/materialize.d.ts +31 -0
  101. package/dist/internals/bgfx/materialize.d.ts.map +1 -0
  102. package/dist/internals/bgfx/materialize.js +117 -0
  103. package/dist/internals/bgfx/materialize.js.map +1 -0
  104. package/dist/internals/bgfx/opacity.d.ts +37 -0
  105. package/dist/internals/bgfx/opacity.d.ts.map +1 -0
  106. package/dist/internals/bgfx/opacity.js +76 -0
  107. package/dist/internals/bgfx/opacity.js.map +1 -0
  108. package/dist/internals/bgfx/registry.d.ts +13 -0
  109. package/dist/internals/bgfx/registry.d.ts.map +1 -0
  110. package/dist/internals/bgfx/registry.js +24 -0
  111. package/dist/internals/bgfx/registry.js.map +1 -0
  112. package/dist/internals/bgfx/sab-layout.d.ts +61 -0
  113. package/dist/internals/bgfx/sab-layout.d.ts.map +1 -0
  114. package/dist/internals/bgfx/sab-layout.js +107 -0
  115. package/dist/internals/bgfx/sab-layout.js.map +1 -0
  116. package/dist/internals/bgfx/shader-frame-host.d.ts +22 -0
  117. package/dist/internals/bgfx/shader-frame-host.d.ts.map +1 -0
  118. package/dist/internals/bgfx/shader-frame-host.js +165 -0
  119. package/dist/internals/bgfx/shader-frame-host.js.map +1 -0
  120. package/dist/internals/bgfx/shadertoy-catalog.d.ts +41 -0
  121. package/dist/internals/bgfx/shadertoy-catalog.d.ts.map +1 -0
  122. package/dist/internals/bgfx/shadertoy-catalog.js +200 -0
  123. package/dist/internals/bgfx/shadertoy-catalog.js.map +1 -0
  124. package/dist/internals/bgfx/shadertoy-gl.d.ts +38 -0
  125. package/dist/internals/bgfx/shadertoy-gl.d.ts.map +1 -0
  126. package/dist/internals/bgfx/shadertoy-gl.js +283 -0
  127. package/dist/internals/bgfx/shadertoy-gl.js.map +1 -0
  128. package/dist/internals/bgfx/types.d.ts +51 -0
  129. package/dist/internals/bgfx/types.d.ts.map +1 -0
  130. package/dist/internals/bgfx/types.js +14 -0
  131. package/dist/internals/bgfx/types.js.map +1 -0
  132. package/dist/internals/bgfx-worker.d.ts +6 -0
  133. package/dist/internals/bgfx-worker.d.ts.map +1 -0
  134. package/dist/internals/bgfx-worker.js +131 -0
  135. package/dist/internals/bgfx-worker.js.map +1 -0
  136. package/dist/layout/birth.d.ts +77 -0
  137. package/dist/layout/birth.d.ts.map +1 -0
  138. package/dist/layout/birth.js +148 -0
  139. package/dist/layout/birth.js.map +1 -0
  140. package/dist/layout/children.d.ts +5 -0
  141. package/dist/layout/children.d.ts.map +1 -0
  142. package/dist/layout/children.js +19 -0
  143. package/dist/layout/children.js.map +1 -0
  144. package/dist/layout/chrome_frame.d.ts +254 -0
  145. package/dist/layout/chrome_frame.d.ts.map +1 -0
  146. package/dist/layout/chrome_frame.js +1080 -0
  147. package/dist/layout/chrome_frame.js.map +1 -0
  148. package/dist/layout/chrome_mask.d.ts +40 -0
  149. package/dist/layout/chrome_mask.d.ts.map +1 -0
  150. package/dist/layout/chrome_mask.js +150 -0
  151. package/dist/layout/chrome_mask.js.map +1 -0
  152. package/dist/layout/engine.d.ts +49 -0
  153. package/dist/layout/engine.d.ts.map +1 -0
  154. package/dist/layout/engine.js +1269 -0
  155. package/dist/layout/engine.js.map +1 -0
  156. package/dist/layout/flex.d.ts +36 -0
  157. package/dist/layout/flex.d.ts.map +1 -0
  158. package/dist/layout/flex.js +111 -0
  159. package/dist/layout/flex.js.map +1 -0
  160. package/dist/layout/grid.d.ts +36 -0
  161. package/dist/layout/grid.d.ts.map +1 -0
  162. package/dist/layout/grid.js +126 -0
  163. package/dist/layout/grid.js.map +1 -0
  164. package/dist/layout/index.d.ts +30 -0
  165. package/dist/layout/index.d.ts.map +1 -0
  166. package/dist/layout/index.js +30 -0
  167. package/dist/layout/index.js.map +1 -0
  168. package/dist/layout/indication.d.ts +34 -0
  169. package/dist/layout/indication.d.ts.map +1 -0
  170. package/dist/layout/indication.js +68 -0
  171. package/dist/layout/indication.js.map +1 -0
  172. package/dist/layout/length.d.ts +18 -0
  173. package/dist/layout/length.d.ts.map +1 -0
  174. package/dist/layout/length.js +24 -0
  175. package/dist/layout/length.js.map +1 -0
  176. package/dist/layout/live_paint.d.ts +145 -0
  177. package/dist/layout/live_paint.d.ts.map +1 -0
  178. package/dist/layout/live_paint.js +255 -0
  179. package/dist/layout/live_paint.js.map +1 -0
  180. package/dist/layout/markdown.d.ts +22 -0
  181. package/dist/layout/markdown.d.ts.map +1 -0
  182. package/dist/layout/markdown.js +167 -0
  183. package/dist/layout/markdown.js.map +1 -0
  184. package/dist/layout/measure.d.ts +46 -0
  185. package/dist/layout/measure.d.ts.map +1 -0
  186. package/dist/layout/measure.js +307 -0
  187. package/dist/layout/measure.js.map +1 -0
  188. package/dist/layout/paint-hotkey.d.ts +45 -0
  189. package/dist/layout/paint-hotkey.d.ts.map +1 -0
  190. package/dist/layout/paint-hotkey.js +152 -0
  191. package/dist/layout/paint-hotkey.js.map +1 -0
  192. package/dist/layout/paint.d.ts +25 -0
  193. package/dist/layout/paint.d.ts.map +1 -0
  194. package/dist/layout/paint.js +189 -0
  195. package/dist/layout/paint.js.map +1 -0
  196. package/dist/layout/paint_theme.d.ts +85 -0
  197. package/dist/layout/paint_theme.d.ts.map +1 -0
  198. package/dist/layout/paint_theme.js +76 -0
  199. package/dist/layout/paint_theme.js.map +1 -0
  200. package/dist/layout/progress.d.ts +31 -0
  201. package/dist/layout/progress.d.ts.map +1 -0
  202. package/dist/layout/progress.js +83 -0
  203. package/dist/layout/progress.js.map +1 -0
  204. package/dist/layout/selection.d.ts +136 -0
  205. package/dist/layout/selection.d.ts.map +1 -0
  206. package/dist/layout/selection.js +312 -0
  207. package/dist/layout/selection.js.map +1 -0
  208. package/dist/layout/selection_gesture.d.ts +88 -0
  209. package/dist/layout/selection_gesture.d.ts.map +1 -0
  210. package/dist/layout/selection_gesture.js +239 -0
  211. package/dist/layout/selection_gesture.js.map +1 -0
  212. package/dist/layout/selection_paint.d.ts +47 -0
  213. package/dist/layout/selection_paint.d.ts.map +1 -0
  214. package/dist/layout/selection_paint.js +320 -0
  215. package/dist/layout/selection_paint.js.map +1 -0
  216. package/dist/layout/serialize.d.ts +49 -0
  217. package/dist/layout/serialize.d.ts.map +1 -0
  218. package/dist/layout/serialize.js +437 -0
  219. package/dist/layout/serialize.js.map +1 -0
  220. package/dist/layout/squeeze.d.ts +58 -0
  221. package/dist/layout/squeeze.d.ts.map +1 -0
  222. package/dist/layout/squeeze.js +239 -0
  223. package/dist/layout/squeeze.js.map +1 -0
  224. package/dist/layout/text.d.ts +44 -0
  225. package/dist/layout/text.d.ts.map +1 -0
  226. package/dist/layout/text.js +230 -0
  227. package/dist/layout/text.js.map +1 -0
  228. package/dist/layout/theme_store.d.ts +21 -0
  229. package/dist/layout/theme_store.d.ts.map +1 -0
  230. package/dist/layout/theme_store.js +133 -0
  231. package/dist/layout/theme_store.js.map +1 -0
  232. package/dist/layout/types.d.ts +564 -0
  233. package/dist/layout/types.d.ts.map +1 -0
  234. package/dist/layout/types.js +2 -0
  235. package/dist/layout/types.js.map +1 -0
  236. package/dist/layout/visual_draft.d.ts +60 -0
  237. package/dist/layout/visual_draft.d.ts.map +1 -0
  238. package/dist/layout/visual_draft.js +199 -0
  239. package/dist/layout/visual_draft.js.map +1 -0
  240. package/dist/lexicon/color.d.ts +22 -0
  241. package/dist/lexicon/color.d.ts.map +1 -0
  242. package/dist/lexicon/color.js +6 -0
  243. package/dist/lexicon/color.js.map +1 -0
  244. package/dist/lexicon/index.d.ts +15 -0
  245. package/dist/lexicon/index.d.ts.map +1 -0
  246. package/dist/lexicon/index.js +15 -0
  247. package/dist/lexicon/index.js.map +1 -0
  248. package/dist/lexicon/prominence.d.ts +46 -0
  249. package/dist/lexicon/prominence.d.ts.map +1 -0
  250. package/dist/lexicon/prominence.js +73 -0
  251. package/dist/lexicon/prominence.js.map +1 -0
  252. package/dist/lexicon/quarantine.d.ts +21 -0
  253. package/dist/lexicon/quarantine.d.ts.map +1 -0
  254. package/dist/lexicon/quarantine.js +15 -0
  255. package/dist/lexicon/quarantine.js.map +1 -0
  256. package/dist/lexicon/roles.d.ts +37 -0
  257. package/dist/lexicon/roles.d.ts.map +1 -0
  258. package/dist/lexicon/roles.js +52 -0
  259. package/dist/lexicon/roles.js.map +1 -0
  260. package/dist/lexicon/tiers.d.ts +18 -0
  261. package/dist/lexicon/tiers.d.ts.map +1 -0
  262. package/dist/lexicon/tiers.js +17 -0
  263. package/dist/lexicon/tiers.js.map +1 -0
  264. package/dist/measure/index.d.ts +43 -0
  265. package/dist/measure/index.d.ts.map +1 -0
  266. package/dist/measure/index.js +120 -0
  267. package/dist/measure/index.js.map +1 -0
  268. package/dist/render.d.ts +72 -0
  269. package/dist/render.d.ts.map +1 -0
  270. package/dist/render.js +164 -0
  271. package/dist/render.js.map +1 -0
  272. package/dist/runtime/agents_keys.d.ts +8 -0
  273. package/dist/runtime/agents_keys.d.ts.map +1 -0
  274. package/dist/runtime/agents_keys.js +24 -0
  275. package/dist/runtime/agents_keys.js.map +1 -0
  276. package/dist/runtime/agents_peek.d.ts +44 -0
  277. package/dist/runtime/agents_peek.d.ts.map +1 -0
  278. package/dist/runtime/agents_peek.js +96 -0
  279. package/dist/runtime/agents_peek.js.map +1 -0
  280. package/dist/runtime/agents_preview.d.ts +27 -0
  281. package/dist/runtime/agents_preview.d.ts.map +1 -0
  282. package/dist/runtime/agents_preview.js +122 -0
  283. package/dist/runtime/agents_preview.js.map +1 -0
  284. package/dist/runtime/box_bus.d.ts +144 -0
  285. package/dist/runtime/box_bus.d.ts.map +1 -0
  286. package/dist/runtime/box_bus.js +74 -0
  287. package/dist/runtime/box_bus.js.map +1 -0
  288. package/dist/runtime/clipboard-image.d.ts +20 -0
  289. package/dist/runtime/clipboard-image.d.ts.map +1 -0
  290. package/dist/runtime/clipboard-image.js +62 -0
  291. package/dist/runtime/clipboard-image.js.map +1 -0
  292. package/dist/runtime/copy_toast.d.ts +46 -0
  293. package/dist/runtime/copy_toast.d.ts.map +1 -0
  294. package/dist/runtime/copy_toast.js +117 -0
  295. package/dist/runtime/copy_toast.js.map +1 -0
  296. package/dist/runtime/echo.d.ts +41 -0
  297. package/dist/runtime/echo.d.ts.map +1 -0
  298. package/dist/runtime/echo.js +112 -0
  299. package/dist/runtime/echo.js.map +1 -0
  300. package/dist/runtime/frame.d.ts +79 -0
  301. package/dist/runtime/frame.d.ts.map +1 -0
  302. package/dist/runtime/frame.js +258 -0
  303. package/dist/runtime/frame.js.map +1 -0
  304. package/dist/runtime/index.d.ts +16 -0
  305. package/dist/runtime/index.d.ts.map +1 -0
  306. package/dist/runtime/index.js +16 -0
  307. package/dist/runtime/index.js.map +1 -0
  308. package/dist/runtime/key_buffer.d.ts +19 -0
  309. package/dist/runtime/key_buffer.d.ts.map +1 -0
  310. package/dist/runtime/key_buffer.js +24 -0
  311. package/dist/runtime/key_buffer.js.map +1 -0
  312. package/dist/runtime/keys.d.ts +66 -0
  313. package/dist/runtime/keys.d.ts.map +1 -0
  314. package/dist/runtime/keys.js +220 -0
  315. package/dist/runtime/keys.js.map +1 -0
  316. package/dist/runtime/paint_snapshot.d.ts +9 -0
  317. package/dist/runtime/paint_snapshot.d.ts.map +1 -0
  318. package/dist/runtime/paint_snapshot.js +8 -0
  319. package/dist/runtime/paint_snapshot.js.map +1 -0
  320. package/dist/runtime/paint_source.d.ts +266 -0
  321. package/dist/runtime/paint_source.d.ts.map +1 -0
  322. package/dist/runtime/paint_source.js +532 -0
  323. package/dist/runtime/paint_source.js.map +1 -0
  324. package/dist/runtime/present_loop.d.ts +11 -0
  325. package/dist/runtime/present_loop.d.ts.map +1 -0
  326. package/dist/runtime/present_loop.js +46 -0
  327. package/dist/runtime/present_loop.js.map +1 -0
  328. package/dist/runtime/present_profile.d.ts +58 -0
  329. package/dist/runtime/present_profile.d.ts.map +1 -0
  330. package/dist/runtime/present_profile.js +130 -0
  331. package/dist/runtime/present_profile.js.map +1 -0
  332. package/dist/runtime/raster.d.ts +24 -0
  333. package/dist/runtime/raster.d.ts.map +1 -0
  334. package/dist/runtime/raster.js +43 -0
  335. package/dist/runtime/raster.js.map +1 -0
  336. package/dist/runtime/renderer.d.ts +151 -0
  337. package/dist/runtime/renderer.d.ts.map +1 -0
  338. package/dist/runtime/renderer.js +1607 -0
  339. package/dist/runtime/renderer.js.map +1 -0
  340. package/dist/runtime/screenshot.d.ts +9 -0
  341. package/dist/runtime/screenshot.d.ts.map +1 -0
  342. package/dist/runtime/screenshot.js +111 -0
  343. package/dist/runtime/screenshot.js.map +1 -0
  344. package/dist/runtime/selection_host.d.ts +41 -0
  345. package/dist/runtime/selection_host.d.ts.map +1 -0
  346. package/dist/runtime/selection_host.js +190 -0
  347. package/dist/runtime/selection_host.js.map +1 -0
  348. package/dist/runtime/stderr_hold.d.ts +16 -0
  349. package/dist/runtime/stderr_hold.d.ts.map +1 -0
  350. package/dist/runtime/stderr_hold.js +23 -0
  351. package/dist/runtime/stderr_hold.js.map +1 -0
  352. package/dist/runtime/thought_birth.d.ts +25 -0
  353. package/dist/runtime/thought_birth.d.ts.map +1 -0
  354. package/dist/runtime/thought_birth.js +122 -0
  355. package/dist/runtime/thought_birth.js.map +1 -0
  356. package/dist/runtime/thought_collapsed.d.ts +35 -0
  357. package/dist/runtime/thought_collapsed.d.ts.map +1 -0
  358. package/dist/runtime/thought_collapsed.js +94 -0
  359. package/dist/runtime/thought_collapsed.js.map +1 -0
  360. package/dist/runtime/tty.d.ts +58 -0
  361. package/dist/runtime/tty.d.ts.map +1 -0
  362. package/dist/runtime/tty.js +130 -0
  363. package/dist/runtime/tty.js.map +1 -0
  364. package/dist/theme/ansi16.d.ts +34 -0
  365. package/dist/theme/ansi16.d.ts.map +1 -0
  366. package/dist/theme/ansi16.js +181 -0
  367. package/dist/theme/ansi16.js.map +1 -0
  368. package/dist/theme/ansi256.d.ts +15 -0
  369. package/dist/theme/ansi256.d.ts.map +1 -0
  370. package/dist/theme/ansi256.js +94 -0
  371. package/dist/theme/ansi256.js.map +1 -0
  372. package/dist/theme/ground.d.ts +8 -0
  373. package/dist/theme/ground.d.ts.map +1 -0
  374. package/dist/theme/ground.js +11 -0
  375. package/dist/theme/ground.js.map +1 -0
  376. package/dist/theme/index.d.ts +10 -0
  377. package/dist/theme/index.d.ts.map +1 -0
  378. package/dist/theme/index.js +10 -0
  379. package/dist/theme/index.js.map +1 -0
  380. package/dist/theme/region.d.ts +42 -0
  381. package/dist/theme/region.d.ts.map +1 -0
  382. package/dist/theme/region.js +105 -0
  383. package/dist/theme/region.js.map +1 -0
  384. package/dist/theme/resolver.d.ts +126 -0
  385. package/dist/theme/resolver.d.ts.map +1 -0
  386. package/dist/theme/resolver.js +366 -0
  387. package/dist/theme/resolver.js.map +1 -0
  388. package/dist/theme/salience.d.ts +90 -0
  389. package/dist/theme/salience.d.ts.map +1 -0
  390. package/dist/theme/salience.js +208 -0
  391. package/dist/theme/salience.js.map +1 -0
  392. package/dist/theme/seeds.d.ts +113 -0
  393. package/dist/theme/seeds.d.ts.map +1 -0
  394. package/dist/theme/seeds.js +52 -0
  395. package/dist/theme/seeds.js.map +1 -0
  396. package/dist/theme/selection.d.ts +94 -0
  397. package/dist/theme/selection.d.ts.map +1 -0
  398. package/dist/theme/selection.js +135 -0
  399. package/dist/theme/selection.js.map +1 -0
  400. package/dist/theme/theme.d.ts +41 -0
  401. package/dist/theme/theme.d.ts.map +1 -0
  402. package/dist/theme/theme.js +34 -0
  403. package/dist/theme/theme.js.map +1 -0
  404. package/dist/widgets/composer-caret.d.ts +47 -0
  405. package/dist/widgets/composer-caret.d.ts.map +1 -0
  406. package/dist/widgets/composer-caret.js +90 -0
  407. package/dist/widgets/composer-caret.js.map +1 -0
  408. package/dist/widgets/composer-click.d.ts +30 -0
  409. package/dist/widgets/composer-click.d.ts.map +1 -0
  410. package/dist/widgets/composer-click.js +89 -0
  411. package/dist/widgets/composer-click.js.map +1 -0
  412. package/dist/widgets/composer-command.d.ts +64 -0
  413. package/dist/widgets/composer-command.d.ts.map +1 -0
  414. package/dist/widgets/composer-command.js +127 -0
  415. package/dist/widgets/composer-command.js.map +1 -0
  416. package/dist/widgets/composer-frame.d.ts +74 -0
  417. package/dist/widgets/composer-frame.d.ts.map +1 -0
  418. package/dist/widgets/composer-frame.js +284 -0
  419. package/dist/widgets/composer-frame.js.map +1 -0
  420. package/dist/widgets/composer-picker.d.ts +89 -0
  421. package/dist/widgets/composer-picker.d.ts.map +1 -0
  422. package/dist/widgets/composer-picker.js +240 -0
  423. package/dist/widgets/composer-picker.js.map +1 -0
  424. package/dist/widgets/diff.d.ts +11 -0
  425. package/dist/widgets/diff.d.ts.map +1 -0
  426. package/dist/widgets/diff.js +19 -0
  427. package/dist/widgets/diff.js.map +1 -0
  428. package/dist/widgets/expand.d.ts +28 -0
  429. package/dist/widgets/expand.d.ts.map +1 -0
  430. package/dist/widgets/expand.js +94 -0
  431. package/dist/widgets/expand.js.map +1 -0
  432. package/dist/widgets/index.d.ts +126 -0
  433. package/dist/widgets/index.d.ts.map +1 -0
  434. package/dist/widgets/index.js +455 -0
  435. package/dist/widgets/index.js.map +1 -0
  436. package/dist/widgets/internals/arrival-lang.d.ts +88 -0
  437. package/dist/widgets/internals/arrival-lang.d.ts.map +1 -0
  438. package/dist/widgets/internals/arrival-lang.js +211 -0
  439. package/dist/widgets/internals/arrival-lang.js.map +1 -0
  440. package/dist/widgets/internals/diff-expand.d.ts +93 -0
  441. package/dist/widgets/internals/diff-expand.d.ts.map +1 -0
  442. package/dist/widgets/internals/diff-expand.js +1106 -0
  443. package/dist/widgets/internals/diff-expand.js.map +1 -0
  444. package/dist/widgets/internals/embedded-syntax.d.ts +62 -0
  445. package/dist/widgets/internals/embedded-syntax.d.ts.map +1 -0
  446. package/dist/widgets/internals/embedded-syntax.js +465 -0
  447. package/dist/widgets/internals/embedded-syntax.js.map +1 -0
  448. package/dist/widgets/internals/markdown-expand.d.ts +57 -0
  449. package/dist/widgets/internals/markdown-expand.d.ts.map +1 -0
  450. package/dist/widgets/internals/markdown-expand.js +980 -0
  451. package/dist/widgets/internals/markdown-expand.js.map +1 -0
  452. package/dist/widgets/internals/overlay-syntax.d.ts +24 -0
  453. package/dist/widgets/internals/overlay-syntax.d.ts.map +1 -0
  454. package/dist/widgets/internals/overlay-syntax.js +90 -0
  455. package/dist/widgets/internals/overlay-syntax.js.map +1 -0
  456. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts +6 -0
  457. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts.map +1 -0
  458. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js +8 -0
  459. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js.map +1 -0
  460. package/dist/widgets/internals/pierre-parse/constants.d.ts +13 -0
  461. package/dist/widgets/internals/pierre-parse/constants.d.ts.map +1 -0
  462. package/dist/widgets/internals/pierre-parse/constants.js +13 -0
  463. package/dist/widgets/internals/pierre-parse/constants.js.map +1 -0
  464. package/dist/widgets/internals/pierre-parse/detachString.d.ts +3 -0
  465. package/dist/widgets/internals/pierre-parse/detachString.d.ts.map +1 -0
  466. package/dist/widgets/internals/pierre-parse/detachString.js +24 -0
  467. package/dist/widgets/internals/pierre-parse/detachString.js.map +1 -0
  468. package/dist/widgets/internals/pierre-parse/index.d.ts +8 -0
  469. package/dist/widgets/internals/pierre-parse/index.d.ts.map +1 -0
  470. package/dist/widgets/internals/pierre-parse/index.js +8 -0
  471. package/dist/widgets/internals/pierre-parse/index.js.map +1 -0
  472. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts +15 -0
  473. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts.map +1 -0
  474. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js +39 -0
  475. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js.map +1 -0
  476. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts +11 -0
  477. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts.map +1 -0
  478. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js +621 -0
  479. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js.map +1 -0
  480. package/dist/widgets/internals/pierre-parse/types.d.ts +73 -0
  481. package/dist/widgets/internals/pierre-parse/types.d.ts.map +1 -0
  482. package/dist/widgets/internals/pierre-parse/types.js +7 -0
  483. package/dist/widgets/internals/pierre-parse/types.js.map +1 -0
  484. package/dist/widgets/internals/syntax.d.ts +55 -0
  485. package/dist/widgets/internals/syntax.d.ts.map +1 -0
  486. package/dist/widgets/internals/syntax.js +261 -0
  487. package/dist/widgets/internals/syntax.js.map +1 -0
  488. package/dist/widgets/markdown.d.ts +14 -0
  489. package/dist/widgets/markdown.d.ts.map +1 -0
  490. package/dist/widgets/markdown.js +9 -0
  491. package/dist/widgets/markdown.js.map +1 -0
  492. package/dist/widgets/shadow-stream.d.ts +88 -0
  493. package/dist/widgets/shadow-stream.d.ts.map +1 -0
  494. package/dist/widgets/shadow-stream.js +359 -0
  495. package/dist/widgets/shadow-stream.js.map +1 -0
  496. package/dist/widgets/speech.d.ts +36 -0
  497. package/dist/widgets/speech.d.ts.map +1 -0
  498. package/dist/widgets/speech.js +238 -0
  499. package/dist/widgets/speech.js.map +1 -0
  500. package/dist/widgets/stream-birth.d.ts +13 -0
  501. package/dist/widgets/stream-birth.d.ts.map +1 -0
  502. package/dist/widgets/stream-birth.js +70 -0
  503. package/dist/widgets/stream-birth.js.map +1 -0
  504. package/dist/widgets/syntax-boot.d.ts +25 -0
  505. package/dist/widgets/syntax-boot.d.ts.map +1 -0
  506. package/dist/widgets/syntax-boot.js +181 -0
  507. package/dist/widgets/syntax-boot.js.map +1 -0
  508. package/dist/widgets/text.d.ts +16 -0
  509. package/dist/widgets/text.d.ts.map +1 -0
  510. package/dist/widgets/text.js +14 -0
  511. package/dist/widgets/text.js.map +1 -0
  512. package/dist/widgets/transcript.d.ts +44 -0
  513. package/dist/widgets/transcript.d.ts.map +1 -0
  514. package/dist/widgets/transcript.js +106 -0
  515. package/dist/widgets/transcript.js.map +1 -0
  516. package/doom.vert +1840 -0
  517. package/fonts/DejaVuSans.ttf +0 -0
  518. package/fonts/DejaVuSansMono.ttf +0 -0
  519. package/fonts/LICENSE-DejaVu.txt +187 -0
  520. package/fonts/README.md +6 -0
  521. package/gradient.vert +75 -0
  522. package/package.json +147 -4
package/doom.vert ADDED
@@ -0,0 +1,1840 @@
1
+ // E1M1 - Hangar
2
+ // by @P_Malin
3
+
4
+ // Procedural version of Doom E1M1
5
+
6
+ // The start area of Doom E1M1.
7
+ // Click and drag the mouse to move.
8
+ // Where you click relative to the center of the screen sets the view direction.
9
+
10
+ // This is the single pass version. A multi-pass playable version is here: https://www.shadertoy.com/view/lldGDr
11
+
12
+ // Also, check out Reinder's excellent Doom2 shader: https://www.shadertoy.com/view/lsB3zD
13
+
14
+ // The sectors we draw by default
15
+ #define ENABLE_NUKAGE_SECTORS
16
+ #define ENABLE_START_SECTORS
17
+
18
+ // Adding this compiles with "Unknown Error" on some machines. Uncomment if you are feeling lucky.
19
+ //#define ENABLE_SECTOR_31
20
+
21
+ // Some additional sectors, may need to comment out some of the default ones
22
+ //#define ENABLE_EXTRA_NUKAGE_SECTORS
23
+ //#define ENABLE_MISC_SECTORS
24
+
25
+ #define ENABLE_SPRITES
26
+
27
+ #define DEMO_CAMERA
28
+ #define INTRO_EFFECT
29
+ #define DRAW_SKY
30
+ #define HEAD_BOB
31
+
32
+ #define PIXELATE_IMAGE
33
+ #define QUANTIZE_FINAL_IMAGE
34
+ #define QUANTIZE_TEXTURES
35
+ #define PIXELATE_TEXTURES
36
+
37
+ //#define DISCARD_BACKGROUND
38
+
39
+ //#define DRAW_COMPASS
40
+
41
+ // Add walls to close entrances to sectors we are not rendering
42
+ #ifndef ENABLE_EXTRA_NUKAGE_SECTORS
43
+ #define CLOSE_NUKAGE_SECTOR
44
+ #endif
45
+ #ifndef ENABLE_SECTOR_31
46
+ #define CLOSE_START_SECTOR
47
+ #endif
48
+
49
+ #define FAR_CLIP 10000.0
50
+
51
+ const vec2 vFakeResolution = vec2(320.0, 240.0);
52
+
53
+ const float kDepthFadeScale = (1.0 / 3500.0);
54
+ const float kExtraLight = 0.0;
55
+
56
+ // Light level adjustment to East-West and North-South walls
57
+ const float kC = (1.0 / 16.0);
58
+
59
+
60
+ struct Ray
61
+ {
62
+ vec3 vRayOrigin;
63
+ vec3 vRayDir;
64
+ vec2 vSpriteDir;
65
+ };
66
+
67
+ vec3 SampleTexture( const in float fTexture, const in vec2 vUV );
68
+ void MapIntersect( out float fClosestT, out vec4 vHitInfo, Ray r );
69
+ float hash(float p);
70
+
71
+ vec3 GetCameraRayDir( const in vec2 vWindow, const in vec3 vCameraPos, const in vec3 vCameraTarget )
72
+ {
73
+ vec3 vForward = normalize(vCameraTarget - vCameraPos);
74
+ vec3 vRight = normalize(cross(vec3(0.0, 1.0, 0.0), vForward));
75
+ vec3 vUp = normalize(cross(vForward, vRight));
76
+
77
+ const float kFOV = 1.8;
78
+
79
+ vec3 vDir = normalize(vWindow.x * vRight + vWindow.y * vUp + vForward * kFOV);
80
+
81
+ return vDir;
82
+ }
83
+
84
+ vec3 Quantize( const in vec3 col )
85
+ {
86
+ return floor( col * 48.0 + 0.5 ) * (1.0 / 48.0);
87
+ }
88
+
89
+ float Cross2d( const in vec2 vA, const in vec2 vB )
90
+ {
91
+ //return cross( vec3(vA, 0.0), vec3(vB, 0.0) ).z;
92
+ return vA.x * vB.y - vA.y * vB.x;
93
+
94
+ //return dot(vA * vB.yx, vec2(1.0, -1.0));
95
+ }
96
+
97
+ void BeginSector( out vec4 vSectorState, const in vec2 vSectorHeights, Ray r )
98
+ {
99
+ // store the infinite floor-ceiling plane intersect depth in vSectorState.xy
100
+ vSectorState.xy = (vSectorHeights - r.vRayOrigin.y) / r.vRayDir.y;
101
+ vSectorState.zw = vec2(0.0,0.0);
102
+ }
103
+
104
+ // Intersect a sidedef that meets another sector with the same floor and ceiling height
105
+ void Null( inout vec4 vSectorState, const in int iAx, const in int iAy, const in int iBx, const in int iBy, Ray r )
106
+ {
107
+ vec2 vA = vec2(iAx, iAy);
108
+ vec2 vB = vec2(iBx, iBy);
109
+
110
+ vec2 vD = vB - vA;
111
+ vec2 vOA = vA - r.vRayOrigin.xz;
112
+ float fDenom = Cross2d( r.vRayDir.xz, vD );
113
+ float fRcpDenom = 1.0 / fDenom;
114
+ float fHitT = Cross2d( vOA, vD ) * fRcpDenom;
115
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * fRcpDenom;
116
+
117
+ if((fHitT > 0.0) && (fHitU >= 0.0) && (fHitU < 1.0))
118
+ {
119
+ // If we crossed the sector edge further away than the floor-ceiling intersection
120
+ // then we increment the in-out test value
121
+ // This is like doing a ray-casting point in polygon test
122
+ // http://en.wikipedia.org/wiki/Point_in_polygon
123
+ // from the floor/ceiling intersection depth to far clip depth
124
+ vSectorState.zw += step(vSectorState.xy, vec2(fHitT,fHitT));
125
+ }
126
+ }
127
+
128
+ void Wall( inout float fClosestT, inout vec4 vHitInfo, inout vec4 vSectorState, const in int iAx, const in int iAy, const in int iBx, const in int iBy, const in int iLen, const in float fLightLevel, const in vec2 vSectorHeights, const in float fTexture, Ray r )
129
+ {
130
+ vec2 vA = vec2(iAx, iAy);
131
+ vec2 vB = vec2(iBx, iBy);
132
+ float fLen = float(iLen);
133
+
134
+ vec2 vD = vB - vA;
135
+ vec2 vOA = vA - r.vRayOrigin.xz;
136
+ float fDenom = Cross2d( r.vRayDir.xz, vD );
137
+ float fRcpDenom = 1.0 / fDenom;
138
+ float fHitT = Cross2d( vOA, vD ) * fRcpDenom;
139
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * fRcpDenom;
140
+
141
+ if((fHitT > 0.0) && (fHitU >= 0.0) && (fHitU < 1.0))
142
+ {
143
+ // If we crossed the sector edge further away than the floor-ceiling intersection
144
+ // then we increment the in-out test value
145
+ // This is like doing a ray-casting point in polygon test
146
+ // http://en.wikipedia.org/wiki/Point_in_polygon
147
+ // from the floor/ceiling intersection depth to far clip depth
148
+ vSectorState.zw += step(vSectorState.xy, vec2(fHitT,fHitT));
149
+
150
+ if((fHitT < fClosestT) && (fDenom < 0.0))
151
+ {
152
+ float fHitY = r.vRayDir.y * fHitT + r.vRayOrigin.y;
153
+ if( (fHitY > vSectorHeights.x) && (fHitY < vSectorHeights.y) )
154
+ {
155
+ fClosestT = fHitT;
156
+ vHitInfo = vec4(fHitU * fLen, fHitY, fLightLevel, fTexture);
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ void Open( inout float fClosestT, inout vec4 vHitInfo, inout vec4 vSectorState, const in int iAx, const in int iAy, const in int iBx, const in int iBy, const in int iLen, const in float fLightLevel, const in vec2 vSectorHeights, const in int iLowerHeight, const in int iUpperHeight, const in float fLowerTexture, const in float fUpperTexture, Ray r )
163
+ {
164
+ vec2 vA = vec2(iAx, iAy);
165
+ vec2 vB = vec2(iBx, iBy);
166
+ float fLen = float(iLen);
167
+ float fUpperHeight = float(iUpperHeight);
168
+ float fLowerHeight = float(iLowerHeight);
169
+
170
+ vec2 vD = vB - vA;
171
+ vec2 vOA = vA - r.vRayOrigin.xz;
172
+ float fDenom = Cross2d( r.vRayDir.xz, vD );
173
+ float fRcpDenom = 1.0 / fDenom;
174
+ float fHitT = Cross2d( vOA, vD ) * fRcpDenom;
175
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * fRcpDenom;
176
+
177
+ if((fHitT > 0.0) && (fHitU >= 0.0) && (fHitU < 1.0))
178
+ {
179
+ // If we crossed the sector edge further away than the floor-ceiling intersection
180
+ // then we increment the in-out test value
181
+ // This is like doing a ray-casting point in polygon test
182
+ // http://en.wikipedia.org/wiki/Point_in_polygon
183
+ // from the floor/ceiling intersection depth to far clip depth
184
+ vSectorState.zw += step(vSectorState.xy, vec2(fHitT,fHitT));
185
+
186
+ if((fHitT < fClosestT) && (fDenom < 0.0))
187
+ {
188
+ float fHitY = r.vRayDir.y * fHitT + r.vRayOrigin.y;
189
+ if( (fHitY > vSectorHeights.x) && (fHitY < vSectorHeights.y) )
190
+ {
191
+ if(fHitY < fLowerHeight)
192
+ {
193
+ fClosestT = fHitT;
194
+ vHitInfo = vec4(fHitU * fLen, fHitY - fLowerHeight, fLightLevel, fLowerTexture);
195
+ }
196
+ if(fHitY > fUpperHeight)
197
+ {
198
+ fClosestT = fHitT;
199
+ vHitInfo = vec4(fHitU * fLen, fHitY - fUpperHeight, fLightLevel, fUpperTexture);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+
206
+ void Upper( inout float fClosestT, inout vec4 vHitInfo, inout vec4 vSectorState, const in int iAx, const in int iAy, const in int iBx, const in int iBy, const in int iLen, const in float fLightLevel, const in vec2 vSectorHeights, const in int iUpperHeight, const in float fUpperTexture, Ray r )
207
+ {
208
+ vec2 vA = vec2(iAx, iAy);
209
+ vec2 vB = vec2(iBx, iBy);
210
+ float fLen = float(iLen);
211
+ float fUpperHeight = float(iUpperHeight);
212
+
213
+ vec2 vD = vB - vA;
214
+ vec2 vOA = vA - r.vRayOrigin.xz;
215
+ float fDenom = Cross2d( r.vRayDir.xz, vD );
216
+ float fRcpDenom = 1.0 / fDenom;
217
+ float fHitT = Cross2d( vOA, vD ) * fRcpDenom;
218
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * fRcpDenom;
219
+
220
+ if((fHitT > 0.0) && (fHitU >= 0.0) && (fHitU < 1.0))
221
+ {
222
+ // If we crossed the sector edge further away than the floor-ceiling intersection
223
+ // then we increment the in-out test value
224
+ // This is like doing a ray-casting point in polygon test
225
+ // http://en.wikipedia.org/wiki/Point_in_polygon
226
+ // from the floor/ceiling intersection depth to far clip depth
227
+ vSectorState.zw += step(vSectorState.xy, vec2(fHitT,fHitT));
228
+
229
+ if((fHitT < fClosestT) && (fDenom < 0.0))
230
+ {
231
+ float fHitY = r.vRayDir.y * fHitT + r.vRayOrigin.y;
232
+ if( fHitY < vSectorHeights.y )
233
+ {
234
+ if(fHitY > fUpperHeight)
235
+ {
236
+ fClosestT = fHitT;
237
+ vHitInfo = vec4(fHitU * fLen, fHitY - fUpperHeight, fLightLevel, fUpperTexture);
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+
244
+
245
+ void Lower( inout float fClosestT, inout vec4 vHitInfo, inout vec4 vSectorState, const in int iAx, const in int iAy, const in int iBx, const in int iBy, const in int iLen, const in float fLightLevel, const in vec2 vSectorHeights, const in int iLowerHeight, const in float fLowerTexture, Ray r )
246
+ {
247
+ vec2 vA = vec2(iAx, iAy);
248
+ vec2 vB = vec2(iBx, iBy);
249
+ float fLen = float(iLen);
250
+ float fLowerHeight = float(iLowerHeight);
251
+
252
+ vec2 vD = vB - vA;
253
+ vec2 vOA = vA - r.vRayOrigin.xz;
254
+ float fDenom = Cross2d( r.vRayDir.xz, vD );
255
+ float fRcpDenom = 1.0 / fDenom;
256
+ float fHitT = Cross2d( vOA, vD ) * fRcpDenom;
257
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * fRcpDenom;
258
+
259
+ if((fHitT > 0.0) && (fHitU >= 0.0) && (fHitU < 1.0))
260
+ {
261
+ // If we crossed the sector edge further away than the floor-ceiling intersection
262
+ // then we increment the in-out test value
263
+ // This is like doing a ray-casting point in polygon test
264
+ // http://en.wikipedia.org/wiki/Point_in_polygon
265
+ // from the floor/ceiling intersection depth to far clip depth
266
+ vSectorState.zw += step(vSectorState.xy, vec2(fHitT,fHitT));
267
+
268
+ if((fHitT < fClosestT) && (fDenom < 0.0))
269
+ {
270
+ float fHitY = r.vRayDir.y * fHitT + r.vRayOrigin.y;
271
+ if( fHitY > vSectorHeights.x )
272
+ {
273
+ if(fHitY < fLowerHeight)
274
+ {
275
+ fClosestT = fHitT;
276
+ vHitInfo = vec4(fHitU * fLen, fHitY - fLowerHeight, fLightLevel, fLowerTexture);
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+
283
+ void EndSector( inout float fClosestT, inout vec4 vHitInfo, in vec4 vSectorState, const in float fLightLevel, const in vec2 vFloorCeilingTextures, Ray r )
284
+ {
285
+ // Test the even-odd state of our sector floor/ceiling in-out values
286
+ vec2 vInOutTest = fract( vSectorState.zw * 0.5 ) * 2.0;
287
+
288
+ if( fClosestT > vSectorState.x )
289
+ {
290
+ if((vInOutTest.x > 0.5) && (vSectorState.x > 0.0))
291
+ {
292
+ vec3 vFloorPos = r.vRayOrigin + r.vRayDir * vSectorState.x;
293
+ if( r.vRayOrigin.y > vFloorPos.y )
294
+ {
295
+ fClosestT = vSectorState.x;
296
+ vHitInfo = vec4( vFloorPos.xz, fLightLevel, vFloorCeilingTextures.x);
297
+ }
298
+ }
299
+ }
300
+
301
+ if( fClosestT > vSectorState.y )
302
+ {
303
+ if((vInOutTest.y > 0.5) && (vSectorState.y > 0.0))
304
+ {
305
+ vec3 vCeilingPos = r.vRayOrigin + r.vRayDir * vSectorState.y;
306
+ if( r.vRayOrigin.y < vCeilingPos.y )
307
+ {
308
+ fClosestT = vSectorState.y;
309
+ vHitInfo = vec4( vCeilingPos.xz, fLightLevel, vFloorCeilingTextures.y);
310
+ }
311
+ }
312
+ }
313
+ }
314
+
315
+ #ifdef ENABLE_SPRITES
316
+
317
+ void Sprite( out float fClosestT, out vec4 vHitInfo, const in vec2 vSpriteDir, const in int iX, const in int iY, const in int iZ, vec2 vSize, float fLightLevel, float fTexture, Ray r )
318
+ {
319
+ vec3 vPos = vec3(iX, iY, iZ);
320
+ fClosestT = FAR_CLIP;
321
+ vHitInfo = vec4(0.0,0.0,0.0,0.0);
322
+ vec2 vA = vPos.xz - vSpriteDir * 0.5 * vSize.x;
323
+ vec2 vB = vPos.xz + vSpriteDir * 0.5 * vSize.x;
324
+ vec2 vD = vB - vA;
325
+ vec2 vOA = vA - r.vRayOrigin.xz;
326
+ float rcpdenom = 1.0 / Cross2d( r.vRayDir.xz, vD );
327
+ float fHitT = Cross2d( vOA, vD ) * rcpdenom;
328
+
329
+ if(fHitT > 0.0)
330
+ {
331
+ float fHitU = Cross2d( vOA, r.vRayDir.xz ) * rcpdenom;
332
+ if((fHitU >= 0.0) && (fHitU < 1.0))
333
+ {
334
+ float fHitY = r.vRayDir.y * fHitT + r.vRayOrigin.y;
335
+ if( (fHitT < fClosestT) && (fHitY > vPos.y) && (fHitY < (vPos.y + vSize.y)) )
336
+ {
337
+ fClosestT = fHitT;
338
+ vHitInfo = vec4(fHitU * vSize.x, fHitY - vPos.y, fLightLevel, fTexture);
339
+ }
340
+ }
341
+ }
342
+ }
343
+
344
+ bool MaskBarrel(vec2 vTexCoord)
345
+ {
346
+ vec2 vSize = vec2(23.0, 32.0);
347
+
348
+ vTexCoord = floor(vTexCoord);
349
+
350
+ // remove corner pixels
351
+ vec2 vWrapCoord = fract((vTexCoord + vec2(2.0, 1.0) ) / vSize) * vSize;
352
+
353
+ return ( (vWrapCoord.x >= 4.0) || (vWrapCoord.y >= 2.0) );
354
+ }
355
+
356
+
357
+ vec4 CosApprox( vec4 x )
358
+ {
359
+ x = abs(fract(x * (0.5))*2.0 - 1.0);
360
+ vec4 x2 = x*x;
361
+ return( ( x2 * 3.0) - ( 2.0 * x2*x) );
362
+ }
363
+
364
+ bool MaskCorpseSprite(vec2 vTexCoord)
365
+ {
366
+ //vTexCoord = floor(vTexCoord);
367
+
368
+ vec2 vUV = vTexCoord.xy / vec2(57.0, 22.0);
369
+ vec2 vOffset = vUV;
370
+ vOffset = vOffset * 2.0 -vec2(1.0, 0.8);
371
+ float fDist = dot(vOffset, vOffset);
372
+ fDist += dot(CosApprox(vTexCoord.xyxy * vec4(0.55, 0.41, 0.25, 0.1)), vec4(0.2 * -vOffset.yyyy));
373
+ return fDist < 0.4;
374
+ }
375
+
376
+ #define TEX_BAR1A 32.0
377
+ #define TEX_PLAYW 33.0
378
+
379
+ void BarrelSprite(inout float fClosestT, inout vec4 vHitInfo, const in vec2 vSpriteDir, const in int iX, const in int iY, const in int iZ, const in float fLightLevel, Ray r )
380
+ {
381
+ float fSpriteT;
382
+ vec4 vSpriteHitInfo;
383
+ Sprite( fSpriteT, vSpriteHitInfo, vSpriteDir, iX, iY, iZ, vec2(23.0, 32.0), fLightLevel, TEX_BAR1A, r);
384
+
385
+ if(fSpriteT < fClosestT)
386
+ {
387
+ if(MaskBarrel(vSpriteHitInfo.xy))
388
+ {
389
+ fClosestT = fSpriteT;
390
+ vHitInfo = vSpriteHitInfo;
391
+ }
392
+ }
393
+ }
394
+
395
+ void CorpseSprite(inout float fClosestT, inout vec4 vHitInfo, const in vec2 vSpriteDir, const in int iX, const in int iY, const in int iZ, const in float fLightLevel, Ray r )
396
+ {
397
+ float fSpriteT;
398
+ vec4 vSpriteHitInfo;
399
+ Sprite( fSpriteT, vSpriteHitInfo, vSpriteDir, iX, iY, iZ, vec2(57.0, 22.0), fLightLevel, TEX_PLAYW, r );
400
+
401
+ if(fSpriteT < fClosestT)
402
+ {
403
+ if(MaskCorpseSprite(vSpriteHitInfo.xy))
404
+ {
405
+ fClosestT = fSpriteT;
406
+ vHitInfo = vSpriteHitInfo;
407
+ }
408
+ }
409
+ }
410
+ #endif
411
+
412
+ vec3 DrawScene(vec3 vForwards, vec2 vUV, Ray r )
413
+ {
414
+
415
+ vec4 vHitInfo;
416
+ float fClosestT;
417
+ float fNoFog = 0.0;
418
+
419
+
420
+ MapIntersect( fClosestT, vHitInfo, r );
421
+
422
+
423
+ #ifdef ENABLE_SPRITES
424
+ vec2 vSpriteDir = -normalize(vec2(-vForwards.z, vForwards.x));
425
+ BarrelSprite(fClosestT, vHitInfo, vSpriteDir, 1088, 0, -2944, 0.565, r);
426
+ BarrelSprite(fClosestT, vHitInfo, vSpriteDir, 864, 0, -3328, 0.565, r);
427
+ BarrelSprite(fClosestT, vHitInfo, vSpriteDir, 1312, -16, -3264, 0.878, r);
428
+ CorpseSprite(fClosestT, vHitInfo, vSpriteDir, 1024, -16, -3264, 0.878, r);
429
+ #endif
430
+
431
+ vHitInfo.z = clamp(vHitInfo.z + kExtraLight, 0.0, 1.0);
432
+
433
+ // sky
434
+ #ifdef DRAW_SKY
435
+ float fDoSky = step(0.9, vHitInfo.w) * step(vHitInfo.w, 1.1);
436
+
437
+ fNoFog = max(fNoFog, fDoSky);
438
+ float fSkyU = (atan(vForwards.x, vForwards.z) * 512.0 / radians(180.0)) + vUV.x * 320.0;
439
+ float fSkyV = vUV.y * 240.0;
440
+ vHitInfo = mix(vHitInfo, vec4(fSkyU, fSkyV, 1.0, 1.0), fDoSky);
441
+ #endif
442
+
443
+ // fade in effect
444
+ #ifdef INTRO_EFFECT
445
+ float fEffectOffset = max(iTime - 1.0, 0.0) - hash(vUV.x);
446
+ vec2 vEffectUV = vUV;
447
+ vEffectUV.y += clamp(fEffectOffset, 0.0, 1.0);
448
+
449
+ float fDoEffect = step(vEffectUV.y, 1.0);
450
+ vHitInfo = mix(vHitInfo, vec4(vEffectUV * 128.0, 1.0, 3.0), fDoEffect);
451
+ fNoFog = max(fNoFog, fDoEffect);
452
+ #endif
453
+
454
+ #ifdef DISCARD_BACKGROUND
455
+ if(vHitInfo.w == 0.0) discard;
456
+ #endif
457
+
458
+ float fLightLevel = clamp( vHitInfo.z, 0.0, 1.0 );
459
+ float fDepth = dot(r.vRayDir, vForwards) * fClosestT;
460
+ float fDepthFade = fDepth * kDepthFadeScale;
461
+ float fApplyFog = 1.0 - fNoFog;
462
+ fLightLevel = clamp( fLightLevel - fDepthFade * fApplyFog, 0.0, 1.0 );
463
+
464
+ vec3 vResult = SampleTexture( vHitInfo.w, vHitInfo.xy ) * fLightLevel;
465
+
466
+ vResult = clamp(vResult * 1.2, 0.0, 1.0);
467
+
468
+ #ifdef QUANTIZE_FINAL_IMAGE
469
+ vResult = Quantize(vResult);
470
+ #endif
471
+
472
+ return vResult;
473
+ }
474
+
475
+ void DemoCamera( float time, inout vec3 vCameraPos, inout vec3 vCameraTarget )
476
+ {
477
+ vCameraPos = vec3(1050, 30, -3616);
478
+ vCameraTarget = vec3(1050, 30, -3500);
479
+
480
+ #ifdef DEMO_CAMERA
481
+ float fCamTime = time - 5.0;
482
+ if(fCamTime > 0.0) fCamTime = mod(fCamTime, 33.0 - 5.0) + 5.0;
483
+ if(iTime==10.0) fCamTime = 0.0; // hack for shadertoy preview screen
484
+ vCameraTarget = mix( vCameraTarget, vec3(1834, 30, -3264), smoothstep(5.0, 10.0, fCamTime));
485
+ vCameraPos = mix( vCameraPos, vec3(1280, 30, -3350), smoothstep(8.0, 13.0, fCamTime));
486
+
487
+ vCameraTarget = mix( vCameraTarget, vec3(1280, 30, -2976), smoothstep(11.0, 16.0, fCamTime));
488
+ vCameraPos = mix( vCameraPos, vec3(1280, 30, -2976), smoothstep(13.0, 19.0, fCamTime));
489
+
490
+ vCameraTarget = mix( vCameraTarget, vec3(768, 30, -3050), smoothstep(16.0, 20.0, fCamTime));
491
+ vCameraPos = mix( vCameraPos, vec3(832, 30, -3020), smoothstep(19.0, 23.0, fCamTime));
492
+
493
+ vCameraTarget = mix( vCameraTarget, vec3(1256, 30, -3648), smoothstep(20.0, 25.0, fCamTime));
494
+ vCameraPos = mix( vCameraPos, vec3(768, 30, -3424), smoothstep(23.0, 28.0, fCamTime));
495
+
496
+ vCameraPos = mix( vCameraPos, vec3(1050, 30, -3616), smoothstep(25.0, 30.0, fCamTime));
497
+ vCameraTarget = mix( vCameraTarget, vec3(1050, 30, -3500), smoothstep(28.0, 33.0, fCamTime));
498
+ #endif
499
+ }
500
+
501
+ void mainImage( out vec4 fragColor, in vec2 fragCoord )
502
+ {
503
+ vec2 vOrigUV = fragCoord.xy / iResolution.xy;
504
+
505
+ #ifdef PIXELATE_IMAGE
506
+ vec2 vUV = floor(vOrigUV * vFakeResolution + 0.5) * (1.0 / vFakeResolution);
507
+ #else
508
+ vec2 vUV = vOrigUV;
509
+ #endif
510
+
511
+ vec3 vCameraPos = vec3(0.0);
512
+ vec3 vCameraTarget = vec3(0.0);
513
+
514
+ vec2 vMouse = (iMouse.xy / iResolution.xy);
515
+
516
+ const vec2 vStart = vec2(1050, -3616);
517
+
518
+ if(iMouse.z > 0.0)
519
+ {
520
+ vec2 vDir = normalize((abs(iMouse.zw) / iResolution.xy) - 0.5);
521
+ vec2 vOffset = (iMouse.xy - abs(iMouse.zw)) / iResolution.xy;
522
+ vCameraPos.y = 30.0;
523
+ vCameraPos.xz = (vDir.yx * vec2(1.0, -1.0) * vOffset.x + vDir * vOffset.y) * 5000.0;
524
+ vCameraPos.xz += vStart;
525
+ vCameraTarget.xz = vCameraPos.xz + vDir * 10.0;
526
+ vCameraTarget.y = vCameraPos.y;
527
+ }
528
+ else
529
+ {
530
+ DemoCamera( iTime, vCameraPos, vCameraTarget );
531
+ }
532
+
533
+ #ifdef HEAD_BOB
534
+ float fBob = sin(length(vCameraPos.xz - vStart) * 0.04) * 4.0; // head bob
535
+ vCameraPos.y += fBob;
536
+ vCameraTarget.y += fBob;
537
+ #endif
538
+
539
+ vec2 vWindowCoord = (vUV * 2.0 - 1.0) * vec2(iResolution.x / iResolution.y, 1.0);
540
+
541
+ Ray r;
542
+
543
+
544
+ r.vRayOrigin = vCameraPos;
545
+ r.vRayDir = GetCameraRayDir( vWindowCoord, vCameraPos, vCameraTarget );
546
+
547
+ vec3 vForwards = normalize(vCameraTarget - vCameraPos);
548
+
549
+ vec3 vResult = DrawScene(vForwards, vUV, r);
550
+
551
+ #ifdef DRAW_COMPASS
552
+ // a hack - assume we have never clicked the mouse before if coordinate is zero
553
+ if((iMouse.x > 0.5) && (iMouse.y > 0.5))
554
+ {
555
+ if(iMouse.z <= 0.0)
556
+ {
557
+ vec2 vCompassUV = vOrigUV - 0.5;
558
+ vCompassUV.x *= iResolution.x / iResolution.y;
559
+ float fDistNS = ((abs(vCompassUV.x) * 10.0) + abs(vCompassUV.y) - 0.05);
560
+ float fDistEW = ((abs(vCompassUV.y) * 10.0) + abs(vCompassUV.x) - 0.025);
561
+ float fDistCircle = abs(0.045 - length(vCompassUV)) * 10.0;
562
+ float fDist = min(min(fDistNS, fDistEW), fDistCircle);
563
+
564
+ float fAmount = clamp(fDist * 20.0, 0.0, 1.0);
565
+ float fCol = step(fract((floor(vCompassUV.x) + floor(vCompassUV.y)) * 0.5), 0.25);
566
+ vResult = mix(vec3(fCol * 0.75 + 0.25), vResult, fAmount);
567
+ }
568
+ }
569
+ #endif
570
+
571
+ fragColor = vec4(vResult, 1.0);
572
+ }
573
+
574
+ // Generated code follows
575
+ // ----------------- 8< -------------------------- 8< -------------------------- 8< --------------
576
+
577
+ // Textures
578
+ #define TEX_X 0.0
579
+ #define TEX_F_SKY1 1.0
580
+ #define TEX_NUKAGE3 2.0
581
+ #define TEX_FLOOR7_1 3.0
582
+ #define TEX_FLAT5_5 4.0
583
+ #define TEX_FLOOR4_8 5.0
584
+ #define TEX_CEIL3_5 6.0
585
+ #define TEX_TLITE6_4 7.0
586
+ #define TEX_FLAT14 8.0
587
+ #define TEX_FLOOR7_2 9.0
588
+ #define TEX_STEP2 10.0
589
+ #define TEX_TLITE6_1 11.0
590
+ #define TEX_DOOR3 12.0
591
+ #define TEX_LITE3 13.0
592
+ #define TEX_STARTAN3 14.0
593
+ #define TEX_BROWN1 15.0
594
+ #define TEX_DOORSTOP 16.0
595
+ #define TEX_COMPUTE2 17.0
596
+ #define TEX_STEP6 18.0
597
+ #define TEX_BROWN144 19.0
598
+ #define TEX_SUPPORT2 20.0
599
+ #define TEX_STARG3 21.0
600
+ #define TEX_DOORTRAK 22.0
601
+ #define TEX_SLADWALL 23.0
602
+ #define TEX_TEKWALL4 24.0
603
+ #define TEX_SW1COMP 25.0
604
+ #define TEX_BIGDOOR2 26.0
605
+
606
+ // Sectors
607
+
608
+ void Sector0( inout float fT, inout vec4 vInf, Ray r )
609
+ {
610
+ vec4 vSS;
611
+ const float fLt=1.000;
612
+ const vec2 vSH=vec2(-80.0, 216.0);
613
+
614
+ BeginSector( vSS, vSH, r );
615
+ Lower( fT, vInf, vSS, 1520, -3168, 1672, -3104, 164, fLt, vSH, -56, TEX_BROWN144, r );
616
+ Lower( fT, vInf, vSS, 1672, -3104, 1896, -3104, 224, fLt-kC, vSH, -56, TEX_BROWN144, r );
617
+ Lower( fT, vInf, vSS, 1896, -3104, 2040, -3144, 149, fLt, vSH, -56, TEX_BROWN144, r );
618
+ Lower( fT, vInf, vSS, 2040, -3144, 2128, -3272, 155, fLt, vSH, -56, TEX_BROWN144, r );
619
+ Lower( fT, vInf, vSS, 2128, -3272, 2064, -3408, 150, fLt, vSH, -56, TEX_BROWN144, r );
620
+ Lower( fT, vInf, vSS, 2064, -3408, 1784, -3448, 282, fLt, vSH, -56, TEX_BROWN144, r );
621
+ Lower( fT, vInf, vSS, 1784, -3448, 1544, -3384, 248, fLt, vSH, -56, TEX_BROWN144, r );
622
+ Lower( fT, vInf, vSS, 1544, -3384, 1520, -3168, 217, fLt, vSH, -56, TEX_BROWN144, r );
623
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_NUKAGE3, TEX_F_SKY1), r );
624
+ }
625
+
626
+ void Sector1( inout float fT, inout vec4 vInf, Ray r )
627
+ {
628
+ vec4 vSS;
629
+ const float fLt=1.000;
630
+ const vec2 vSH=vec2(-56.0, 216.0);
631
+ // merge walls from ultimate doom secret
632
+
633
+ BeginSector( vSS, vSH, r );
634
+ Open( fT, vInf, vSS, 1376, -3200, 1376, -3104, 96, fLt+kC, vSH, 8, 192, TEX_STARTAN3, TEX_STARTAN3, r );
635
+ Open( fT, vInf, vSS, 1376, -3360, 1376, -3264, 96, fLt+kC, vSH, 8, 192, TEX_STARTAN3, TEX_STARTAN3, r );
636
+ Wall( fT, vInf, vSS, 1376, -3264, 1376, -3200, 64, fLt+kC, vSH, TEX_STARTAN3, r);
637
+ Wall( fT, vInf, vSS, 1376, -3104, 1376, -2944, 160, fLt+kC, vSH, TEX_STARTAN3, r);
638
+ Wall( fT, vInf, vSS, 1376, -2944, 1472, -2880, 115, fLt, vSH, TEX_STARTAN3, r);
639
+ Wall( fT, vInf, vSS, 1856, -2880, 1920, -2920, 75, fLt, vSH, TEX_STARTAN3, r);
640
+ Null( vSS, 1520, -3168, 1672, -3104, r );
641
+ Null( vSS, 1672, -3104, 1896, -3104, r );
642
+ Null( vSS, 1896, -3104, 2040, -3144, r );
643
+ Null( vSS, 2040, -3144, 2128, -3272, r );
644
+ Null( vSS, 2128, -3272, 2064, -3408, r );
645
+ Null( vSS, 2064, -3408, 1784, -3448, r );
646
+ Null( vSS, 1784, -3448, 1544, -3384, r );
647
+ Null( vSS, 1544, -3384, 1520, -3168, r );
648
+ Wall( fT, vInf, vSS, 2736, -3360, 2736, -3648, 288, fLt+kC, vSH, TEX_STARTAN3, r);
649
+ #ifdef CLOSE_NUKAGE_SECTOR
650
+ Wall( fT, vInf, vSS, 2736, -3648, 1376, -3648, 2736-1376, fLt, vSH, TEX_STARTAN3, r);
651
+ #else
652
+ Null( vSS, 2736, -3648, 2240, -3648, r );
653
+ Null( vSS, 2240, -3648, 1984, -3648, r );
654
+ Null( vSS, 1984, -3648, 1376, -3648, r );
655
+ #endif
656
+ Wall( fT, vInf, vSS, 2240, -2920, 2272, -3008, 93, fLt, vSH, TEX_STARTAN3, r);
657
+ Wall( fT, vInf, vSS, 2272, -3008, 2432, -3112, 190, fLt, vSH, TEX_STARTAN3, r);
658
+ Wall( fT, vInf, vSS, 2432, -3112, 2736, -3112, 304, fLt-kC, vSH, TEX_STARTAN3, r);
659
+ Open( fT, vInf, vSS, 2736, -3112, 2736, -3360, 248, fLt+kC, vSH, 0, 136, TEX_STARTAN3, TEX_STARTAN3, r );
660
+
661
+ // Merge walls from Ultimate Doom secret
662
+ Wall( fT, vInf, vSS, 1376, -3648, 1376, -3360, 3648-3360, fLt+kC, vSH, TEX_STARTAN3, r);
663
+ //Wall( fT, vInf, vSS, 1376, -3648, 1376, -3520, 128, fLt+kC, vSH, TEX_STARTAN3);
664
+ //Wall( fT, vInf, vSS, 1376, -3392, 1376, -3360, 32, fLt+kC, vSH, TEX_STARTAN3);
665
+ //Wall( fT, vInf, vSS, 1376, -3520, 1376, -3392, 128, fLt+kC, vSH, TEX_STARTAN3);
666
+
667
+ // Merge walls from Ultimate Doom secret
668
+ Wall( fT, vInf, vSS, 1472, -2880, 1856, -2880, 1856-1472, fLt-kC, vSH, TEX_STARTAN3, r);
669
+ //Wall( fT, vInf, vSS, 1472, -2880, 1664, -2880, 192, fLt-kC, vSH, TEX_STARTAN3);
670
+ //Wall( fT, vInf, vSS, 1664, -2880, 1856, -2880, 192, fLt-kC, vSH, TEX_STARTAN3);
671
+
672
+ // Merge walls
673
+ Wall( fT, vInf, vSS, 1920, -2920, 2240, -2920, 2240-1920, fLt-kC, vSH, TEX_STARTAN3, r);
674
+ //Wall( fT, vInf, vSS, 1920, -2920, 2176, -2920, 256, fLt-kC, vSH, TEX_STARTAN3);
675
+ //Wall( fT, vInf, vSS, 2176, -2920, 2240, -2920, 64, fLt-kC, vSH, TEX_STARTAN3);
676
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR7_1, TEX_F_SKY1), r );
677
+ }
678
+
679
+ void Sector3( inout float fT, inout vec4 vInf, Ray r )
680
+ {
681
+ vec4 vSS;
682
+ const float fLt=1.000;
683
+ const vec2 vSH=vec2(8.0, 192.0);
684
+
685
+ BeginSector( vSS, vSH, r );
686
+ Null( vSS, 1344, -3264, 1344, -3360, r );
687
+ Null( vSS, 1376, -3360, 1376, -3264, r );
688
+ Wall( fT, vInf, vSS, 1344, -3264, 1376, -3264, 32, fLt-kC, vSH, TEX_DOORSTOP, r);
689
+ Wall( fT, vInf, vSS, 1376, -3360, 1344, -3360, 32, fLt-kC, vSH, TEX_DOORSTOP, r);
690
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLAT5_5, TEX_FLAT5_5), r );
691
+ }
692
+
693
+ void Sector5( inout float fT, inout vec4 vInf, Ray r)
694
+ {
695
+ vec4 vSS;
696
+ const float fLt=1.000;
697
+ const vec2 vSH=vec2(8.0, 192.0);
698
+
699
+ BeginSector( vSS, vSH, r );
700
+ Null( vSS, 1344, -3104, 1344, -3200, r );
701
+ Null( vSS, 1376, -3200, 1376, -3104, r );
702
+ Wall( fT, vInf, vSS, 1376, -3200, 1344, -3200, 32, fLt-kC, vSH, TEX_DOORSTOP, r);
703
+ Wall( fT, vInf, vSS, 1344, -3104, 1376, -3104, 32, fLt-kC, vSH, TEX_DOORSTOP, r);
704
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLAT5_5, TEX_FLAT5_5), r );
705
+ }
706
+
707
+ void Sector11( inout float fT, inout vec4 vInf, Ray r )
708
+ {
709
+ vec4 vSS;
710
+ const float fLt=1.000;
711
+ const vec2 vSH=vec2(-56.0, 24.0);
712
+
713
+ BeginSector( vSS, vSH, r );
714
+ Wall( fT, vInf, vSS, 1528, -3680, 1376, -3648, 155, fLt, vSH, TEX_BROWN144, r);
715
+ Wall( fT, vInf, vSS, 1672, -3744, 1528, -3680, 157, fLt, vSH, TEX_BROWN144, r);
716
+ Wall( fT, vInf, vSS, 1984, -3776, 1672, -3744, 313, fLt, vSH, TEX_BROWN144, r);
717
+ Null( vSS, 1984, -3648, 1376, -3648, r );
718
+ Null( vSS, 1984, -3648, 1984, -3776, r );
719
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR7_1, TEX_F_SKY1), r );
720
+ }
721
+
722
+ void Sector12( inout float fT, inout vec4 vInf, Ray r )
723
+ {
724
+ vec4 vSS;
725
+ const float fLt=1.000;
726
+ const vec2 vSH=vec2(-56.0, 64.0);
727
+
728
+ BeginSector( vSS, vSH, r );
729
+ Wall( fT, vInf, vSS, 2240, -3776, 2208, -3680, 101, fLt, vSH, TEX_BROWN1, r);
730
+ Wall( fT, vInf, vSS, 2208, -3680, 2176, -3680, 32, fLt-kC, vSH, TEX_BROWN1, r);
731
+ Wall( fT, vInf, vSS, 2016, -3680, 1984, -3776, 101, fLt, vSH, TEX_BROWN1, r);
732
+ Wall( fT, vInf, vSS, 2048, -3680, 2016, -3680, 32, fLt-kC, vSH, TEX_BROWN1, r);
733
+ Upper( fT, vInf, vSS, 2176, -3680, 2048, -3680, 128, fLt-kC, vSH, 16, TEX_BROWN1, r );
734
+ Null( vSS, 2240, -3648, 1984, -3648, r );
735
+ Null( vSS, 1984, -3648, 1984, -3776, r );
736
+ Null( vSS, 2240, -3776, 2240, -3648, r );
737
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR7_1, TEX_F_SKY1), r );
738
+ }
739
+
740
+ void Sector24( inout float fT, inout vec4 vInf, Ray r )
741
+ {
742
+ vec4 vSS;
743
+ const float fLt=0.565;
744
+ const vec2 vSH=vec2(0.0, 144.0);
745
+
746
+ BeginSector( vSS, vSH ,r);
747
+ Wall( fT, vInf, vSS, 1216, -2880, 1248, -2528, 353, fLt, vSH, TEX_STARTAN3,r);
748
+ Wall( fT, vInf, vSS, 1384, -2592, 1344, -2880, 290, fLt, vSH, TEX_STARTAN3,r);
749
+ Wall( fT, vInf, vSS, 1472, -2560, 1384, -2592, 93, fLt, vSH, TEX_STARTAN3,r);
750
+ Wall( fT, vInf, vSS, 1248, -2528, 1472, -2432, 243, fLt, vSH, TEX_STARTAN3,r);
751
+ Upper( fT, vInf, vSS, 1344, -2880, 1216, -2880, 128, fLt-kC, vSH, 72, TEX_STARTAN3 ,r);
752
+ Upper( fT, vInf, vSS, 1472, -2432, 1472, -2560, 128, fLt+kC, vSH, 88, TEX_STARTAN3 ,r);
753
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_CEIL3_5) ,r);
754
+ }
755
+
756
+ void Sector25( inout float fT, inout vec4 vInf, Ray r )
757
+ {
758
+ vec4 vSS;
759
+ const float fLt=1.000;
760
+ const vec2 vSH=vec2(0.0, 88.0);
761
+
762
+ BeginSector( vSS, vSH , r);
763
+ Null( vSS, 1472, -2432, 1472, -2560 , r);
764
+ Wall( fT, vInf, vSS, 1536, -2432, 1536, -2560, 128, fLt+kC, vSH, TEX_BIGDOOR2, r);
765
+ Wall( fT, vInf, vSS, 1536, -2560, 1472, -2560, 64, fLt-kC, vSH, TEX_STARTAN3, r);
766
+ Wall( fT, vInf, vSS, 1472, -2432, 1536, -2432, 64, fLt-kC, vSH, TEX_STARTAN3, r);
767
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_TLITE6_4) , r);
768
+ }
769
+
770
+ void Sector27( inout float fT, inout vec4 vInf, Ray r )
771
+ {
772
+ vec4 vSS;
773
+ const float fLt=0.878;
774
+ const vec2 vSH=vec2(-16.0, 200.0);
775
+
776
+ BeginSector( vSS, vSH ,r);
777
+ Wall( fT, vInf, vSS, 1216, -3392, 1216, -3360, 32, fLt+kC, vSH, TEX_BROWN1,r);
778
+ Wall( fT, vInf, vSS, 1216, -3360, 1184, -3360, 32, fLt-kC, vSH, TEX_BROWN1,r);
779
+ Wall( fT, vInf, vSS, 1184, -3104, 1216, -3104, 32, fLt-kC, vSH, TEX_BROWN1,r);
780
+ Wall( fT, vInf, vSS, 1216, -3104, 1216, -3072, 32, fLt+kC, vSH, TEX_BROWN1,r);
781
+ Open( fT, vInf, vSS, 1344, -3264, 1344, -3360, 96, fLt+kC, vSH, 8, 192, TEX_STARTAN3, TEX_STARTAN3 ,r);
782
+ Wall( fT, vInf, vSS, 1344, -3200, 1344, -3264, 64, fLt+kC, vSH, TEX_STARTAN3,r);
783
+ Open( fT, vInf, vSS, 1344, -3104, 1344, -3200, 96, fLt+kC, vSH, 8, 192, TEX_STARTAN3, TEX_STARTAN3 ,r);
784
+ Open( fT, vInf, vSS, 1344, -3360, 1216, -3392, 131, fLt, vSH, 0, 72, TEX_STEP6, TEX_STARTAN3 ,r);
785
+ Open( fT, vInf, vSS, 1216, -3072, 1344, -3104, 131, fLt, vSH, 0, 72, TEX_STEP6, TEX_STARTAN3 ,r);
786
+ Open( fT, vInf, vSS, 928, -3104, 1184, -3104, 256, fLt-kC, vSH, -8, 120, TEX_STEP6, TEX_STARTAN3 ,r);
787
+ Open( fT, vInf, vSS, 1184, -3360, 928, -3360, 256, fLt-kC, vSH, -8, 120, TEX_STEP6, TEX_STARTAN3 ,r);
788
+ Open( fT, vInf, vSS, 928, -3360, 928, -3104, 256, fLt+kC, vSH, -8, 120, TEX_STEP6, TEX_STARTAN3 ,r);
789
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLAT14, TEX_CEIL3_5) ,r);
790
+ }
791
+
792
+ void Sector28( inout float fT, inout vec4 vInf, Ray r )
793
+ {
794
+ vec4 vSS;
795
+ const float fLt=0.753;
796
+ const vec2 vSH=vec2(-8.0, 120.0);
797
+
798
+ BeginSector( vSS, vSH , r);
799
+ Wall( fT, vInf, vSS, 928, -3392, 928, -3360, 32, fLt+kC, vSH, TEX_BROWN1, r);
800
+ Wall( fT, vInf, vSS, 928, -3360, 896, -3360, 32, fLt-kC, vSH, TEX_BROWN1, r);
801
+ Wall( fT, vInf, vSS, 1184, -3360, 1184, -3392, 32, fLt+kC, vSH, TEX_BROWN1, r);
802
+ Wall( fT, vInf, vSS, 896, -3104, 928, -3104, 32, fLt-kC, vSH, TEX_BROWN1, r);
803
+ Wall( fT, vInf, vSS, 928, -3104, 928, -3072, 32, fLt+kC, vSH, TEX_BROWN1, r);
804
+ Wall( fT, vInf, vSS, 1184, -3072, 1184, -3104, 32, fLt+kC, vSH, TEX_BROWN1, r);
805
+ Open( fT, vInf, vSS, 1184, -3392, 928, -3392, 256, fLt-kC, vSH, 0, 72, TEX_STEP6, TEX_COMPUTE2 , r);
806
+ Null( vSS, 928, -3104, 1184, -3104 , r);
807
+ Null( vSS, 1184, -3360, 928, -3360 , r);
808
+ Null( vSS, 928, -3360, 928, -3104 , r);
809
+ Open( fT, vInf, vSS, 896, -3360, 896, -3104, 256, fLt+kC, vSH, 0, 72, TEX_STEP6, TEX_COMPUTE2 , r);
810
+ Open( fT, vInf, vSS, 928, -3072, 1184, -3072, 256, fLt-kC, vSH, 0, 72, TEX_STEP6, TEX_COMPUTE2 , r);
811
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLAT14, TEX_CEIL3_5) , r);
812
+ }
813
+
814
+ void Sector29( inout float fT, inout vec4 vInf, Ray r )
815
+ {
816
+ vec4 vSS;
817
+ const float fLt=0.565;
818
+ const vec2 vSH=vec2(0.0, 72.0);
819
+
820
+ BeginSector( vSS, vSH ,r);
821
+ Wall( fT, vInf, vSS, 1152, -3648, 1088, -3648, 64, fLt-kC, vSH, TEX_STARTAN3,r);
822
+ Wall( fT, vInf, vSS, 1024, -3648, 960, -3648, 64, fLt-kC, vSH, TEX_STARTAN3,r);
823
+ Wall( fT, vInf, vSS, 1280, -3552, 1152, -3648, 160, fLt, vSH, TEX_STARTAN3,r);
824
+ Wall( fT, vInf, vSS, 960, -3648, 832, -3552, 160, fLt, vSH, TEX_STARTAN3,r);
825
+ Wall( fT, vInf, vSS, 1344, -3552, 1280, -3552, 64, fLt-kC, vSH, TEX_STARTAN3,r);
826
+ Wall( fT, vInf, vSS, 832, -3552, 704, -3552, 128, fLt-kC, vSH, TEX_STARTAN3,r);
827
+ Wall( fT, vInf, vSS, 896, -3392, 928, -3392, 32, fLt-kC, vSH, TEX_BROWN1,r);
828
+ Wall( fT, vInf, vSS, 896, -3360, 896, -3392, 32, fLt+kC, vSH, TEX_BROWN1,r);
829
+ Wall( fT, vInf, vSS, 1184, -3392, 1216, -3392, 32, fLt-kC, vSH, TEX_BROWN1,r);
830
+ Wall( fT, vInf, vSS, 896, -3072, 896, -3104, 32, fLt+kC, vSH, TEX_BROWN1,r);
831
+ Wall( fT, vInf, vSS, 928, -3072, 896, -3072, 32, fLt-kC, vSH, TEX_BROWN1,r);
832
+ Wall( fT, vInf, vSS, 1216, -3072, 1184, -3072, 32, fLt-kC, vSH, TEX_BROWN1,r);
833
+ Wall( fT, vInf, vSS, 1344, -2880, 1344, -3104, 224, fLt+kC, vSH, TEX_STARTAN3,r);
834
+ Null( vSS, 1184, -3392, 928, -3392 ,r);
835
+ Null( vSS, 1344, -3360, 1216, -3392 ,r);
836
+ Null( vSS, 1216, -3072, 1344, -3104 ,r);
837
+ Wall( fT, vInf, vSS, 704, -2944, 832, -2944, 128, fLt-kC, vSH, TEX_STARTAN3,r);
838
+ Wall( fT, vInf, vSS, 832, -2944, 968, -2880, 150, fLt, vSH, TEX_STARTAN3,r);
839
+ Wall( fT, vInf, vSS, 968, -2880, 1216, -2880, 248, fLt-kC, vSH, TEX_STARTAN3,r);
840
+ Null( vSS, 1088, -3648, 1024, -3648 ,r);
841
+ Null( vSS, 896, -3360, 896, -3104 ,r);
842
+ Null( vSS, 928, -3072, 1184, -3072 ,r);
843
+ #ifdef CLOSE_START_SECTOR
844
+ Wall( fT, vInf, vSS, 704, -3552, 704, -2944, 3552-2944, fLt+kC, vSH, TEX_STARTAN3,r);
845
+ #else
846
+ Wall( fT, vInf, vSS, 704, -3552, 704, -3360, 192, fLt+kC, vSH, TEX_STARTAN3,r);
847
+ Wall( fT, vInf, vSS, 704, -3104, 704, -2944, 160, fLt+kC, vSH, TEX_STARTAN3,r);
848
+ Null( vSS, 704, -3104, 704, -3360,r );
849
+ #endif
850
+ Null( vSS, 1344, -2880, 1216, -2880,r );
851
+ Wall( fT, vInf, vSS, 1344, -3360, 1344, -3392, 32, fLt+kC, vSH, TEX_STARTAN3,r);
852
+
853
+ // Merge walls from Ultimate Doom secret
854
+ Wall( fT, vInf, vSS, 1344, -3392, 1344, -3552, 3552 - 3392, fLt+kC, vSH, TEX_STARTAN3,r);
855
+ //Wall( fT, vInf, vSS, 1344, -3520, 1344, -3552, 32, fLt+kC, vSH, TEX_STARTAN3);
856
+ //Wall( fT, vInf, vSS, 1344, -3392, 1344, -3520, 128, fLt+kC, vSH, TEX_STARTAN3);
857
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_CEIL3_5),r );
858
+ }
859
+
860
+ void Sector30( inout float fT, inout vec4 vInf, Ray r )
861
+ {
862
+ vec4 vSS;
863
+ float fLt=(hash(floor(iTime * 10.0)) > 0.3) ? 0.565 : 1.0;
864
+ const vec2 vSH=vec2(0.0, 72.0);
865
+
866
+ BeginSector( vSS, vSH ,r);
867
+ Wall( fT, vInf, vSS, 1088, -3680, 1024, -3680, 64, fLt-kC, vSH, TEX_DOOR3,r);
868
+ Wall( fT, vInf, vSS, 1024, -3680, 1024, -3648, 32, fLt+kC, vSH, TEX_LITE3,r);
869
+ Wall( fT, vInf, vSS, 1088, -3648, 1088, -3680, 32, fLt+kC, vSH, TEX_LITE3,r);
870
+ Null( vSS, 1088, -3648, 1024, -3648 ,r);
871
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_CEIL3_5) ,r);
872
+ }
873
+
874
+ void Sector31( inout float fT, inout vec4 vInf, Ray r )
875
+ {
876
+ vec4 vSS;
877
+ const float fLt=0.502;
878
+ const vec2 vSH=vec2(-8.0, 120.0);
879
+
880
+ BeginSector( vSS, vSH , r);
881
+ Open( fT, vInf, vSS, 704, -3104, 704, -3360, 256, fLt+kC, vSH, 0, 72, TEX_STEP6, TEX_STARTAN3 , r);
882
+ Wall( fT, vInf, vSS, 512, -3328, 512, -3304, 24, fLt+kC, vSH, TEX_STARTAN3, r);
883
+ Wall( fT, vInf, vSS, 512, -3160, 512, -3136, 24, fLt+kC, vSH, TEX_STARTAN3, r);
884
+ Wall( fT, vInf, vSS, 512, -3136, 680, -3104, 171, fLt, vSH, TEX_STARTAN3, r);
885
+ Wall( fT, vInf, vSS, 680, -3104, 704, -3104, 24, fLt-kC, vSH, TEX_SUPPORT2, r);
886
+ Wall( fT, vInf, vSS, 704, -3360, 680, -3360, 24, fLt-kC, vSH, TEX_SUPPORT2, r);
887
+ Wall( fT, vInf, vSS, 680, -3360, 512, -3328, 171, fLt, vSH, TEX_STARTAN3, r);
888
+ Null( vSS, 496, -3160, 496, -3304 , r);
889
+ Wall( fT, vInf, vSS, 512, -3304, 496, -3304, 16, fLt-kC, vSH, TEX_DOORTRAK, r);
890
+ Wall( fT, vInf, vSS, 496, -3160, 512, -3160, 16, fLt-kC, vSH, TEX_DOORTRAK, r);
891
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_CEIL3_5) , r);
892
+ }
893
+
894
+ void Sector32( inout float fT, inout vec4 vInf, Ray r )
895
+ {
896
+ vec4 vSS;
897
+ const float fLt=0.502;
898
+ const vec2 vSH=vec2(-8.0, 224.0);
899
+
900
+ BeginSector( vSS, vSH , r);
901
+ Upper( fT, vInf, vSS, 496, -3160, 496, -3304, 144, fLt+kC, vSH, 120, TEX_STARG3 , r);
902
+ Wall( fT, vInf, vSS, 496, -3304, 496, -3328, 24, fLt+kC, vSH, TEX_STARG3, r);
903
+ Wall( fT, vInf, vSS, 496, -3328, 448, -3456, 136, fLt, vSH, TEX_STARG3, r);
904
+ Wall( fT, vInf, vSS, 448, -3456, 128, -3456, 320, fLt-kC, vSH, TEX_STARG3, r);
905
+ Wall( fT, vInf, vSS, 128, -3008, 448, -3008, 320, fLt-kC, vSH, TEX_STARG3, r);
906
+ Wall( fT, vInf, vSS, 496, -3136, 496, -3160, 24, fLt+kC, vSH, TEX_STARG3, r);
907
+ Wall( fT, vInf, vSS, 448, -3008, 496, -3136, 136, fLt, vSH, TEX_STARG3, r);
908
+ Lower( fT, vInf, vSS, 128, -3264, 160, -3264, 32, fLt-kC, vSH, 88, TEX_SLADWALL , r);
909
+ Lower( fT, vInf, vSS, 160, -3264, 192, -3264, 32, fLt-kC, vSH, 72, TEX_SLADWALL , r);
910
+ Lower( fT, vInf, vSS, 192, -3264, 224, -3264, 32, fLt-kC, vSH, 56, TEX_SLADWALL , r);
911
+ Lower( fT, vInf, vSS, 224, -3264, 256, -3264, 32, fLt-kC, vSH, 40, TEX_SLADWALL , r);
912
+ Lower( fT, vInf, vSS, 256, -3264, 288, -3264, 32, fLt-kC, vSH, 24, TEX_SLADWALL , r);
913
+ Lower( fT, vInf, vSS, 288, -3264, 320, -3264, 32, fLt-kC, vSH, 8, TEX_SLADWALL , r);
914
+ Lower( fT, vInf, vSS, 320, -3264, 320, -3200, 64, fLt+kC, vSH, 8, TEX_STEP6 , r);
915
+ Lower( fT, vInf, vSS, 320, -3200, 288, -3200, 32, fLt-kC, vSH, 8, TEX_SLADWALL , r);
916
+ Lower( fT, vInf, vSS, 288, -3200, 256, -3200, 32, fLt-kC, vSH, 24, TEX_SLADWALL , r);
917
+ Lower( fT, vInf, vSS, 256, -3200, 224, -3200, 32, fLt-kC, vSH, 40, TEX_SLADWALL , r);
918
+ Lower( fT, vInf, vSS, 224, -3200, 192, -3200, 32, fLt-kC, vSH, 56, TEX_SLADWALL , r);
919
+ Lower( fT, vInf, vSS, 192, -3200, 160, -3200, 32, fLt-kC, vSH, 72, TEX_SLADWALL , r);
920
+ Lower( fT, vInf, vSS, 160, -3200, 128, -3200, 32, fLt-kC, vSH, 88, TEX_SLADWALL , r);
921
+ Open( fT, vInf, vSS, 128, -3200, 64, -3072, 143, fLt, vSH, 104, 192, TEX_STARG3, TEX_STARG3 , r);
922
+ Wall( fT, vInf, vSS, 64, -3072, 128, -3008, 90, fLt, vSH, TEX_STARG3, r);
923
+ Wall( fT, vInf, vSS, 128, -3456, 64, -3392, 90, fLt, vSH, TEX_STARG3, r);
924
+ Open( fT, vInf, vSS, 64, -3392, 128, -3264, 143, fLt, vSH, 104, 192, TEX_STARG3, TEX_STARG3 , r);
925
+ Open( fT, vInf, vSS, 256, -3136, 320, -3136, 64, fLt-kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
926
+ Open( fT, vInf, vSS, 320, -3136, 320, -3072, 64, fLt+kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
927
+ Open( fT, vInf, vSS, 320, -3072, 256, -3072, 64, fLt-kC, vSH, 40, 184, TEX_SW1COMP, TEX_TEKWALL4 , r);
928
+ Open( fT, vInf, vSS, 256, -3072, 256, -3136, 64, fLt+kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
929
+ Open( fT, vInf, vSS, 256, -3392, 320, -3392, 64, fLt-kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
930
+ Open( fT, vInf, vSS, 320, -3392, 320, -3328, 64, fLt+kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
931
+ Open( fT, vInf, vSS, 320, -3328, 256, -3328, 64, fLt-kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
932
+ Open( fT, vInf, vSS, 256, -3328, 256, -3392, 64, fLt+kC, vSH, 40, 184, TEX_TEKWALL4, TEX_TEKWALL4 , r);
933
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR4_8, TEX_FLOOR7_2) , r);
934
+ }
935
+
936
+ void Sector35( inout float fT, inout vec4 vInf, Ray r )
937
+ {
938
+ vec4 vSS;
939
+ const float fLt=1.000;
940
+ const vec2 vSH=vec2(40.0, 184.0);
941
+
942
+ BeginSector( vSS, vSH, r );
943
+ Null( vSS, 256, -3392, 320, -3392, r );
944
+ Null( vSS, 320, -3392, 320, -3328, r );
945
+ Null( vSS, 320, -3328, 256, -3328, r );
946
+ Null( vSS, 256, -3328, 256, -3392, r );
947
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_STEP2, TEX_TLITE6_1), r );
948
+ }
949
+
950
+ void Sector36( inout float fT, inout vec4 vInf, Ray r )
951
+ {
952
+ vec4 vSS;
953
+ const float fLt=1.000;
954
+ const vec2 vSH=vec2(40.0, 184.0);
955
+
956
+ BeginSector( vSS, vSH, r );
957
+ Null( vSS, 256, -3136, 320, -3136, r );
958
+ Null( vSS, 320, -3136, 320, -3072, r );
959
+ Null( vSS, 320, -3072, 256, -3072, r );
960
+ Null( vSS, 256, -3072, 256, -3136, r );
961
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_STEP2, TEX_TLITE6_1), r );
962
+ }
963
+
964
+ void Sector63( inout float fT, inout vec4 vInf, Ray r )
965
+ {
966
+ vec4 vSS;
967
+ const float fLt=1.000;
968
+ const vec2 vSH=vec2(-56.0, 24.0);
969
+
970
+ BeginSector( vSS, vSH, r );
971
+ Wall( fT, vInf, vSS, 2736, -3648, 2488, -3744, 265, fLt, vSH, TEX_BROWN144, r);
972
+ Wall( fT, vInf, vSS, 2488, -3744, 2240, -3776, 250, fLt, vSH, TEX_BROWN144, r);
973
+ Null( vSS, 2736, -3648, 2240, -3648, r );
974
+ Null( vSS, 2240, -3776, 2240, -3648, r );
975
+ EndSector( fT, vInf, vSS, fLt, vec2(TEX_FLOOR7_1, TEX_F_SKY1), r );
976
+ }
977
+
978
+ void MapIntersect( out float fClosestT, out vec4 vHitInfo, Ray r )
979
+ {
980
+ vHitInfo = vec4(0.0);
981
+ fClosestT = 10000.0;
982
+
983
+ #ifdef ENABLE_NUKAGE_SECTORS
984
+ Sector0( fClosestT, vHitInfo, r );
985
+ Sector1( fClosestT, vHitInfo, r );
986
+ #endif
987
+ #ifdef ENABLE_START_SECTORS
988
+ Sector3( fClosestT, vHitInfo, r );
989
+ Sector5( fClosestT, vHitInfo, r );
990
+ #endif
991
+ #ifdef ENABLE_EXTRA_NUKAGE_SECTORS
992
+ Sector11( fClosestT, vHitInfo, r );
993
+ Sector12( fClosestT, vHitInfo, r );
994
+ #endif
995
+ #ifdef ENABLE_START_SECTORS
996
+ Sector24( fClosestT, vHitInfo, r );
997
+ #endif
998
+ #ifdef ENABLE_MISC_SECTORS
999
+ Sector25( fClosestT, vHitInfo, r );
1000
+ #endif
1001
+ #ifdef ENABLE_START_SECTORS
1002
+ Sector27( fClosestT, vHitInfo, r );
1003
+ Sector28( fClosestT, vHitInfo, r );
1004
+ Sector29( fClosestT, vHitInfo, r );
1005
+ Sector30( fClosestT, vHitInfo, r );
1006
+ #endif
1007
+ #ifdef ENABLE_SECTOR_31
1008
+ Sector31( fClosestT, vHitInfo, r );
1009
+ #endif
1010
+ #ifdef ENABLE_MISC_SECTORS
1011
+ Sector32( fClosestT, vHitInfo, r );
1012
+ Sector35( fClosestT, vHitInfo, r );
1013
+ Sector36( fClosestT, vHitInfo, r );
1014
+ #endif
1015
+ #ifdef ENABLE_EXTRA_NUKAGE_SECTORS
1016
+ Sector63( fClosestT, vHitInfo, r );
1017
+ #endif
1018
+ }
1019
+
1020
+
1021
+
1022
+ // ----------------- 8< -------------------------- 8< -------------------------- 8< --------------
1023
+ // End of generated code
1024
+
1025
+ //////////////////////////////////////////////////////////////
1026
+ // Texture Helpers
1027
+ //////////////////////////////////////////////////////////////
1028
+
1029
+ float hash(float p)
1030
+ {
1031
+ vec2 p2 = fract(vec2(p * 5.3983, p * 5.4427));
1032
+ p2 += dot(p2.yx, p2.xy + vec2(21.5351, 14.3137));
1033
+ return fract(p2.x * p2.y * 95.4337);
1034
+ }
1035
+
1036
+ float hash2D(vec2 p)
1037
+ {
1038
+ return hash( dot( p, vec2(1.0, 41.0) ) );
1039
+ }
1040
+
1041
+ float noise1D( float p )
1042
+ {
1043
+ float fl = floor(p);
1044
+
1045
+ float h0 = hash( fl );
1046
+ float h1 = hash( fl + 1.0 );
1047
+
1048
+ float fr = p - fl;
1049
+ float fr2 = fr * fr;
1050
+ float fr3 = fr2 * fr;
1051
+
1052
+ float t1 = 3.0 * fr2 - 2.0 * fr3;
1053
+ float t0 = 1.0 - t1;
1054
+
1055
+ return h0 * t0
1056
+ + h1 * t1;
1057
+ }
1058
+
1059
+ float noise2D( vec2 p, float r )
1060
+ {
1061
+ vec2 fl = floor(p);
1062
+
1063
+ float h00 = hash2D( mod(fl + vec2(0.0, 0.0), r) );
1064
+ float h10 = hash2D( mod(fl + vec2(1.0, 0.0), r) );
1065
+ float h01 = hash2D( mod(fl + vec2(0.0, 1.0), r) );
1066
+ float h11 = hash2D( mod(fl + vec2(1.0, 1.0), r) );
1067
+
1068
+ vec2 fr = p - fl;
1069
+
1070
+ vec2 fr2 = fr * fr;
1071
+ vec2 fr3 = fr2 * fr;
1072
+
1073
+ vec2 t1 = 3.0 * fr2 - 2.0 * fr3;
1074
+ vec2 t0 = 1.0 - t1;
1075
+
1076
+ return h00 * t0.x * t0.y
1077
+ + h10 * t1.x * t0.y
1078
+ + h01 * t0.x * t1.y
1079
+ + h11 * t1.x * t1.y;
1080
+ }
1081
+
1082
+ float fbm( vec2 p, float per )
1083
+ {
1084
+ float val = 0.0;
1085
+ float tot = 0.0;
1086
+ float mag = 0.5;
1087
+
1088
+ p += 0.5;
1089
+ p = p * (1.0 / 8.0);
1090
+ val += noise2D(p, 4.0) * mag; tot+=mag; p=p*2.0 + 1.234; mag*=per;
1091
+ val += noise2D(p, 8.0) * mag; tot+=mag; p=p*2.0 + 2.456; mag*=per;
1092
+ val += noise2D(p, 16.0) * mag; tot+=mag; p=p*2.0 + 3.678; mag*=per;
1093
+ val += noise2D(p, 32.0) * mag; tot+=mag;
1094
+
1095
+ return val * (1.0 / tot);
1096
+ }
1097
+
1098
+ float Indent(vec2 vTexCoord, vec2 vHigh, vec2 vLow, float fHighIntensity, float fLowIntensity)
1099
+ {
1100
+ vec2 vMin = min(vLow, vHigh);
1101
+ vec2 vMax = max(vLow, vHigh);
1102
+ if((vTexCoord.x < vMin.x) || (vTexCoord.x > vMax.x) || (vTexCoord.y < vMin.y) || (vTexCoord.y > vMax.y))
1103
+ return 1.0;
1104
+
1105
+ if((vTexCoord.x == vHigh.x) || (vTexCoord.y == vHigh.y))
1106
+ {
1107
+ return fHighIntensity;
1108
+ }
1109
+
1110
+ if((vTexCoord.x == vLow.x) || (vTexCoord.y == vLow.y))
1111
+ {
1112
+ return fLowIntensity;
1113
+ }
1114
+
1115
+ return 1.0;
1116
+ }
1117
+
1118
+ vec4 SmoothBump(const in vec2 vTexCoord, const in vec2 vMin, const in vec2 vMax, const in vec2 vLightDir, const in float fSize)
1119
+ {
1120
+ vec2 vNearest = min( max(vTexCoord, vMin), vMax );
1121
+ vec2 vDelta = vNearest - vTexCoord;
1122
+ float fDeltaLen = length(vDelta);
1123
+ float fDist = (fDeltaLen - fSize) / fSize;
1124
+ vec2 vDir = vDelta;
1125
+ if(fDeltaLen > 0.0) vDir = vDir / fDeltaLen;
1126
+ float fShade = dot(vDir, vLightDir);
1127
+ //return clamp(1.0 - (fDist / fSize), 0.0, 1.0) * fShade;
1128
+ fShade *= clamp(1.0 - abs((fDist)), 0.0, 1.0);
1129
+ return vec4( fShade, fDist, (vTexCoord - vMin + fSize) / (vMax - vMin + fSize * 2.0) );
1130
+ }
1131
+
1132
+
1133
+ float wrap( const in float x , const in float r )
1134
+ {
1135
+ return fract( x * (1.0 / r) ) * r;
1136
+ }
1137
+
1138
+ vec4 Hexagon( vec2 vUV )
1139
+ {
1140
+ vec2 vIndex;
1141
+
1142
+ float fRow = floor(vUV.y);
1143
+
1144
+ vec2 vLocalUV = vUV;
1145
+ float fRowEven = wrap(fRow, 2.0);
1146
+ if(fRowEven < 0.5)
1147
+ {
1148
+ vLocalUV.x += 0.5;
1149
+ }
1150
+
1151
+ vIndex = floor(vLocalUV);
1152
+
1153
+ vec2 vTileUV = fract(vLocalUV);
1154
+ {
1155
+ float m = 2.0 / 3.0;
1156
+ float c = 2.0 / 3.0;
1157
+ if((vTileUV.x *m + c) < vTileUV.y)
1158
+ {
1159
+ if(fRowEven < 0.5)
1160
+ {
1161
+ vIndex.x -= 1.0;
1162
+ }
1163
+ fRowEven = 1.0 - fRowEven;
1164
+ vIndex.y += 1.0;
1165
+ }
1166
+ }
1167
+
1168
+ {
1169
+ float m = -2.0 / 3.0;
1170
+ float c = 4.0 / 3.0;
1171
+ if((vTileUV.x *m + c) < vTileUV.y)
1172
+ {
1173
+ if(fRowEven >= 0.5)
1174
+ {
1175
+ vIndex.x += 1.0;
1176
+ }
1177
+ fRowEven = 1.0 - fRowEven;
1178
+ vIndex.y += 1.0;
1179
+ }
1180
+ }
1181
+
1182
+ vec2 vCenter = vIndex - vec2(0.0, -1.0 / 3.0);
1183
+ if(fRowEven > 0.5)
1184
+ {
1185
+ vCenter.x += 0.5;
1186
+ }
1187
+
1188
+ vec2 vDelta = vUV - vCenter;
1189
+
1190
+ //vDelta = abs(vDelta);
1191
+
1192
+ float d1 = vDelta.x;
1193
+ float d2 = dot(vDelta, normalize(vec2(2.0/3.0, 1.0)));
1194
+ float d3 = dot(vDelta, normalize(vec2(-2.0/3.0, 1.0)));
1195
+
1196
+ d2 *= 0.9;
1197
+ d3 *= 0.9;
1198
+
1199
+ float fDist = max( abs(d1), abs(d2) );
1200
+ fDist = max( fDist, abs(d3) );
1201
+
1202
+ float fTest = max(max(-d1, -d2), d3);
1203
+
1204
+ return vec4(vIndex, abs(fDist), fTest);
1205
+ }
1206
+
1207
+
1208
+ //////////////////////////
1209
+ // Textures
1210
+ //////////////////////////
1211
+
1212
+ vec3 TexNukage3( vec2 vTexCoord, float fRandom)
1213
+ {
1214
+ float fBlend = 0.0;
1215
+ fBlend = smoothstep(0.8, 0.0, fRandom);
1216
+ fBlend = min(fBlend, smoothstep(1.0, 0.8, fRandom));
1217
+ fBlend *= 1.5;
1218
+ vec3 col = mix( vec3(11.0, 23.0, 7.0), vec3(46.0, 83, 39.0), fBlend) / 255.0;
1219
+
1220
+ return col;
1221
+ }
1222
+
1223
+ void AddMountain( inout float fShade, const in vec2 vUV, const in float fRandom, const in float fHRandom, const in float fXPos, const in float fWidth, const in float fHeight, const in float fFog)
1224
+ {
1225
+ float fYPos = 1.0 - smoothstep( 0.0, 1.0, abs(fract(fXPos - vUV.x + vUV.y * 0.05 + 0.5) - 0.5) * fWidth );
1226
+ fYPos += fHRandom * 0.05 + fRandom * 0.05;
1227
+ fYPos *= fHeight;
1228
+ float fDist = fYPos - vUV.y;
1229
+ if(fDist > 0.0)
1230
+ {
1231
+ fShade = fRandom * ((1.0 - clamp(sqrt(fDist) * 2.0, 0.0, 1.0)) * 0.3 + 0.1);
1232
+ fShade = mix(fShade, 0.6 + 0.1 * fRandom, fFog);
1233
+ }
1234
+ }
1235
+
1236
+ vec3 TexFSky1(vec2 vTexCoord, float fRandom, float fHRandom)
1237
+ {
1238
+ float fShade = 0.6 + 0.1 * fRandom;
1239
+
1240
+ vec2 vUV = vTexCoord * (1.0 / vec2(256.0, 128.0));
1241
+ vUV.y = 1.0 - vUV.y;
1242
+
1243
+ AddMountain( fShade, vUV, fRandom, fHRandom, 0.25, 1.0, 0.85, 0.5 );
1244
+ AddMountain( fShade, vUV, fRandom, fHRandom, 1.5, 4.0, 0.78, 0.2 );
1245
+ AddMountain( fShade, vUV, fRandom, fHRandom, 1.94, 2.51, 0.8, 0.0 );
1246
+
1247
+
1248
+ return vec3(fShade);
1249
+ }
1250
+
1251
+ vec3 TexFloor7_1( vec2 vTexCoord, float fRandom )
1252
+ {
1253
+ vec3 col = mix( vec3(51.0, 43.0, 19.0), vec3(79.0, 59, 35.0), fRandom * fRandom * 2.5) / 255.0;
1254
+
1255
+ return col;
1256
+ }
1257
+
1258
+ vec3 TexFlat5_5( vec2 vTexCoord, float fRandom )
1259
+ {
1260
+ vec3 col = mix( vec3(63.0, 47.0, 23.0), vec3(147.0, 123.0, 99.0), fRandom) / 255.0;
1261
+
1262
+ col *= mod(vTexCoord.x, 2.0) * 0.15 + 0.85;
1263
+
1264
+ return col;
1265
+ }
1266
+
1267
+ vec3 TexFloor4_8( vec2 vTexCoord, float fRandom )
1268
+ {
1269
+ vec3 col = mix( vec3(30.0, 30.0, 30.0), vec3(150.0, 150.0, 150.0), fRandom * fRandom) / 255.0;
1270
+
1271
+ vec4 vHex = Hexagon( vTexCoord.yx / 32.0 );
1272
+
1273
+ float fShadow = (clamp((0.5 - vHex.z) * 15.0, 0.0, 1.0) * 0.5 + 0.5);
1274
+ float fHighlight = 1.0 + clamp(1.0 - (abs(0.45 - vHex.w)) * 32.0, 0.0, 1.0) * 0.5;
1275
+
1276
+ col = col * (clamp((0.5 - vHex.z) * 2.0, 0.0, 1.0) * 0.25 + 0.75);
1277
+ col = col * fHighlight;
1278
+ col = col * fShadow;
1279
+
1280
+ return col;
1281
+ }
1282
+
1283
+ vec3 TexCeil3_5( vec2 vTexCoord, float fRandom )
1284
+ {
1285
+ vec3 col = vec3(1.0);
1286
+
1287
+ vec2 vTileCoord = vTexCoord;
1288
+ vTileCoord.x -= 17.0;
1289
+ if( (vTileCoord.x >= 0.0) && (vTileCoord.x < 32.0) )
1290
+ vTileCoord.y -= 58.0;
1291
+ else
1292
+ vTileCoord.y -= 11.0;
1293
+ vTileCoord.x = mod(vTileCoord.x, 32.0);
1294
+ vTileCoord.y = mod(vTileCoord.y, 64.0);
1295
+
1296
+ vec2 vBoxClosest = clamp(vTileCoord, vec2(4.0, 4.0), vec2(28.0, 60.0));
1297
+ vec2 vDelta = vTileCoord - vBoxClosest;
1298
+ float fDist2 = dot(vDelta, vDelta);
1299
+
1300
+ const float fLight1 = 59.0 / 255.0;
1301
+ const float fMed1 = 55.0 / 255.0;
1302
+ const float fDark1 = 47.0 / 255.0;
1303
+ const float fDark2 = 39.0 / 255.0;
1304
+
1305
+ float fShade = fMed1;
1306
+ fShade = mix( fShade, fLight1, smoothstep(0.6, 0.45, fRandom) );
1307
+ fShade = mix( fShade, fDark1, smoothstep(0.45, 0.35, fRandom) );
1308
+
1309
+ fShade = mix( fShade, fDark1, step(1.5, fDist2) );
1310
+ fShade = mix( fShade, fDark2, step(13.5, fDist2) );
1311
+
1312
+ col *= fShade;
1313
+
1314
+ if((vTileCoord.x < 12.0) || (vTileCoord.x > 20.0) || (vTileCoord.y < 12.0) || (vTileCoord.y > 52.0))
1315
+ {
1316
+ float fRRow = floor(mod(vTileCoord.y - 3.5, 7.5));
1317
+ float fRColumn = mod(vTileCoord.x - 15.0, 10.0);
1318
+ if((fRRow == 2.0) && (fRColumn == 0.0))
1319
+ {
1320
+ col -= 0.05;
1321
+ }
1322
+ if((fRRow <= 2.0) && (fRColumn <= 2.0))
1323
+ {
1324
+ vec2 vOffset = vec2(fRRow - 1.0, fRColumn - 1.0);
1325
+ float fDist2 = dot(vOffset, vOffset) / 2.0;
1326
+ col += clamp(1.0 - fDist2, 0.0, 1.0) * 0.05;
1327
+ }
1328
+ }
1329
+
1330
+ return col;
1331
+ }
1332
+
1333
+ vec3 TexFlat14( vec2 vTexCoord, float fRandom )
1334
+ {
1335
+ return mix( vec3(0.0, 0.0, 35.0 / 255.0), vec3(0.0, 0.0, 200.0 / 255.0), fRandom * fRandom);
1336
+ }
1337
+
1338
+ vec3 TexDoor3(vec2 vTexCoord, float fRandom, float fHRandom)
1339
+ {
1340
+ float fVNoise = fHRandom + fRandom;
1341
+ float fStreak = clamp(abs(fract(fVNoise) - 0.5) * 3.0, 0.0, 1.0);
1342
+ fStreak = fStreak * fStreak;
1343
+
1344
+ float fShade = 1.0;
1345
+
1346
+ fShade = 1.0 - abs((vTexCoord.y / 72.0) - 0.5) * 2.0;
1347
+ fShade = fShade * fShade;
1348
+ fShade = fShade * 0.2 + 0.3;
1349
+
1350
+ fShade = fShade * (fHRandom * 0.2 + 0.8);
1351
+
1352
+ fShade *= Indent( vTexCoord, vec2(8.0, 8.0), vec2(64.0 - 8.0, 72.0 - 16.0), 0.8, 1.2);
1353
+ fShade *= Indent( vTexCoord, vec2(8.0, 72.0 - 15.0), vec2(64.0 - 8.0, 72.0 - 8.0), 0.8, 1.2);
1354
+
1355
+ fShade *= Indent( vTexCoord, vec2(64.0 - 11.0, 46.0), vec2(46.0, 32.0), 0.8, 1.2);
1356
+ fShade *= Indent( vTexCoord, vec2(64.0 - 11.0, 56.0), vec2(46.0, 52.0), 0.8, 1.2);
1357
+
1358
+ fShade += fRandom * 0.1;
1359
+
1360
+ float fStreakTopAmount = smoothstep( 32.0, 0.0, vTexCoord.y );
1361
+ float fStreakBottomAmount = smoothstep( 72.0 -32.0, 72.0, vTexCoord.y );
1362
+
1363
+ fShade *= 1.0 - fStreak * max(fStreakTopAmount, fStreakBottomAmount) * 0.2;
1364
+
1365
+ if( (vTexCoord.x > 8.0) && (vTexCoord.x < 52.0) )
1366
+ {
1367
+ vec2 vRepeatCoord = mod( vTexCoord, vec2( 8.0, 48.0 ) );
1368
+ vRepeatCoord += vec2(4.0, -12.0);
1369
+ if( vRepeatCoord.x == 4.0 )
1370
+ {
1371
+ if(vRepeatCoord.y == 0.0)
1372
+ {
1373
+ fShade += 0.1;
1374
+ }
1375
+ if(vRepeatCoord.y > 0.0)
1376
+ {
1377
+ fShade *= clamp(vRepeatCoord.y / 16.0, 0.0, 1.0) * 0.3 + 0.7;
1378
+ }
1379
+ }
1380
+ }
1381
+
1382
+ return vec3(fShade);
1383
+ }
1384
+
1385
+ vec3 TexLite3( vec2 vTexCoord )
1386
+ {
1387
+ vec2 vLocalCoord = vTexCoord;
1388
+ vLocalCoord.y = mod(vLocalCoord.y, 8.0 );
1389
+
1390
+ vec2 vClosest = min( max( vLocalCoord, vec2(4.0, 3.5) ), vec2(32.0 - 5.0, 3.5) );
1391
+ vec2 vDelta = vLocalCoord - vClosest;
1392
+ float fDist = max(abs(vDelta.x), abs(vDelta.y)) / 3.9;
1393
+
1394
+ return vec3(1.0 - fDist * 0.65);
1395
+ }
1396
+
1397
+ vec3 TexStartan3( vec2 vTexCoord, float fRandom )
1398
+ {
1399
+ vec3 col = vec3(0.6);
1400
+
1401
+ float fVNoise = noise1D(vTexCoord.x * 0.5) - ((vTexCoord.y) / 128.0) + fRandom;
1402
+ float fStreak = clamp(abs(fract(fVNoise) - 0.5) * 3.0, 0.0, 1.0);
1403
+ fStreak = fStreak * fStreak;
1404
+
1405
+ float fBlend2 = smoothstep( 0.0, 32.0, abs(vTexCoord.x - 64.0) );
1406
+ fBlend2 *= fBlend2;
1407
+ fBlend2 *= fStreak * 0.5 + 0.5;
1408
+ col = mix( col, vec3(119.0, 79.0, 43.0) / 255.0, fBlend2 * 0.5);
1409
+
1410
+ float fBlend = smoothstep( 24.0, 56.0, abs(vTexCoord.x - 64.0) );
1411
+ fBlend *= fBlend;
1412
+ fBlend *= fStreak * 0.7 + 0.3;
1413
+ col = mix( col, vec3(119.0, 79.0, 43.0) * 1.1 / 255.0, fBlend);
1414
+
1415
+ col *= fRandom * fRandom * 0.3 + 0.7;
1416
+
1417
+ vec2 vCoord = vTexCoord;
1418
+ vCoord.x = mod(vCoord.x, 32.0);
1419
+
1420
+ float fStreakHL = fStreak * 0.075 + 0.075;
1421
+
1422
+ float fDistMin = 1.0;
1423
+ float fShade = 0.0;
1424
+
1425
+ vec4 vBump = SmoothBump( vCoord, vec2(6.0, 8.0), vec2(32.0 - 5.0, 9.0), normalize(vec2(0.0, 1.0)), 3.0 );
1426
+ fShade += vBump.x * 0.1;
1427
+ fDistMin = min(fDistMin, vBump.y);
1428
+ fShade += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (1.0 - vBump.w) * fStreakHL : 0.0;
1429
+ vBump = SmoothBump( vCoord, vec2(6.0, 20.0), vec2(32.0 - 6.0, 40.0), normalize(vec2(0.0, 1.0)), 3.0 );
1430
+ fShade += vBump.x * 0.1;
1431
+ fShade += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (1.0 - vBump.w) * fStreakHL : 0.0;
1432
+ fDistMin = min(fDistMin, vBump.y);
1433
+
1434
+ vBump = SmoothBump( vCoord, vec2(6.0, 64.0), vec2(32.0 - 6.0, 65.0), normalize(vec2(0.0, 1.0)), 3.0 );
1435
+ fShade += vBump.x * 0.1;
1436
+ fShade += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (1.0 - vBump.w) * fStreakHL : 0.0;
1437
+ fDistMin = min(fDistMin, vBump.y);
1438
+ vBump = SmoothBump( vCoord, vec2(6.0, 76.0), vec2(32.0 - 6.0, 110.0), normalize(vec2(0.0, 1.0)), 3.0 ) ;
1439
+ fShade += vBump.x * 0.1;
1440
+ fShade += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (1.0 - vBump.w) * fStreakHL : 0.0;
1441
+ fDistMin = min(fDistMin, vBump.y);
1442
+
1443
+ vBump = SmoothBump( vTexCoord, vec2(-16.0, 50.0), vec2(256.0, 52.0), normalize(vec2(0.0, 1.0)), 3.0 );
1444
+ fShade += vBump.x * 0.1;
1445
+ fShade += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (1.0 - vBump.w) * fStreakHL : 0.0;
1446
+ fDistMin = min(fDistMin, vBump.y);
1447
+ vBump = SmoothBump( vTexCoord, vec2(-16.0, 122.0), vec2(256.0, 200.0), normalize(vec2(0.0, 1.0)), 3.0 );
1448
+ fShade += vBump.x * 0.05;
1449
+ fDistMin = min(fDistMin, vBump.y);
1450
+
1451
+ col *= 1.0 + fShade * 3.0;
1452
+
1453
+ col *= clamp((1.0 - fDistMin) * 1.0, 0.0, 1.0) * 0.3 + 0.7;
1454
+
1455
+ return col;
1456
+ }
1457
+
1458
+ vec3 TexBrown1( vec2 vTexCoord, float fRandom, float fHRandom )
1459
+ {
1460
+ vec3 col = mix( vec3(119.0, 95.0, 63.0), vec3(147.0, 123.0, 99.0), fRandom * fRandom) / 255.0;
1461
+
1462
+ if(vTexCoord.x >= 64.0)
1463
+ {
1464
+ col = col * vec3(1.0, 0.848, 0.646);
1465
+
1466
+ col = mix( col, vec3( 0.111, 0.414, 0.3), clamp((fRandom -0.5) * 2.0, 0.0, 1.0)); // green bits
1467
+ }
1468
+
1469
+ float fVNoise = fHRandom + fRandom;
1470
+
1471
+ float fStreak = clamp(abs(fract(fVNoise) - 0.5) * 3.0, 0.0, 1.0);
1472
+ fStreak = fStreak * fStreak;
1473
+
1474
+ vec2 vRepeatCoord = vTexCoord;
1475
+ vRepeatCoord.x = mod(vRepeatCoord.x, 13.0);
1476
+
1477
+ vec4 vBump = SmoothBump( vRepeatCoord, vec2( 5.0, 6.0 ), vec2( 5.0, 12.0), vec2(0.0, 1.0), 1.5);
1478
+ float fMask = clamp(1.0 - vBump.y, 0.0, 1.0);
1479
+
1480
+ float fStreakAmount = 1.0;
1481
+ fStreakAmount *= smoothstep( 0.0, 8.0, vRepeatCoord.y );
1482
+ float fStreakWidth = smoothstep( 64.0, 12.0, vRepeatCoord.y );
1483
+ float fBase1Dist = smoothstep( 24.0, 75.0, vRepeatCoord.y ) * step(vRepeatCoord.y, 75.0);
1484
+ float fBase2Dist = smoothstep( 96.0, 127.0, vRepeatCoord.y );// * step(75.0, vRepeatCoord.y);
1485
+ float fBaseDist = max(fBase1Dist, fBase2Dist);
1486
+ fStreakWidth = max( fStreakWidth, fBaseDist);
1487
+ float fTop2Dist = smoothstep( 127.0, 75.0, vRepeatCoord.y ) * step(75.0, vRepeatCoord.y);
1488
+ fStreakWidth = max(fStreakWidth, fTop2Dist);
1489
+ float fStreakX = abs(vRepeatCoord.x - 5.0) / 8.0;
1490
+ fStreakAmount *= fStreakWidth;
1491
+ fStreakAmount *= smoothstep( fStreakWidth, 0.0, fStreakX);
1492
+ fStreakAmount = max(fStreakAmount, (fBaseDist - 0.75) * 4.0);
1493
+ fStreakAmount *= 1.0 - fMask;
1494
+ col = mix(col, vec3(0.3, 0.2, 0.1), fStreakAmount * (fStreak * 0.5 + 0.5) );
1495
+
1496
+ col += ((vBump.w >= 0.0) && (vBump.w <= 1.0)) ? (vBump.w) * (1.0-vBump.y) * 0.05 : 0.0;
1497
+
1498
+ if((vTexCoord.y == 17.0) || (vTexCoord.y == 73.0)) col *= 0.9;
1499
+ if((vTexCoord.y == 19.0) || (vTexCoord.y == 75.0)) col *= 1.2;
1500
+
1501
+ col *= 1.0 + clamp(vBump.x, -1.0, 0.0) * 0.6;
1502
+
1503
+ return col;
1504
+ }
1505
+
1506
+ vec3 TexDoorstop( vec2 vTexCoord, float fRandom )
1507
+ {
1508
+ float fShade = 1.0 - abs(vTexCoord.x - 3.4) / 4.0;
1509
+
1510
+ fShade = fShade * 0.2 + 0.2;
1511
+
1512
+ float fSin = sin((vTexCoord.y - 16.0) * 3.14150 * 4.0 / 128.0) * 0.5 + 0.5;
1513
+ fShade *= 0.8 + fRandom * 1.2 * fSin;
1514
+
1515
+ return vec3(fShade);
1516
+ }
1517
+
1518
+ void DrawScreen(inout vec3 col, const in vec2 vTexCoord, const in vec2 vPos, const in vec2 vSize, const in vec3 vCol)
1519
+ {
1520
+ vec2 vScreenCoord = vTexCoord - vPos;
1521
+ col *= Indent( vScreenCoord, vSize, vec2(-1.0), 1.2, 0.5);
1522
+
1523
+ if((vScreenCoord.x >= 0.0) && (vScreenCoord.y >= 0.0) && (vScreenCoord.x < vSize.x) && (vScreenCoord.y < vSize.y))
1524
+ {
1525
+ col = vCol;
1526
+ }
1527
+ }
1528
+
1529
+ vec3 TexCompute2( vec2 vTexCoord, float fRandom )
1530
+ {
1531
+ fRandom = 1.0 - fRandom * fRandom;
1532
+ vec3 col = vec3(35.0 / 255.0);
1533
+
1534
+ col *= Indent( vTexCoord, vec2( -8.0, 0.0), vec2(300.0, 10.0), 1.3, 0.5);
1535
+ col *= Indent( vTexCoord, vec2( -8.0, 11.0), vec2(300.0, 27.0), 1.3, 0.5);
1536
+ col *= Indent( vTexCoord, vec2( -8.0, 28.0), vec2(300.0, 43.0), 1.3, 0.5);
1537
+ {
1538
+ vec2 vLocalCoord = vTexCoord;
1539
+ vLocalCoord.x = mod(vLocalCoord.x, 21.0);
1540
+ col *= Indent( vLocalCoord, vec2( 0.0, 44.0), vec2(20.0, 55.0), 1.3, 0.5);
1541
+ }
1542
+
1543
+ if(vTexCoord.y < 40.0)
1544
+ {
1545
+ vec2 vTileSize = vec2(48.0, 14.0);
1546
+ vec2 vIndex = floor(vTexCoord / vTileSize);
1547
+
1548
+ float fIndex = vIndex.x + vIndex.y * 13.0;
1549
+ vec2 vMin = vIndex * vTileSize + vec2(hash(fIndex) * 32.0, 4.0);
1550
+ vec2 vSize = vec2(8.0 + hash(fIndex + 1.0) * 32.0, 4.0);
1551
+
1552
+ vec3 vCol = vec3(0.0);
1553
+ float iIndex = floor(mod(fIndex, 5.0));
1554
+ if( iIndex < 0.5 )
1555
+ {
1556
+ vCol = mix(vec3(0.0, 0.5, 0.0), vec3(0.0, 0.25, 0.0), fRandom);
1557
+ }
1558
+ else if(iIndex < 1.5)
1559
+ {
1560
+ vCol = mix(vec3(1.0, 0.6, 0.02), vec3(0.1), fRandom);
1561
+ }
1562
+ else if(iIndex < 2.5)
1563
+ {
1564
+ vCol = vec3(fRandom * 0.5);
1565
+ }
1566
+ else if(iIndex < 3.5)
1567
+ {
1568
+ vCol = vec3(fRandom * 0.25);
1569
+ }
1570
+ else if(iIndex < 4.5)
1571
+ {
1572
+ vCol = mix(vec3(0.0, 0.0, 0.5), vec3(0.1), fRandom);
1573
+ }
1574
+ DrawScreen(col, vTexCoord, vMin, vSize, vCol);
1575
+ }
1576
+
1577
+ return col;
1578
+ }
1579
+
1580
+ vec3 TexStep6( vec2 vTexCoord, float fRandom, float fHRandom )
1581
+ {
1582
+ vec3 col = mix( vec3(87.0, 67.0, 51.0), vec3(119.0, 95.0, 75.0), fRandom) / 255.0;
1583
+
1584
+ col *= Indent( vTexCoord, vec2(-1.0, 3.0), vec2(32.0, 1.0), 1.3, 0.7);
1585
+ col *= Indent( vTexCoord, vec2(-1.0, 8.0), vec2(32.0, 0.0), 1.3, 0.9);
1586
+
1587
+ float fStreak = clamp((vTexCoord.y / 16.0) * 1.5 - fHRandom, 0.0, 1.0);
1588
+
1589
+ col *= fStreak * 0.3 + 0.7;
1590
+
1591
+ return col;
1592
+ }
1593
+
1594
+ vec3 TexSupport2( vec2 vTexCoord, float fRandom )
1595
+ {
1596
+ vec3 col;
1597
+ float fShade = 0.5;
1598
+
1599
+ float f1 = abs(fract((vTexCoord.y + 32.0) / 70.0) - 0.5) * 2.0;
1600
+ float f2 = abs(fract((vTexCoord.x + 16.0) / 16.0) - 0.5) * 2.0;
1601
+ fShade += f1 * 0.75 + f2 * 0.25;
1602
+ fShade = fShade * fShade;
1603
+
1604
+ fShade = fShade * 0.2 + 0.05;
1605
+ fShade *= 1.0 + fRandom * 0.4;
1606
+
1607
+ vec2 vLocalCoord = vTexCoord;
1608
+ if((vLocalCoord.y < 64.0) || (vLocalCoord.y > 75.0))
1609
+ {
1610
+ if(vLocalCoord.y > 64.0) vLocalCoord.y -= 8.0;
1611
+ vLocalCoord = mod( vLocalCoord, vec2(20.0, 16.0));
1612
+ float fIndent = Indent( vLocalCoord, vec2(8.0, 8.0), vec2(16.0, 15.0), 0.9, 1.1);
1613
+ fShade += fIndent - 1.0;
1614
+ }
1615
+
1616
+ col = vec3(fShade);
1617
+
1618
+ return col;
1619
+ }
1620
+
1621
+ vec3 TexDoorTrak( vec2 vTexCoord, float fRandom )
1622
+ {
1623
+ float fShade = fRandom * 0.5;
1624
+ fShade *= mod(vTexCoord.x, 2.0) * 0.6 + 0.4;
1625
+ return vec3(fShade);
1626
+ }
1627
+
1628
+ vec3 TexBrown144( vec2 vTexCoord, float fRandom, float fHRandom )
1629
+ {
1630
+ vec3 col = mix( vec3(39.0, 39.0, 39.0), vec3(51.0, 43.0, 19.0), fRandom) / 255.0;
1631
+
1632
+ float fBlend = fHRandom - 0.1;
1633
+ fBlend = clamp(fBlend, 0.0, 1.0);
1634
+ col = mix( col, col * 2.0 * vec3(0.893, 0.725, 0.161), fBlend);
1635
+ return col;
1636
+ }
1637
+
1638
+ #ifdef ENABLE_SPRITES
1639
+
1640
+ vec3 TexBar1A( vec2 vTexCoord, float fRandom, float fHRandom )
1641
+ {
1642
+ vec3 col = vec3(123.0, 127.0, 99.0) / 255.0;
1643
+
1644
+ float fBrownStreakBlend = smoothstep( 2.0, 1.0, abs(vTexCoord.x - 3.5));
1645
+ col = mix(col, vec3(0.724, 0.736, 0.438), fBrownStreakBlend);
1646
+
1647
+ if( (vTexCoord.y == 1.0) && (vTexCoord.x > 3.0) && (vTexCoord.x < 18.0) )
1648
+ {
1649
+ col = col * clamp(((vTexCoord.x / 18.0)), 0.0, 1.0);
1650
+ }
1651
+ else
1652
+ {
1653
+ col = col * clamp((1.0 - (vTexCoord.x / 18.0)), 0.0, 1.0);
1654
+ }
1655
+
1656
+ float fNukageBlend = 0.0;
1657
+ if( (vTexCoord.y == 1.0) && (vTexCoord.x > 8.0) && (vTexCoord.x < 14.0) )
1658
+ {
1659
+ fNukageBlend = 1.0;
1660
+ }
1661
+ if( (vTexCoord.y == 2.0) && (vTexCoord.x > 2.0) && (vTexCoord.x < 20.0) )
1662
+ {
1663
+ fNukageBlend = 1.0;
1664
+ }
1665
+ col = mix(col, vec3(0.172, 0.560, 0.144) * fRandom, fNukageBlend);
1666
+
1667
+
1668
+ if(vTexCoord.x < 1.0)
1669
+ {
1670
+ col += 0.1;
1671
+ }
1672
+
1673
+ float fBlend = clamp(((vTexCoord.x - 20.0) / 3.0), 0.0, 1.0);
1674
+ col += fBlend * 0.2;
1675
+
1676
+ float fBumpY = 8.0;
1677
+ if(vTexCoord.y > 14.0) fBumpY += 9.0;
1678
+ if(vTexCoord.y > 23.0) fBumpY += 8.0;
1679
+
1680
+ vec4 vBump = SmoothBump( vTexCoord, vec2(2.0, fBumpY), vec2(23.0 - 2.0, fBumpY), normalize(vec2(-0.2, 1.0)), 1.25 );
1681
+ col += vBump.x * 0.2;
1682
+
1683
+ // rim highlights
1684
+ {
1685
+ vec2 vOffset = (vTexCoord - vec2(17.0, 0.0)) / vec2(8.0, 2.0);
1686
+ col += clamp(1.0 - dot(vOffset, vOffset), 0.0, 1.0) * 0.2;
1687
+ }
1688
+ {
1689
+ vec2 vOffset = (vTexCoord - vec2(20.0, 1.0)) / vec2(4.0, 1.0);
1690
+ col += clamp(1.0 - dot(vOffset, vOffset), 0.0, 1.0) * 0.2;
1691
+ }
1692
+ {
1693
+ vec2 vOffset = (vTexCoord - vec2(3.0, 2.0)) / vec2(4.0, 2.0);
1694
+ col += clamp(1.0 - dot(vOffset, vOffset), 0.0, 1.0) * 0.2;
1695
+ }
1696
+
1697
+ col *= 0.5 + fRandom * 0.5;
1698
+
1699
+ return col;
1700
+ }
1701
+
1702
+ vec3 TexPlayW( vec2 vTexCoord, float fRandom, float fHRandom )
1703
+ {
1704
+ vec3 col = mix(vec3(190.0, 10.0, 10.0), vec3(50, 16.0, 16.0 ), fRandom * vTexCoord.y/18.0) / 255.0;
1705
+ return col;
1706
+ }
1707
+
1708
+ #endif
1709
+
1710
+ vec3 SampleTexture( const in float fTexture, const in vec2 _vUV )
1711
+ {
1712
+ vec3 col = vec3(1.0, 0.0, 1.0);
1713
+ vec2 vUV = _vUV;
1714
+
1715
+ vec2 vSize = vec2(64.0);
1716
+ float fPersistence = 0.8;
1717
+ float fNoise2Freq = 0.5;
1718
+
1719
+ if(fTexture == TEX_NUKAGE3)
1720
+ {
1721
+ float fTest = fract(floor(iTime * 6.0) * (1.0 / 3.0));
1722
+ if( fTest < 0.3 )
1723
+ {
1724
+ vUV += 0.3 * vSize;
1725
+ }
1726
+ else if(fTest < 0.6)
1727
+ {
1728
+ vUV = vUV.yx - 0.3;
1729
+ }
1730
+ else
1731
+ {
1732
+ vUV = vUV + 0.45;
1733
+ }
1734
+ }
1735
+
1736
+ if(fTexture == TEX_NUKAGE3) { fPersistence = 1.0; }
1737
+ else if(fTexture == TEX_F_SKY1) { vSize = vec2(256.0, 128.0); fNoise2Freq = 0.3; }
1738
+ else if(fTexture == TEX_FLOOR7_1) { vSize = vec2(64.0, 32.0); fPersistence = 1.0; }
1739
+ else if(fTexture == TEX_FLAT5_5) { fPersistence = 3.0; }
1740
+ else if(fTexture == TEX_FLOOR4_8) { fPersistence = 0.3; }
1741
+ else if(fTexture == TEX_CEIL3_5) { fPersistence = 0.9; }
1742
+ else if(fTexture == TEX_FLAT14) { fPersistence = 2.0; }
1743
+ else if(fTexture == TEX_DOOR3) { vSize = vec2(64.0, 72.0); }
1744
+ else if(fTexture == TEX_LITE3) { vSize = vec2(32.0, 128.0); }
1745
+ else if(fTexture == TEX_STARTAN3) { vSize = vec2(128.0); fPersistence = 1.0; }
1746
+ else if(fTexture == TEX_BROWN1) { vSize = vec2(128.0); fPersistence = 0.7; }
1747
+ else if(fTexture == TEX_DOORSTOP) { vSize = vec2(8.0, 128.0); fPersistence = 0.7; }
1748
+ else if(fTexture == TEX_COMPUTE2) { vSize = vec2(256.0, 56.0); fPersistence = 1.5; }
1749
+ else if(fTexture == TEX_STEP6) { vSize = vec2(32.0, 16.0); fPersistence = 0.9; }
1750
+ else if(fTexture == TEX_SUPPORT2) { vSize = vec2(64.0, 128.0); }
1751
+ else if(fTexture == TEX_DOORTRAK) { vSize = vec2(8.0, 128.0); }
1752
+ #ifdef ENABLE_SPRITES
1753
+ else if(fTexture == TEX_BAR1A) { vSize = vec2(23.0, 32.0); }
1754
+ else if(fTexture == TEX_PLAYW) { vSize = vec2(57.0, 22.0); fPersistence = 1.0; }
1755
+ #endif
1756
+
1757
+ #ifdef PREVIEW
1758
+ if(fTexture == TEX_DOOR3) { vSize = vec2(128.0, 128.0); }
1759
+ else if(fTexture == TEX_COMPUTE2) { vSize = vec2(256.0, 64.0); }
1760
+ #ifdef ENABLE_SPRITES
1761
+ else if(fTexture == TEX_BAR1A) { vSize = vec2(32.0, 32.0); }
1762
+ else if(fTexture == TEX_PLAYW) { vSize = vec2(64.0, 32.0); }
1763
+ #endif
1764
+ #endif
1765
+
1766
+
1767
+ #ifdef PREVIEW
1768
+ vec2 vTexCoord = floor(fract(vUV) * vSize);
1769
+ #else
1770
+ vec2 vTexCoord = fract(vUV / vSize) * vSize;
1771
+ #ifdef PIXELATE_TEXTURES
1772
+ vTexCoord = floor(vTexCoord);
1773
+ #endif
1774
+ vTexCoord.y = vSize.y - vTexCoord.y - 1.0;
1775
+ #endif
1776
+ float fRandom = fbm( vTexCoord, fPersistence );
1777
+ float fHRandom = noise1D(vTexCoord.x * fNoise2Freq) - ((vTexCoord.y) / vSize.y);
1778
+
1779
+ if(fTexture == TEX_NUKAGE3) col = TexNukage3( vTexCoord, fRandom );
1780
+ else if(fTexture == TEX_F_SKY1) col = TexFSky1( vTexCoord, fRandom, fHRandom );
1781
+ else if(fTexture == TEX_FLOOR7_1) col = TexFloor7_1( vTexCoord, fRandom );
1782
+ else if(fTexture == TEX_FLAT5_5) col = TexFlat5_5( vTexCoord, fRandom );
1783
+ else if(fTexture == TEX_FLOOR4_8) col = TexFloor4_8( vTexCoord, fRandom );
1784
+ else if(fTexture == TEX_CEIL3_5) col = TexCeil3_5( vTexCoord, fRandom );
1785
+ else if(fTexture == TEX_FLAT14) col = TexFlat14( vTexCoord, fRandom );
1786
+ else if(fTexture == TEX_DOOR3) col = TexDoor3( vTexCoord, fRandom, fHRandom );
1787
+ else if(fTexture == TEX_LITE3) col = TexLite3( vTexCoord );
1788
+ else if(fTexture == TEX_STARTAN3) col = TexStartan3( vTexCoord, fRandom );
1789
+ else if(fTexture == TEX_BROWN1) col = TexBrown1( vTexCoord, fRandom, fHRandom );
1790
+ else if(fTexture == TEX_DOORSTOP) col = TexDoorstop( vTexCoord, fRandom );
1791
+ else if(fTexture == TEX_COMPUTE2) col = TexCompute2( vTexCoord, fRandom );
1792
+ else if(fTexture == TEX_STEP6) col = TexStep6( vTexCoord, fRandom, fHRandom );
1793
+ else if(fTexture == TEX_SUPPORT2) col = TexSupport2( vTexCoord, fRandom );
1794
+ else if(fTexture == TEX_DOORTRAK) col = TexDoorTrak( vTexCoord, fRandom );
1795
+ else if(fTexture == TEX_BROWN144) col = TexBrown144( vTexCoord, fRandom, fHRandom );
1796
+ #ifdef ENABLE_SPRITES
1797
+ else if(fTexture == TEX_BAR1A) col = TexBar1A( vTexCoord, fRandom, fHRandom );
1798
+ else if(fTexture == TEX_PLAYW) col = TexPlayW( vTexCoord, fRandom, fHRandom );
1799
+ #endif
1800
+
1801
+ #ifdef QUANTIZE_TEXTURES
1802
+ col = Quantize(col);
1803
+ #endif
1804
+
1805
+ return col;
1806
+ }
1807
+
1808
+ void mainVR( out vec4 fragColor, in vec2 fragCoord, in vec3 fragRayOri, in vec3 fragRayDir )
1809
+ {
1810
+ const vec2 vStart = vec2(1050, -3616);
1811
+
1812
+ fragRayOri.z *= -1.0;
1813
+ fragRayDir.z *= -1.0;
1814
+
1815
+ fragRayOri *= 48.0;
1816
+
1817
+ vec3 vCameraPos;
1818
+ vec3 vCameraTarget;
1819
+ DemoCamera( iTime * 0.25, vCameraPos, vCameraTarget );
1820
+
1821
+ if ( false )
1822
+ {
1823
+ fragRayOri += vCameraPos;
1824
+ }
1825
+ else
1826
+ {
1827
+ fragRayOri.xz += vStart;
1828
+ fragRayOri.y += 48.0;
1829
+ }
1830
+
1831
+ Ray r;
1832
+ r.vRayOrigin = fragRayOri;
1833
+ r.vRayDir = fragRayDir;
1834
+
1835
+ vec3 vForwards = fragRayDir;
1836
+
1837
+ vec3 vResult = DrawScene(vForwards, fragCoord / iResolution.xy,r);
1838
+
1839
+ fragColor = vec4( vResult, 1.0 );
1840
+ }