Files
94e919d417 lw14 ticketing #34444
* mamba init

* shader-updates

* feat: add better bloom

* cleanup

* Fix GLTF model loading to respect original material properties

Signed-off-by: Piotr Goszczyński <pg@tonik.com>

* Fix GLTF model loading to respect original material properties

Signed-off-by: Piotr Goszczyński <pg@tonik.com>

* stash changes

* Update font to Arial in mamba ticket component

Signed-off-by: Piotr Goszczyński <pg@tonik.com>

* Fix wireframe size in debug mode

Signed-off-by: Piotr Goszczyński <pg@tonik.com>

* Fix wireframe size in debug mode by attaching to child mesh instead of model

Signed-off-by: Piotr Goszczyński <pg@tonik.com>

* fix scaling

* fix

* feat: load png with color material

* fix: spline material

* add toggling of effects

* stash

* feat: ticket model

* load better model

* strcture

* fix rotation speed

* rotation

* fix rotation

* new model

* prepare final designs

* add color palette

* feat: add fonts and rendering

* render dynamic texture

* load all textures

* fix: color sace

* feat: secret model

* improve perf

* postprocessing

* fix: output pass

* improve shaders

* increase glitches

* cleanup

* update colors

* remove unused files

* add header

* feat: ui

* fix: raycaster

* feat: add button toggling

* Improve ui

* fix corners positoins

* add tunnel effect

* fix: dates

* add dynamic rocket position rendering

* add different logs

* feat: add migrations and connect to real data

* chore: state cleanup to use reducer

Migrate logic to centralized reducer for ease of debugging

* feat: add hud layout

* add grain effect to hud

* limit glitching, move page to main url

* add vignette effect

* fix: desktop layout

* remove vertical space

* feat: save secret state on ticket upgrade

* feat: make platinum version take priority over secret

* add mobile header

* remove unnecessary allocations

* fix: resize hud

* add page scaling for mobile layouts

* add ticket scaling based on resolution

* adjust mobile styles

* fix: resize texture distortion

* add gauges mobile breaking points

* feat: mobile claim layout

* mobile styles

* Show ticket referer

* rename files

* update copy links

* add partymode part 1

* feat: og images, lw14

* add presence tracking

* add live updates of guages

* Update meetups label

* update label

* username ticket lw14

* add proper subscription on first render

* remove green edge

* feat: remove species & planet from ticket scene

* change urls

* feat/mamba-assets: update assets

* feat: fix shader grain

* add color to shader

* remove vertical space

* fix: og image generation

* fix referal and removing of access token

* make urls nicer

* feat/mamba-assets: dynamic line break + dynamic background

* small adjustments

* add trimming to ogimages

* minor: missing font file

* fix og image line wrapping

* remove dot from meetups

* improve ticket quality

* upss, forgot to commit one file

* feat add dynamic og image linking

* update static site url

* fix low mobile resolution

* add banners

* simplify banner loading

* add missing fonts

* fix name breaking to prioritize spaces

* update quality based on devicePixelRatio

* fix button positioning

* revert: feature flags disabling

* update start date

* limit shader effects and disable axis, potential fix to chrome freeze

* feat: init mamba 01

* create narrow ticket scene

* narrow scene for ticket and fix follow mouse

* fix dates

* alternative version

* updated ticket page

* remove migrations

* remove files

* prettier

* prettier

* Fix TS and prettier issues

* Fix TS issues

* Test

* Remove console log

* fix updating ticket on share

* chore: lw cleanup

* fix ticket layout

* fix chrome crashes

* lower crt intensity

* tunnel improvements

* fix tunnel effect

* chore: z-index and prettier fix

* chore: padding

* fix double tunnel

* chore: font on banners

---------

Signed-off-by: Piotr Goszczyński <pg@tonik.com>
Co-authored-by: dztonik <dz@tonik.com>
Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com>
2025-03-27 15:55:47 +00:00

113 lines
2.8 KiB
TypeScript

import {
DataTexture,
FloatType,
MathUtils,
RedFormat,
ShaderMaterial,
UniformsUtils,
WebGLRenderer,
WebGLRenderTarget,
} from 'three'
import { Pass, FullScreenQuad } from 'three/examples/jsm/postprocessing/Pass'
import { DigitalGlitch } from 'three/examples/jsm/shaders/DigitalGlitch'
class GlitchPass extends Pass {
uniforms: typeof DigitalGlitch.uniforms
heightMap: DataTexture
material: ShaderMaterial
fsQuad: FullScreenQuad
goWild: boolean
curF: number
randX: number
intensity: number
constructor(dt_size = 64) {
super()
const shader = DigitalGlitch
this.uniforms = UniformsUtils.clone(shader.uniforms)
this.heightMap = this.generateHeightmap(dt_size)
this.uniforms['tDisp'].value = this.heightMap
this.material = new ShaderMaterial({
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader,
})
this.fsQuad = new FullScreenQuad(this.material)
this.goWild = false
this.curF = 0
this.randX = 0
this.generateTrigger()
this.intensity = 0
}
render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget) {
this.uniforms['tDiffuse'].value = readBuffer.texture
this.uniforms['seed'].value = Math.random() //default seeding
this.uniforms['byp'].value = 0
if (this.curF % this.randX < this.randX / 10) {
this.uniforms['amount'].value = 0 * this.intensity
this.uniforms['angle'].value = Math.PI
this.uniforms['distortion_x'].value = MathUtils.randFloat(0, 0.05) * this.intensity
this.uniforms['distortion_y'].value = MathUtils.randFloat(0, 0.05) * this.intensity
this.uniforms['seed_x'].value = MathUtils.randFloat(-0.05, 0.05) * this.intensity
this.uniforms['seed_y'].value = MathUtils.randFloat(-0.05, 0.05) * this.intensity
this.curF = 0
}
this.curF++
if (this.renderToScreen) {
renderer.setRenderTarget(null)
this.fsQuad.render(renderer)
} else {
renderer.setRenderTarget(writeBuffer)
if (this.clear) renderer.clear()
this.fsQuad.render(renderer)
}
}
generateTrigger() {
this.randX = MathUtils.randInt(200, 240)
}
generateHeightmap(dt_size: number) {
const data_arr = new Float32Array(dt_size * dt_size)
const length = dt_size * dt_size
for (let i = 0; i < length; i++) {
const val = MathUtils.randFloat(0, 1)
data_arr[i] = val
}
const texture = new DataTexture(data_arr, dt_size, dt_size, RedFormat, FloatType)
texture.needsUpdate = true
return texture
}
setIntensity(amount: number) {
this.intensity = amount < 0.01 ? 0 : amount / 4
}
enable(value: boolean) {
this.uniforms['byp'].value = value ? 0 : 1
}
dispose() {
this.material.dispose()
this.heightMap.dispose()
this.fsQuad.dispose()
}
}
export { GlitchPass }