diff --git a/src/ts/components/admin/admin-account-details/admin-account-details.pug b/src/ts/components/admin/admin-account-details/admin-account-details.pug index c53682e..f93c035 100644 --- a/src/ts/components/admin/admin-account-details/admin-account-details.pug +++ b/src/ts/components/admin/admin-account-details/admin-account-details.pug @@ -1,4 +1,4 @@ -div(*ngIf="account") +div(*ngIf="account") .row .col-md-12 h2 diff --git a/src/ts/components/admin/admin-accounts/admin-accounts.pug b/src/ts/components/admin/admin-accounts/admin-accounts.pug index fc890f0..8e42f05 100644 --- a/src/ts/components/admin/admin-accounts/admin-accounts.pug +++ b/src/ts/components/admin/admin-accounts/admin-accounts.pug @@ -1,4 +1,4 @@ -ng-template(#searchTooltip) +ng-template(#searchTooltip) .text-left.help-tooltip div: em search by: div name:<account_name> #[em - account name] diff --git a/src/ts/components/admin/admin-events/admin-events.pug b/src/ts/components/admin/admin-events/admin-events.pug index 5bc14c1..261c76d 100644 --- a/src/ts/components/admin/admin-events/admin-events.pug +++ b/src/ts/components/admin/admin-events/admin-events.pug @@ -1,4 +1,4 @@ -ng-template(#duplicatesPopover) +ng-template(#duplicatesPopover) div(*ngFor="let e of duplicateEntries") | {{e}} diff --git a/src/ts/components/admin/admin-origin-details/admin-origin-details.pug b/src/ts/components/admin/admin-origin-details/admin-origin-details.pug index 22511b5..d594318 100644 --- a/src/ts/components/admin/admin-origin-details/admin-origin-details.pug +++ b/src/ts/components/admin/admin-origin-details/admin-origin-details.pug @@ -1,4 +1,4 @@ -.row(style="margin-top: 100px;") +.row(style="margin-top: 100px;") .col-md-6 h2 {{ip}} [{{info.origin?.country}}] diff --git a/src/ts/components/admin/admin-origins/admin-origins.pug b/src/ts/components/admin/admin-origins/admin-origins.pug index 3401502..87309f9 100644 --- a/src/ts/components/admin/admin-origins/admin-origins.pug +++ b/src/ts/components/admin/admin-origins/admin-origins.pug @@ -1,4 +1,4 @@ -.text-center.pt-5(*ngIf="!stats") +.text-center.pt-5(*ngIf="!stats") fa-icon.text-muted([icon]="spinnerIcon" [fixedWidth]="true" [spin]="true" size="3x") .row(*ngIf="stats") diff --git a/src/ts/components/admin/admin-ponies/admin-ponies.pug b/src/ts/components/admin/admin-ponies/admin-ponies.pug index 49fef44..9b4897e 100644 --- a/src/ts/components/admin/admin-ponies/admin-ponies.pug +++ b/src/ts/components/admin/admin-ponies/admin-ponies.pug @@ -1,4 +1,4 @@ -ng-template(#searchTooltip) +ng-template(#searchTooltip) .text-left.help-tooltip div: em search by: div exact:<name> #[em - exact pony name] diff --git a/src/ts/components/admin/admin-state/admin-state.pug b/src/ts/components/admin/admin-state/admin-state.pug index a8d9037..0b6a81e 100644 --- a/src/ts/components/admin/admin-state/admin-state.pug +++ b/src/ts/components/admin/admin-state/admin-state.pug @@ -1,4 +1,4 @@ -div(*ngIf="isSuperadmin") +div(*ngIf="isSuperadmin") button.btn.btn-sm.btn-default((click)="notifyOfUpdate()") | Notify of update button.btn.btn-sm.btn-default.ml-1((click)="shutdownServers()") diff --git a/src/ts/components/admin/admin.pug b/src/ts/components/admin/admin.pug index f58d250..14ed73f 100644 --- a/src/ts/components/admin/admin.pug +++ b/src/ts/components/admin/admin.pug @@ -1,4 +1,4 @@ -.container-fluid +.container-fluid .d-flex.justify-content-between .admin-initializing diff --git a/src/ts/components/admin/shared/account-info/account-info.pug b/src/ts/components/admin/shared/account-info/account-info.pug index 4cdc08c..a257567 100644 --- a/src/ts/components/admin/shared/account-info/account-info.pug +++ b/src/ts/components/admin/shared/account-info/account-info.pug @@ -1,4 +1,4 @@ -ng-template(#notePopover) +ng-template(#notePopover) textarea.form-control.note-editor( cols="20" rows="15" agAutoFocus [(ngModel)]="note" (keydown.escape)="blur()" (blur)="blur()") diff --git a/src/ts/components/admin/shared/admin-chat-log/admin-chat-log.pug b/src/ts/components/admin/shared/admin-chat-log/admin-chat-log.pug index c531f43..abc66ec 100644 --- a/src/ts/components/admin/shared/admin-chat-log/admin-chat-log.pug +++ b/src/ts/components/admin/shared/admin-chat-log/admin-chat-log.pug @@ -1,4 +1,4 @@ -div(*ngIf="open || !canClose") +div(*ngIf="open || !canClose") .d-flex.justify-content-between.align-items-center h3 | {{title}} diff --git a/src/ts/components/admin/shared/auth-info/auth-info.pug b/src/ts/components/admin/shared/auth-info/auth-info.pug index a20b854..f31fedc 100644 --- a/src/ts/components/admin/shared/auth-info/auth-info.pug +++ b/src/ts/components/admin/shared/auth-info/auth-info.pug @@ -1,4 +1,4 @@ -a(*ngIf="auth?.url" [href]="auth?.url" target="_blank" rel="noopener noreferrer" [title]="name") +a(*ngIf="auth?.url" [href]="auth?.url" target="_blank" rel="noopener noreferrer" [title]="name") fa-icon([icon]="icon" [fixedWidth]="true") span(*ngIf="!auth?.url" [title]="name") fa-icon([icon]="icon" [fixedWidth]="true") diff --git a/src/ts/components/admin/shared/events-table/events-table.pug b/src/ts/components/admin/shared/events-table/events-table.pug index f9a6056..7c4b44d 100644 --- a/src/ts/components/admin/shared/events-table/events-table.pug +++ b/src/ts/components/admin/shared/events-table/events-table.pug @@ -1,4 +1,4 @@ -table.table.table-fixed.table-striped.table-hover.table-sm.table-ellipsis +table.table.table-fixed.table-striped.table-hover.table-sm.table-ellipsis thead tr th.col-time created diff --git a/src/ts/components/admin/shared/on-off-switch/on-off-switch.pug b/src/ts/components/admin/shared/on-off-switch/on-off-switch.pug index 965421e..30ff722 100644 --- a/src/ts/components/admin/shared/on-off-switch/on-off-switch.pug +++ b/src/ts/components/admin/shared/on-off-switch/on-off-switch.pug @@ -1,4 +1,4 @@ -.btn-group.mb-1 +.btn-group.mb-1 button.btn.btn-xs([ngClass]="on ? 'btn-default' : 'btn-danger active'" (click)="onToggle(false)" [disabled]="disabled") b {{offText}} button.btn.btn-xs([ngClass]="on ? 'btn-success active' : 'btn-default'" (click)="onToggle(true)" [disabled]="disabled") diff --git a/src/ts/components/admin/shared/origin-info/origin-info.pug b/src/ts/components/admin/shared/origin-info/origin-info.pug index 5633a3b..f35228b 100644 --- a/src/ts/components/admin/shared/origin-info/origin-info.pug +++ b/src/ts/components/admin/shared/origin-info/origin-info.pug @@ -1,4 +1,4 @@ -.d-flex.align-items-center(*ngIf="origin") +.d-flex.align-items-center(*ngIf="origin") a.origin-info-ip.mr-1([routerLink]="['/origins', origin.ip, origin.country]" [title]="origin.ip") | {{origin.ip}} span([title]="countryName") [{{origin.country}}] diff --git a/src/ts/components/admin/shared/pony-info/pony-info.pug b/src/ts/components/admin/shared/pony-info/pony-info.pug index b4fd960..61be882 100644 --- a/src/ts/components/admin/shared/pony-info/pony-info.pug +++ b/src/ts/components/admin/shared/pony-info/pony-info.pug @@ -1,4 +1,4 @@ -ng-template(#tooltip) +ng-template(#tooltip) .character-tooltip(style="position: relative") character-preview([pony]="pony?.ponyInfo" [passive]="true") .character-tooltip-indicator(*ngIf="isBadCM") • diff --git a/src/ts/components/admin/shared/time-field/time-field.pug b/src/ts/components/admin/shared/time-field/time-field.pug index 2df48c5..5c59f78 100644 --- a/src/ts/components/admin/shared/time-field/time-field.pug +++ b/src/ts/components/admin/shared/time-field/time-field.pug @@ -1,4 +1,4 @@ -ng-template(#tooltip) +ng-template(#tooltip) div {{time | date:'mediumDate'}} .text-muted {{time | date:'mediumTime'}} diff --git a/src/ts/components/shared/color-picker/color-picker.pug b/src/ts/components/shared/color-picker/color-picker.pug index 4465cf6..f1c2cdf 100644 --- a/src/ts/components/shared/color-picker/color-picker.pug +++ b/src/ts/components/shared/color-picker/color-picker.pug @@ -1,4 +1,4 @@ -.color-picker.dropdown( +.color-picker.dropdown( [class.disabled]="isDisabled" [class.open]="isOpen" [class.show]="isOpen") //-[class.indicator]="indicatorColor" .color-picker-box([style.background-color]="bg") diff --git a/src/ts/components/shared/menu-bar/menu-bar.pug b/src/ts/components/shared/menu-bar/menu-bar.pug index aff3dea..50ce8d3 100644 --- a/src/ts/components/shared/menu-bar/menu-bar.pug +++ b/src/ts/components/shared/menu-bar/menu-bar.pug @@ -1,4 +1,4 @@ -nav.navbar.navbar-expand.justify-content-end(role="navigation") +nav.navbar.navbar-expand.justify-content-end(role="navigation") .d-none.d-md-block a.pixelart.logo(*ngIf="logo" routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }") img.pixelart.logo-large(revSrc="images/logo-large.png" alt="Pony Town") diff --git a/src/ts/components/shared/portrait-box/portrait-box.pug b/src/ts/components/shared/portrait-box/portrait-box.pug index 53dd856..2cf8a7b 100644 --- a/src/ts/components/shared/portrait-box/portrait-box.pug +++ b/src/ts/components/shared/portrait-box/portrait-box.pug @@ -1,3 +1,3 @@ -.portrait-box([ngClass]="size") +.portrait-box([ngClass]="size") canvas(#canvas) .portrait-box-cover(*ngIf="!noBorder") diff --git a/src/ts/components/shared/slider-bar/slider-bar.pug b/src/ts/components/shared/slider-bar/slider-bar.pug index 160bf64..354ca4f 100644 --- a/src/ts/components/shared/slider-bar/slider-bar.pug +++ b/src/ts/components/shared/slider-bar/slider-bar.pug @@ -1,4 +1,4 @@ -.slider-bar(#bar [class.disabled]="disabled" (agDrag)="drag($event)" agDragRelative="self") +.slider-bar(#bar [class.disabled]="disabled" (agDrag)="drag($event)" agDragRelative="self") .slider-bar-fill([style.width.%]="width") .slider-bar-line .slider-bar-base([style.left.%]="width") diff --git a/src/ts/components/tools/shared/tools-frame/tools-frame.pug b/src/ts/components/tools/shared/tools-frame/tools-frame.pug index 15c54f2..067aac6 100644 --- a/src/ts/components/tools/shared/tools-frame/tools-frame.pug +++ b/src/ts/components/tools/shared/tools-frame/tools-frame.pug @@ -1,4 +1,4 @@ -ng-template(#selectFrame) +ng-template(#selectFrame) .frame-select-container a.frame-select(*ngFor="let s of sprites; index as i" [class.active]="frame === i" (mousedown)="select(i)" (mouseenter)="enter(i)" (mouseleave)="leave()") diff --git a/src/ts/components/tools/shared/tools-range/tools-range.pug b/src/ts/components/tools/shared/tools-range/tools-range.pug index ab36129..826ada0 100644 --- a/src/ts/components/tools/shared/tools-range/tools-range.pug +++ b/src/ts/components/tools/shared/tools-range/tools-range.pug @@ -1,4 +1,4 @@ -.tools-range.input-group([class.input-group-sm]="small") +.tools-range.input-group([class.input-group-sm]="small") .input-group-prepend button.btn.btn-default((click)="decrement()") fa-icon([icon]="vertical ? upIcon : leftIcon" [fixedWidth]="true") diff --git a/src/ts/components/tools/tools-animation/tools-animation.pug b/src/ts/components/tools/tools-animation/tools-animation.pug index 48e063c..a649588 100644 --- a/src/ts/components/tools/tools-animation/tools-animation.pug +++ b/src/ts/components/tools/tools-animation/tools-animation.pug @@ -1,4 +1,4 @@ -ng-template(#shareLinkPopover) +ng-template(#shareLinkPopover) div span.close.ml-2((click)="shareLinkOpen = false") × | {{shareLink}} diff --git a/src/ts/components/tools/tools-index/tools-index.pug b/src/ts/components/tools/tools-index/tools-index.pug index 3bee40e..83fd5c9 100644 --- a/src/ts/components/tools/tools-index/tools-index.pug +++ b/src/ts/components/tools/tools-index/tools-index.pug @@ -1,4 +1,4 @@ -.m-4 +.m-4 ul.nav.nav-pills a.nav-link(routerLink="/variants") Variant explorer a.nav-link(routerLink="/animation") Animator diff --git a/src/ts/components/tools/tools-sheet/tools-sheet.pug b/src/ts/components/tools/tools-sheet/tools-sheet.pug index 0e4d14b..40715c5 100644 --- a/src/ts/components/tools/tools-sheet/tools-sheet.pug +++ b/src/ts/components/tools/tools-sheet/tools-sheet.pug @@ -1,4 +1,4 @@ -.form-inline +.form-inline .form-group a.btn.btn-default(routerLink="/") fa-icon([icon]="homeIcon") diff --git a/src/ts/components/tools/tools-ui/tools-ui.pug b/src/ts/components/tools/tools-ui/tools-ui.pug index 98fff2e..c38a0f3 100644 --- a/src/ts/components/tools/tools-ui/tools-ui.pug +++ b/src/ts/components/tools/tools-ui/tools-ui.pug @@ -1,4 +1,4 @@ -ng-template(#modal) +ng-template(#modal) settings-modal((close)="modalRef.hide()") .container-fluid.mt-3(*ngIf="initialized") diff --git a/src/ts/components/tools/tools-variants/tools-variants.pug b/src/ts/components/tools/tools-variants/tools-variants.pug index b0c6c78..5bec878 100644 --- a/src/ts/components/tools/tools-variants/tools-variants.pug +++ b/src/ts/components/tools/tools-variants/tools-variants.pug @@ -1,4 +1,4 @@ -.form-inline.p-1 +.form-inline.p-1 .form-group a.btn.btn-default(routerLink="/") fa-icon([icon]="homeIcon") diff --git a/src/ts/components/tools/tools.pug b/src/ts/components/tools/tools.pug index 859cdd4..20ac945 100644 --- a/src/ts/components/tools/tools.pug +++ b/src/ts/components/tools/tools.pug @@ -1,2 +1,2 @@ -router-outlet +router-outlet draggable-outlet diff --git a/src/ts/generated/shaders.ts b/src/ts/generated/shaders.ts index ba25a21..7938aad 100644 --- a/src/ts/generated/shaders.ts +++ b/src/ts/generated/shaders.ts @@ -1,17 +1,17 @@ -/* tslint:disable */ - -export const basicShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; uniform mat4 transform; varying vec2 textureCoord; void main() { textureCoord = texcoords; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; varying vec2 textureCoord; void main() { gl_FragColor = texture2D(sampler1, textureCoord); }`; - -export const lightShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; varying vec2 textureCoord; varying vec4 vColor; void main() { float d = clamp((1.0 - length(textureCoord)) + 0.1, 0.0, 1.0); float m = d * d * d; gl_FragColor = vec4(m, m, m, 1) * vColor; }`; - -export const paletteDepthShader = `// VERTEX attribute vec3 position; attribute vec4 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec4 textureCoord; varying vec4 vColor; void main() { vec4 sprite = texture2D(sampler1, vec2(textureCoord.x, textureCoord.y)); vec4 palette = texture2D(sampler2, vec2(textureCoord.z + sprite.x * pixelSize, textureCoord.w)); vec4 color = vec4(palette.xyz * sprite.y, palette.w) * vColor; gl_FragColor = color; if (color.a < 0.01) discard; }`; - -export const paletteLayersInstancedShader = `// VERTEX attribute vec2 position0; attribute vec4 position1; attribute vec4 texcoord0; attribute vec2 texcoord1; attribute vec4 vertexColor; attribute vec4 vertexColor1; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord0; varying vec2 textureCoord1; varying vec4 vColor; varying vec4 vColor1; void main() { textureCoord0 = vec2(texcoord0.x + position0.x * texcoord0.z, texcoord0.y + position0.y * texcoord0.w); textureCoord1 = texcoord1; vColor = vertexColor * lighting; vColor1 = vertexColor1; gl_Position = transform * vec4( position1.x + position0.x * position1.z, position1.y + position0.y * position1.w, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec2 textureCoord0; varying vec2 textureCoord1; varying vec4 vColor; varying vec4 vColor1; void main() { vec4 sprite = texture2D(sampler1, textureCoord0.xy); float shade = clamp(sprite.g + vColor1.a, 0.0, 1.0); vec4 mask = vec4(vColor1.rgb, 1.0 - (vColor1.r + vColor1.g + vColor1.b)); float paletteIndex = dot(mask, sprite); vec4 palette = texture2D(sampler2, vec2(textureCoord1.x + paletteIndex * pixelSize, textureCoord1.y)); gl_FragColor = vec4(palette.xyz * shade, palette.w) * vColor; }`; - -export const paletteLayersShader = `// VERTEX attribute vec2 position; attribute vec4 texcoords; attribute vec4 vertexColor; attribute vec4 vertexColor1; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; varying vec4 vColor1; void main() { textureCoord = texcoords; // float f = texcoords.z; // float fr = fract(texcoords.z); // textureCoord.z = fr; // textureCoord.w = (f - fr) / 1024.0; vColor = vertexColor * lighting; vColor1 = vertexColor1; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; uniform float textureSize; varying vec4 textureCoord; varying vec4 vColor; varying vec4 vColor1; void main() { vec4 sprite = texture2D(sampler1, textureCoord.xy / textureSize); float shade = clamp(sprite.g + vColor1.a, 0.0, 1.0); vec4 mask = vec4(vColor1.rgb, 1.0 - (vColor1.r + vColor1.g + vColor1.b)); float paletteIndex = dot(mask, sprite); vec2 paletteCoord = textureCoord.zw; vec4 palette = texture2D(sampler2, vec2(paletteCoord.x + paletteIndex * pixelSize, paletteCoord.y)); gl_FragColor = vec4(palette.xyz * shade, palette.w) * vColor; }`; - -export const paletteShader = `// VERTEX attribute vec2 position; attribute vec4 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec4 textureCoord; varying vec4 vColor; void main() { vec4 sprite = texture2D(sampler1, vec2(textureCoord.x, textureCoord.y)); vec4 palette = texture2D(sampler2, vec2(textureCoord.z + sprite.x * pixelSize, textureCoord.w)); gl_FragColor = vec4(palette.xyz * sprite.y, palette.w) * vColor; }`; - -export const spriteShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; uniform float textureSize; varying vec2 textureCoord; varying vec4 vColor; void main() { gl_FragColor = texture2D(sampler1, textureCoord / textureSize) * vColor; }`; - -export const sprite2Shader = `// VERTEX attribute vec3 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor; gl_Position = transform * vec4(position, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; varying vec2 textureCoord; varying vec4 vColor; void main() { gl_FragColor = texture2D(sampler1, textureCoord) * vColor; }`; +/* tslint:disable */ + +export const basicShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; uniform mat4 transform; varying vec2 textureCoord; void main() { textureCoord = texcoords; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; varying vec2 textureCoord; void main() { gl_FragColor = texture2D(sampler1, textureCoord); }`; + +export const lightShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; varying vec2 textureCoord; varying vec4 vColor; void main() { float d = clamp((1.0 - length(textureCoord)) + 0.1, 0.0, 1.0); float m = d * d * d; gl_FragColor = vec4(m, m, m, 1) * vColor; }`; + +export const paletteDepthShader = `// VERTEX attribute vec3 position; attribute vec4 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec4 textureCoord; varying vec4 vColor; void main() { vec4 sprite = texture2D(sampler1, vec2(textureCoord.x, textureCoord.y)); vec4 palette = texture2D(sampler2, vec2(textureCoord.z + sprite.x * pixelSize, textureCoord.w)); vec4 color = vec4(palette.xyz * sprite.y, palette.w) * vColor; gl_FragColor = color; if (color.a < 0.01) discard; }`; + +export const paletteLayersInstancedShader = `// VERTEX attribute vec2 position0; attribute vec4 position1; attribute vec4 texcoord0; attribute vec2 texcoord1; attribute vec4 vertexColor; attribute vec4 vertexColor1; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord0; varying vec2 textureCoord1; varying vec4 vColor; varying vec4 vColor1; void main() { textureCoord0 = vec2(texcoord0.x + position0.x * texcoord0.z, texcoord0.y + position0.y * texcoord0.w); textureCoord1 = texcoord1; vColor = vertexColor * lighting; vColor1 = vertexColor1; gl_Position = transform * vec4( position1.x + position0.x * position1.z, position1.y + position0.y * position1.w, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec2 textureCoord0; varying vec2 textureCoord1; varying vec4 vColor; varying vec4 vColor1; void main() { vec4 sprite = texture2D(sampler1, textureCoord0.xy); float shade = clamp(sprite.g + vColor1.a, 0.0, 1.0); vec4 mask = vec4(vColor1.rgb, 1.0 - (vColor1.r + vColor1.g + vColor1.b)); float paletteIndex = dot(mask, sprite); vec4 palette = texture2D(sampler2, vec2(textureCoord1.x + paletteIndex * pixelSize, textureCoord1.y)); gl_FragColor = vec4(palette.xyz * shade, palette.w) * vColor; }`; + +export const paletteLayersShader = `// VERTEX attribute vec2 position; attribute vec4 texcoords; attribute vec4 vertexColor; attribute vec4 vertexColor1; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; varying vec4 vColor1; void main() { textureCoord = texcoords; // float f = texcoords.z; // float fr = fract(texcoords.z); // textureCoord.z = fr; // textureCoord.w = (f - fr) / 1024.0; vColor = vertexColor * lighting; vColor1 = vertexColor1; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; uniform float textureSize; varying vec4 textureCoord; varying vec4 vColor; varying vec4 vColor1; void main() { vec4 sprite = texture2D(sampler1, textureCoord.xy / textureSize); float shade = clamp(sprite.g + vColor1.a, 0.0, 1.0); vec4 mask = vec4(vColor1.rgb, 1.0 - (vColor1.r + vColor1.g + vColor1.b)); float paletteIndex = dot(mask, sprite); vec2 paletteCoord = textureCoord.zw; vec4 palette = texture2D(sampler2, vec2(paletteCoord.x + paletteIndex * pixelSize, paletteCoord.y)); gl_FragColor = vec4(palette.xyz * shade, palette.w) * vColor; }`; + +export const paletteShader = `// VERTEX attribute vec2 position; attribute vec4 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec4 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; // sprite uniform sampler2D sampler2; // palette uniform float pixelSize; varying vec4 textureCoord; varying vec4 vColor; void main() { vec4 sprite = texture2D(sampler1, vec2(textureCoord.x, textureCoord.y)); vec4 palette = texture2D(sampler2, vec2(textureCoord.z + sprite.x * pixelSize, textureCoord.w)); gl_FragColor = vec4(palette.xyz * sprite.y, palette.w) * vColor; }`; + +export const spriteShader = `// VERTEX attribute vec2 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; uniform vec4 lighting; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor * lighting; gl_Position = transform * vec4(position, 0, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; uniform float textureSize; varying vec2 textureCoord; varying vec4 vColor; void main() { gl_FragColor = texture2D(sampler1, textureCoord / textureSize) * vColor; }`; + +export const sprite2Shader = `// VERTEX attribute vec3 position; attribute vec2 texcoords; attribute vec4 vertexColor; uniform mat4 transform; varying vec2 textureCoord; varying vec4 vColor; void main() { textureCoord = texcoords; vColor = vertexColor; gl_Position = transform * vec4(position, 1); } // FRAGMENT precision mediump float; uniform sampler2D sampler1; varying vec2 textureCoord; varying vec4 vColor; void main() { gl_FragColor = texture2D(sampler1, textureCoord) * vColor; }`;