You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
469 lines
17 KiB
469 lines
17 KiB
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<title>Sub Factory</title>
|
|
<a id="focus" href="#focus"></a>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<link rel="icon" type="image/png" href="./images/favicon.png">
|
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.3/css/all.css">
|
|
|
|
<!-- test -->
|
|
<!-- Shaders
|
|
<script id="vertexShader" type="x-shader/x-vertex">
|
|
varying vec2 vUv;
|
|
|
|
void main() {
|
|
vUv = uv;
|
|
gl_Position = vec4(position, 1.0);
|
|
}
|
|
</script>
|
|
<script id="fragmentShader" type="x-shader/x-fragment">
|
|
#ifdef GL_ES
|
|
precision highp float;
|
|
#endif
|
|
|
|
// #extension GL_OES_standard_derivatives : enable
|
|
uniform float iTime;
|
|
uniform vec2 iMouse;
|
|
uniform vec2 iResolution;
|
|
uniform sampler2D iChannel0;
|
|
|
|
vec2 GetGradient(vec2 intPos, float t) {
|
|
float rand = texture(iChannel0, intPos / 64.0).r * 4.0;
|
|
float angle = 6.283185 * rand + 4.0 * t * rand;
|
|
return vec2(cos(angle), sin(angle));
|
|
}
|
|
|
|
float Pseudo3dNoise(vec3 pos) {
|
|
vec2 i = floor(pos.xy);
|
|
vec2 f = pos.xy - i;
|
|
vec2 blend = f * f * (3.0 -(2.0 * f));
|
|
float noiseVal =
|
|
mix(
|
|
mix(
|
|
dot(GetGradient(i + vec2(0, 0), pos.z), f - vec2(0, 0)),
|
|
dot(GetGradient(i + vec2(1, 0), pos.z), f - vec2(1, 0)),
|
|
blend.x),
|
|
mix(
|
|
dot(GetGradient(i + vec2(0, 1), pos.z), f - vec2(0, 1)),
|
|
dot(GetGradient(i + vec2(1, 1), pos.z), f - vec2(1, 1)),
|
|
blend.x),
|
|
blend.y
|
|
);
|
|
return noiseVal / 0.7;
|
|
}
|
|
|
|
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
vec2 uv = fragCoord.xy / iResolution.y;
|
|
vec2 uvm = iMouse.xy / iResolution.y;
|
|
|
|
float time = (80.-(1.*uvm.y)) * sin(iTime / 30000.);
|
|
float noiseVal = 0.5 + 0.1 + (time/100.) * Pseudo3dNoise(vec3(uv * (6. + (0.07 * uvm.x)), time/10.));
|
|
|
|
float val = sin(noiseVal * time + (sin(time) * time / 10.));
|
|
fragColor.rgba = vec4(vec3(val), 1.0);
|
|
}
|
|
|
|
void main() {
|
|
mainImage(gl_FragColor, gl_FragCoord.xy);
|
|
}
|
|
</script>
|
|
-->
|
|
<style>
|
|
body {
|
|
background-color: #e0c897;
|
|
background-image: url('images/texture.webp');
|
|
background-repeat: repeat;
|
|
}
|
|
|
|
#hecksshader {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: block;
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
z-index: -9999;
|
|
opacity: 0.15;
|
|
}
|
|
|
|
h2 {
|
|
font-family: 'Lato black', sans-serif;
|
|
font-size: 2.0rem;
|
|
text-transform: uppercase;
|
|
color: #cd332e;
|
|
margin-top: 4vh;
|
|
margin-bottom: 4vh;
|
|
}
|
|
|
|
.card-title {
|
|
font-family: 'Lato black', sans-serif;
|
|
color: #cd332e;
|
|
font-size: 1.5rem;
|
|
}
|
|
|
|
p, li {
|
|
font-family: 'Lato', sans-serif;
|
|
letter-spacing: 0.05em;
|
|
font-size: 1.4em;
|
|
color: #205397;
|
|
hyphens: auto;
|
|
}
|
|
|
|
img {
|
|
width:100%;
|
|
}
|
|
|
|
a:link {
|
|
color: #cd332e;
|
|
}
|
|
|
|
a:visited {
|
|
color: #ff534d;
|
|
}
|
|
|
|
a:hover {
|
|
color: silver;
|
|
}
|
|
|
|
a:active {
|
|
color: #ff534d;
|
|
}
|
|
|
|
.card {
|
|
width: 100%;
|
|
background-color: transparent !important;
|
|
border: 0px solid #335077!important;
|
|
}
|
|
|
|
.card-body {
|
|
border-style: solid;
|
|
border-top: 1px solid #335077!important;
|
|
border-bottom: 1px solid #335077!important;
|
|
border-left: 0;
|
|
border-right: 0;
|
|
}
|
|
|
|
.container {
|
|
width: 100%;
|
|
border-left: 1px solid #335077!important;
|
|
border-right: 1px solid #335077!important;
|
|
margin-right: auto;
|
|
margin-left: auto;
|
|
padding: 0;
|
|
}
|
|
|
|
.row {
|
|
margin-left:0;
|
|
margin-right:0;
|
|
}
|
|
|
|
.col-12 {
|
|
padding-left:3vw;
|
|
padding-right:3vw;
|
|
}
|
|
|
|
.fas, .fab {
|
|
color: #335077;
|
|
font-size: 2em;
|
|
}
|
|
|
|
.section, .cardcontainer {
|
|
margin-bottom: 5vh;
|
|
border-top: 1px solid #335077!important;
|
|
}
|
|
|
|
.logo {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
padding-bottom: 2vh;
|
|
width: 40%;
|
|
display:block;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<canvas id="hecksshader"></canvas>
|
|
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="img">
|
|
<img src="images/Sub_Factory_2024_Banner_web.webp" alt="Subfactory Banner">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="cardcontainer pt-2">
|
|
<h2 class="text-center">Präsentiert von</h2>
|
|
<div class="card-group">
|
|
<div class="card shadow-none">
|
|
<div class="card-body text-center">
|
|
<div class="fix_height">
|
|
<h5 class="card-title">Eulachbass</h5>
|
|
</div>
|
|
<img class="logo" src="images/eulachbass_logo.webp" alt="Eulachbass Logo">
|
|
<a href="https://eulachbass.ch/" target="_blank" class="card-link">
|
|
<i class="fas fa-globe mr-2"></i>
|
|
</a>
|
|
<a href="https://www.instagram.com/eulachbass" target="_blank" class="card-link">
|
|
<i class="fab fa-instagram mr-2"></i>
|
|
</a>
|
|
<a href="https://www.facebook.com/eulachbass/" target="_blank" class="card-link">
|
|
<i class="fab fa-facebook mr-2"></i>
|
|
</a>
|
|
<a href="https://soundcloud.com/eulachbass" target="_blank" class="card-link">
|
|
<i class="fab fa-soundcloud mr-2"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card shadow-none">
|
|
<div class="card-body text-center">
|
|
<div class="fix_height">
|
|
<h5 class="card-title">Sector B</h5>
|
|
</div>
|
|
<img class="logo" src="images/sectorb_logo.svg" alt="Eulachbass Logo">
|
|
<a href="https://www.instagram.com/sectorbevents/" target="_blank" class="card-link">
|
|
<i class="fab fa-instagram mr-2"></i>
|
|
</a>
|
|
<a href="https://www.facebook.com/sectorbevents/" target="_blank" class="card-link">
|
|
<i class="fab fa-facebook mr-2"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card shadow-none">
|
|
<div class="card-body text-center">
|
|
<div class="fix_height">
|
|
<h5 class="card-title">Subsanity Soundystem</h5>
|
|
</div>
|
|
<img class="logo" src="images/subsanity_logo.webp" alt="Eulachbass Logo">
|
|
<a href="https://www.instagram.com/subsanitysoundsystem" target="_blank" class="card-link">
|
|
<i class="fab fa-instagram mr-2"></i>
|
|
</a>
|
|
<a href="https://www.facebook.com/subsanitysound" target="_blank" class="card-link">
|
|
<i class="fab fa-facebook mr-2"></i>
|
|
</a>
|
|
<a href="https://soundcloud.com/user-937924022" target="_blank" class="card-link">
|
|
<i class="fab fa-soundcloud mr-2"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- INFO -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center">Info</h2>
|
|
<p>
|
|
Streiche dir den <b>15. Juni im Kalender fett</b> an! Von 13:00 bis
|
|
22:00 findet auf dem Zeughausareal in Winterthur zum zweiten mal unser Drum and
|
|
Bass Day Rave statt. Präsentiert werden internationale DnB Grössen wie
|
|
Annix (UK), Selecta J-Man (UK), Dazee (UK), FD (UK), und MC Fava (DE). Unterstützt
|
|
werden sie von DJs aus unseren eigenen Reihen (Sector B und Eulachbass). Falls du nach
|
|
22:00 noch weiter möchtest, gilt dein Eintrittsbändel als free entry für
|
|
die Afterparty im Kraftfeld Winterthur.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Tickets -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center">Tickets</h2>
|
|
<p>
|
|
Tickets sind auf
|
|
<a href="https://eventfrog.ch/de/p/party/electro/sub-factory-with-annix-selecta-j-man-dazee-fd-7185628944070047955.html" target="_blank">
|
|
Eventfrog
|
|
</a>
|
|
verfügbar.<br>
|
|
An der Abendkasse kostet der Eintritt 30 CHF.<br>
|
|
Eintritt ab Alter 18 Jahre. Minderjärige in Begleitung einer erwachsenen Person.
|
|
</p>
|
|
<iframe allowpaymentrequest="true"
|
|
src="https://eventfrog.ch/de/p/party/electro/sub-factory-with-annix-selecta-j-man-dazee-fd-7185628944070047955.html?color=60BF00&infobox=0&description=0&location=0&organisator=0&sponsors=0"
|
|
width="100%"
|
|
height="500"
|
|
style="border: 1px solid black"
|
|
frameborder="0">
|
|
</iframe>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zahlungsmethoden -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center ">Zahlungsmöglichkeiten</h2>
|
|
<p>
|
|
Bei uns kann mit Bargeld oder Twint bezahlt werden.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Vepflegung -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center ">Verpflegung</h2>
|
|
<p>
|
|
Auf dem Gelände stehen Foodtrucks zur Verpflegung zur Verfügung. Der Truck von
|
|
<a href="http://www.incontropizza.ch/" target="_blank">'Incontro'</a>
|
|
bietet dir eine der besten Pizzen der Stadt und für vegane Köstlichkeiten kann man sich beim Truck
|
|
von der <a href="https://steibichuchi.ch/" target="_blank">'Steibi Chuchi'</a> verwöhnen lassen.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Anreise -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center ">Anreise</h2>
|
|
<p>
|
|
Das Zeughausareal ist vom Bahnhof Winterthur einfach zu
|
|
Fuss oder per Bus und zu Fuss erreichbar. Zu Fuss vom Bahnhof 15
|
|
Minuten. Ansonsten Bus Linie 2 oder 3 Richtung Oberseen bis Haltestelle
|
|
Technikum und dann zu Fuss. Auf dem Gelände stehen keine Parkplätze zur
|
|
Verfügung.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Rave Etiquette -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center ">Rave Etiquette</h2>
|
|
<p>Mit der Teilnahme an der Sub Factory übernimmst du Verantwortung für dein Verhalten und
|
|
gestaltest den Anlass aktiv mit:</p>
|
|
<ul>
|
|
<li><h5 class="card-title">Konsens - nur ja heisst ja</h5></li>
|
|
<p>Respektiere physische und emotionale Grenzen. Die Grenzen aller Menschen sind individuell
|
|
und können sich jederzeit ändern. Frage immer nach Zustimmung. Das gilt auch beim
|
|
Fotografieren.</p>
|
|
<li><h5 class="card-title">Füreinander da</h5></li>
|
|
<p>Wir kümmern uns um unsere Freund:innen, die Menschen um uns herum und um uns selbst.
|
|
Siehst du eine Situation, in der du denkst, dass sich eine Person nicht wohl fühlt: Frag nach!
|
|
Jede Person definiert für sich selbst, wann eine Grenze überschritten ist. Falls du selbst mit der
|
|
Situation überfordert bist, kannst du Hilfe beim Ordnungsdienst holen.</p>
|
|
<li><h5 class="card-title">Keine Annahmen</h5></li>
|
|
<p>Vermeide Annahmen und daraus entstehende Fragen und Urteile über die Geschlechtsidentität,
|
|
sexuelle Orientierung, Herkunft oder soziale Zugehörigkeit einer Person.</p>
|
|
<li><h5 class="card-title">Kenne deine Grenzen</h5></li>
|
|
<p>Sei achtsam, wenn du Alkohol und ander Rauschmittel konsumierst. Stelle sicher, dass du
|
|
deine eigenen und die Grenzen anderer Personen noch wahrnehmen und respektieren kannst.
|
|
<br>
|
|
Fühlst du dich unwohl oder brauchst du Unterstützung? Wende dich an den Ordnungsdienst.
|
|
Sie können dir weiterhelfen oder einen ruhigen Ort anbieten.
|
|
</p>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Helfer -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center">Helfer:innen</h2>
|
|
<p>
|
|
Wir sind aktuell noch auf der Suche nach helfenden Personen. Offene Aufgaben können unter folgendem link eingesehen werden:<br>
|
|
<a href="https://portal.helfereinsatz.ch/sub-factory/de" target="_blank">
|
|
https://portal.helfereinsatz.ch/sub-factory/de
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Partner -->
|
|
<div class="row">
|
|
<div class="col-12 section">
|
|
<h2 class="text-center ">Partner:innen</h2>
|
|
<ul>
|
|
<li><a href="https://www.zeughaus1.ch/" target="_blank">ZEUGHAUS1</a></li>
|
|
<li><a href="https://www.kraftfeld.ch/" target="_blank">Kraftfeld Winterthur</a></li>
|
|
<li><a href="https://www.hakogetraenke.ch/" target="_blank">Hako Getränke</a></li>
|
|
<li><a href="https://hyposound.ch/" target="_blank">Hyposound</a></li>
|
|
<li><a href="https://www.mietlift.ch/" target="_blank">Miet-Lift</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
document.getElementById("focus").focus();
|
|
</script>
|
|
<!--
|
|
<script type="module">
|
|
import * as THREE from 'https://unpkg.com/three/build/three.module.js';
|
|
|
|
let camera, scene, renderer;
|
|
let uniforms;
|
|
let texture;
|
|
let downsample_quality = 1.;
|
|
init();
|
|
render();
|
|
|
|
function init() {
|
|
camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
scene = new THREE.Scene();
|
|
const geometry = new THREE.PlaneGeometry( 2, 2 );
|
|
const loader = new THREE.TextureLoader();
|
|
const texture = loader.load('./images/noise.png');
|
|
texture.wrapS = THREE.RepeatWrapping;
|
|
texture.wrapT = THREE.RepeatWrapping;
|
|
|
|
uniforms = {
|
|
iTime: { value: 1.0 },
|
|
iResolution: { value: new THREE.Vector2(1.0,1.0) },
|
|
iMouse: { value: new THREE.Vector2(0.0,0.0) },
|
|
iChannel0: { value: texture },
|
|
};
|
|
|
|
const material = new THREE.ShaderMaterial( {
|
|
uniforms: uniforms,
|
|
vertexShader: document.getElementById( 'vertexShader' ).textContent,
|
|
fragmentShader: document.getElementById( 'fragmentShader' ).textContent
|
|
} );
|
|
|
|
const mesh = new THREE.Mesh( geometry, material );
|
|
scene.add( mesh );
|
|
const canvas = document.querySelector('#hecksshader');
|
|
renderer = new THREE.WebGLRenderer({antialias: true, canvas});
|
|
document.addEventListener( 'pointermove', onPointerMove);
|
|
}
|
|
|
|
function onPointerMove(event) {
|
|
var clientX = event.clientX;
|
|
var clientY = event.clientY;
|
|
var mouseX = clientX;
|
|
var mouseY = 1 - clientY;
|
|
uniforms[ 'iMouse' ].value = new THREE.Vector2(mouseX, mouseY);
|
|
}
|
|
|
|
function rendererNeedsResize(renderer) {
|
|
const canvas = renderer.domElement;
|
|
const width = canvas.clientWidth;
|
|
const height = canvas.clientHeight;
|
|
const needResize = canvas.width !== width || canvas.height !== height;
|
|
return true;
|
|
}
|
|
|
|
function render() {
|
|
requestAnimationFrame( render );
|
|
|
|
if (rendererNeedsResize(renderer)) {
|
|
const canvas = renderer.domElement;
|
|
renderer.setSize(canvas.clientWidth, canvas.clientHeight, false);
|
|
camera.aspect = canvas.clientWidth / canvas.clientHeight;
|
|
camera.updateProjectionMatrix();
|
|
uniforms['iResolution'].value = new THREE.Vector2( canvas.clientWidth / downsample_quality, canvas.clientHeight / downsample_quality );
|
|
}
|
|
|
|
uniforms[ 'iTime' ].value = performance.now();
|
|
renderer.render( scene, camera );
|
|
}
|
|
</script>
|
|
-->
|
|
</body>
|
|
</html>
|
|
|