Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d247d6e635 | ||
|
|
cff918a21a | ||
|
|
ec3ac51a89 | ||
|
|
e1df61d3c6 | ||
|
|
05b8bae8c0 | ||
|
|
f6d98ab791 | ||
|
|
adcac0a05a | ||
|
|
706cb14e96 | ||
|
|
8dfc70fde1 | ||
|
|
75299c9236 |
1
.~lock.Praesentation.odp#
Normal file
@@ -0,0 +1 @@
|
||||
,came,mai,10.06.2026 08:04,file:///home/came/.config/libreoffice/4;
|
||||
BIN
Images/Gears.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
Images/Git-Icon-1788C.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Images/Mai.png
Normal file
|
After Width: | Height: | Size: 329 KiB |
BIN
Images/Mai2.jpg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
Images/Miku1.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
Images/Profilbild_juerg.png
Normal file
|
After Width: | Height: | Size: 495 KiB |
BIN
Images/Strawhat.png
Normal file
|
After Width: | Height: | Size: 294 KiB |
BIN
Images/Tux-svg.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
Images/joyboy.png
Normal file
|
After Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.0 MiB |
BIN
Images/pictureV2.jpg
Normal file
|
After Width: | Height: | Size: 159 KiB |
@@ -1,22 +0,0 @@
|
||||
let img;
|
||||
|
||||
function preload() {
|
||||
img = loadImage("Images/monitoring-miku.png");
|
||||
}
|
||||
|
||||
function draw() {
|
||||
|
||||
}
|
||||
|
||||
function setup() {
|
||||
createCanvas(800, 800)
|
||||
image(img, 0, 0, mouseX, mouseY);
|
||||
|
||||
|
||||
loadPixels(); // loads pixels from canvas
|
||||
img.loadPixels(); // loads pixels from img
|
||||
img.updatePixels(); // updates the img pixels
|
||||
updatePixels(); // updates the canvas pixels
|
||||
}
|
||||
|
||||
|
||||
BIN
Images/waifu1.png
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
Praesentation.odp
Normal file
BIN
Praesentation.pdf
Normal file
67
README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
## Website:
|
||||
|
||||
Link to the Repository:
|
||||
https://github.com/cametendo/EMVs-Creative-coding or
|
||||
https://gitea.cametendo.org/Cametendo/EMVs-Creative-coding
|
||||
|
||||
Pre-requisities:
|
||||
|
||||
- p5.js v1.10.0
|
||||
|
||||
---
|
||||
|
||||
Recommendation:
|
||||
|
||||
- VSCode Extension: FiveServer
|
||||
- Python 3.14.5
|
||||
|
||||
---
|
||||
|
||||
To open the website, click the little "Go Live" Button in the toolbar on the bottom right and then go to /website/index.html in the browser. There you will find all the cool stuff I did.
|
||||
|
||||
Another way to open the website is by using python:
|
||||
|
||||
```bash
|
||||
cd /path/to/your/EMVs-Creative-coding && python -m http.server
|
||||
```
|
||||
|
||||
Example output:
|
||||
|
||||
```
|
||||
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
|
||||
```
|
||||
|
||||
Access it via: `http://localhost:8000/website/`
|
||||
|
||||
---
|
||||
|
||||
## Minecraft Mod:
|
||||
|
||||
Pre-Requisities:
|
||||
|
||||
- fabric-api-0.141.4+1.21.11.jar
|
||||
- iris-fabric-1.10.7+mc1.21.11.jar
|
||||
- sodium-fabric-0.8.11+mc1.21.11.jar
|
||||
|
||||
To play with the mod, drag the `mc_kuwahara_shader` Folder into `/path/to/your/.minecraft/shaderpacks/`. When you did it correctly, you should get `/.../shaderpacks/mc_kuwahara_shader`.
|
||||
|
||||
The final tree structure should look like this:
|
||||
|
||||
```bash
|
||||
/.../.minecraft/shaderpacks/mc_kuwahara_shader
|
||||
├── final.fsh.settings
|
||||
├── shaders
|
||||
│ ├── final.fsh
|
||||
│ ├── final.vsh
|
||||
│ ├── gbuffers_terrain.fsh
|
||||
│ └── gbuffers_terrain.vsh
|
||||
└── shaders.properties
|
||||
```
|
||||
|
||||
Note: It is not recommend to play this shader with integrated graphics (in fullscreen mode). The minimum required GPUs for this shader are:
|
||||
|
||||
- Nvidia: GTX 750 Ti
|
||||
- AMD: RX 460
|
||||
- Intel: UHD (in windowed mode)
|
||||
|
||||
If you do need to change the settings because of FPS, go to `/mc_kuwahara_shader/shaders/final.fsh` and change `STEP` from 3 to 4 (or 3 to 2 or even 3 to 1, if your PC is srong enough ;D)
|
||||
@@ -14,7 +14,5 @@
|
||||
|
||||
<body>
|
||||
<script src="labyrinth.js"></script>
|
||||
<a href="script_rectangles.html">Rectangles Script</a>
|
||||
<a href="script_labyrinth.html">Labyrinth Script</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,8 +0,0 @@
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
canvas {
|
||||
display: block;
|
||||
}
|
||||
@@ -13,8 +13,6 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="rectangles.js"></script>
|
||||
<a href="script_rectangles.html">Rectangles Script</a>
|
||||
<a href="script_labyrinth.html">Labyrinth Script</a>
|
||||
<script src="image-filter.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
18
Week-2/Pictures/image.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Sketch</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="image.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,10 +1,57 @@
|
||||
let img;
|
||||
let img_Joyboy;
|
||||
let img_Gears;
|
||||
let img_Git;
|
||||
let img_Mai;
|
||||
let img_Mai2;
|
||||
let img_Miku;
|
||||
let img_Monitoring;
|
||||
let img_Picture;
|
||||
let img_Juerg;
|
||||
let img_Strawhat;
|
||||
let img_Tux;
|
||||
let img_Waifu;
|
||||
const imageArray = [];
|
||||
let randomImageIndex = 0;
|
||||
|
||||
function mouseClicked() {
|
||||
randomImageIndex = Math.random() * imageArray.length;
|
||||
randomImageIndex = parseInt(randomImageIndex);
|
||||
console.log(randomImageIndex);
|
||||
clear();
|
||||
const { img, width, height } = imageArray[randomImageIndex];
|
||||
image(img, 0, 0, width, height);
|
||||
}
|
||||
|
||||
function preload() {
|
||||
img = loadImage("/Images/monitoring-miku.png");
|
||||
img_Gears = loadImage("/Images/Gears.png");
|
||||
img_Git = loadImage("/Images/Git-Icon-1788C.png");
|
||||
img_Joyboy = loadImage("/Images/joyboy.png");
|
||||
img_Mai = loadImage("/Images/Mai.png");
|
||||
img_Mai2 = loadImage("/Images/Mai2.jpg");
|
||||
img_Miku = loadImage("/Images/Miku1.jpg");
|
||||
img_Monitoring = loadImage("/Images/monitoring-miku.png");
|
||||
img_Picture = loadImage("/Images/pictureV2.jpg");
|
||||
img_Juerg = loadImage("/Images/Profilbild_juerg.png");
|
||||
img_Strawhat = loadImage("/Images/Strawhat.png");
|
||||
img_Tux = loadImage("/Images/Tux-svg.png");
|
||||
img_Waifu = loadImage("/Images/waifu1.png");
|
||||
|
||||
imageArray.push({ img: img_Gears, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Joyboy, width: 681, height: 800 });
|
||||
imageArray.push({ img: img_Git, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Mai, width: 835, height: 800 });
|
||||
imageArray.push({ img: img_Mai2, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Miku, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Monitoring, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Picture, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Juerg, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Strawhat, width: 800, height: 800 });
|
||||
imageArray.push({ img: img_Tux, width: 675, height: 800 });
|
||||
imageArray.push({ img: img_Waifu, width: 1049, height: 800 });
|
||||
}
|
||||
|
||||
function setup() {
|
||||
createCanvas(720, 400);
|
||||
image(img, 0, 0, 300, 300);
|
||||
createCanvas(1400, 1400);
|
||||
const { img, width, height } = imageArray[randomImageIndex];
|
||||
image(img, 0, 0, width, height);
|
||||
}
|
||||
|
||||
18
Week-2/Pictures/transformations.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Sketch</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="transformations.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="libraries/p5.min.js"></script>
|
||||
<script src="libraries/p5.sound.min.js"></script>
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="sketch.js"></script>
|
||||
<script src="./interactive-shapes.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -47,7 +47,6 @@ function draw() {
|
||||
}
|
||||
|
||||
// Connect to the first poing again
|
||||
// or use endShape(CLOSE); but result is different
|
||||
curveVertex(x[0] + centerX, y[0] + centerY);
|
||||
|
||||
// end controlPoint
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="libraries/p5.min.js"></script>
|
||||
<script src="libraries/p5.sound.min.js"></script>
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
2
Week-3/import-export/???.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Whatever this is doing in creative coding lol
|
||||
- Came, 08.06.2026
|
||||
248
Week-4/Alle_Lyrics.txt
Normal file
@@ -0,0 +1,248 @@
|
||||
My mem'ries so good and awful, it seems they gave me a grudge
|
||||
But I have left bitterness and resentment behind me
|
||||
And it is all thanks to him
|
||||
|
||||
Look, it's the clowns who think they know
|
||||
How crushing loneliness can be
|
||||
You know nothing 'til you come with me
|
||||
|
||||
And run wild! Release your rage
|
||||
Let the winds of wrath blow them away
|
||||
Not gonna live in compliance-iance-iance
|
||||
I'm not playin' the victim, no more
|
||||
Time to go rage, let's punish them all
|
||||
For their love, I'm done trying to trust
|
||||
Not gonna live in compliance-iance-iance
|
||||
Gonna play with fire, backlit
|
||||
By the flames
|
||||
|
||||
(Na-na-na-na-na-na-na-na)
|
||||
(Na-na-na-na-na-na-na-na)
|
||||
(Na-na-na-na-na-na-na-na)
|
||||
|
||||
By the end, everything turned to red
|
||||
It was brutal yet so beautiful
|
||||
A kind of red, pulls you in
|
||||
And won't let you look away
|
||||
Make you feel a bit feverish
|
||||
Scarlet crimson lit up from behind
|
||||
So bright, it'll make you go blind
|
||||
Hypnotizing every eye
|
||||
That sees its red aura blazing
|
||||
Held captive by the allure
|
||||
|
||||
My heart got tangled up bad and now it's frayed
|
||||
No matter how much I've learned
|
||||
I understand but my anger's here to stay
|
||||
The words rush out
|
||||
|
||||
Let's run wild! Release your rage
|
||||
Let the winds of wrath blow them away
|
||||
Not gonna live in compliance-iance-iance
|
||||
I'm not playin' the victim, no more
|
||||
Time to go rage, let's punish them all
|
||||
For their love, I'm done trying to trust
|
||||
Not gonna live in compliance-iance-iance
|
||||
Gonna play with fire, backlit
|
||||
By the flames
|
||||
|
||||
Though my anger exhausts me and I fall apart
|
||||
My actions may cost me but
|
||||
I can't let go of the past I refuse to move on
|
||||
I know if you would listen, you would understand
|
||||
It's time to enter into my bad
|
||||
Dreamland you made for me and suffer like I have
|
||||
|
||||
So let's run wild! Release your rage
|
||||
Let the winds of wrath blow them away
|
||||
Not gonna live in compliance-iance-iance
|
||||
I'm not playin' the victim, no more
|
||||
Time to go rage, let's punish them
|
||||
For their love, I'm done trying to trust
|
||||
Not gonna live in compliance-iance-iance
|
||||
Gonna play with fire, backlit
|
||||
By the flames
|
||||
|
||||
(Na-na-na-na-na-na-na-na)
|
||||
(Na-na-na-na-na-na-na-na)
|
||||
(Na-na-na-na-na-na-na-na)We can choose the way of our future
|
||||
Try a brand new path, we can change the world
|
||||
We can change the world
|
||||
|
||||
Say goodbye to everyone who stands against us
|
||||
No one has the power to stop a change that comes through music
|
||||
No, you can't stop magic
|
||||
|
||||
Close your eyes and you can see the future before you
|
||||
Every note I sing is bringin' you closer to your purpose
|
||||
Once you're there, don't let go
|
||||
|
||||
You wanna play a real game, unfurl the chain
|
||||
Melody strung out like we'rе walkin' on a tight rope
|
||||
Don't wanna cry, don't wanna try, wanna forget
|
||||
Just let mе live inside a dreamland, I wanna be free!
|
||||
And let a brand new era dawn
|
||||
I know that we can create a new world!
|
||||
|
||||
We can choose the way of our future
|
||||
Try a brand new path, we can change the world
|
||||
We can change the world
|
||||
This boundless music brings transformation
|
||||
Messages in song reach even further
|
||||
This dream will come true, "I believe in you"
|
||||
Ooh
|
||||
|
||||
Say goodbye to everything that's weighing you down
|
||||
Transcend beyond reality to colorful worlds of music
|
||||
We need to keep on rising
|
||||
|
||||
Close your eyes and take my hand, we're runnin' together
|
||||
We don't have to live like this, I know we can all do better
|
||||
I sing for liberation
|
||||
|
||||
You wanna play a real game, unfurl the chain
|
||||
Melody lighting up the path to new horizons
|
||||
Don't wanna cry, don't wanna try, wanna forget
|
||||
Just let me live inside a dreamland, I wanna be free!
|
||||
And let a brand new era dawn
|
||||
I know that we can create a new world!
|
||||
|
||||
We can choose the way of our future
|
||||
Try a brand new path, we can change the world
|
||||
We can change the world
|
||||
This boundless music brings transformation
|
||||
Messages in song
|
||||
Reach even further, reach even further
|
||||
A new genesis
|
||||
Ooh
|
||||
|
||||
A new genesisNa-na, na-na-na
|
||||
Ready for my show
|
||||
Okay, one man show
|
||||
Listen, listen
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
Go crazy
|
||||
Let's shake it off (Giga) (TeddyLoid)
|
||||
|
||||
Ha! Ya-ya-ya-ya-ya, show time
|
||||
Behold the summit's grand arrival, come over now
|
||||
Complete the night, alright, hell yeah, yeah, yeah, yeah
|
||||
Getting pumped up, it's super easy, brah, brah, brah! Pow
|
||||
It's beyond words, ain't nobody stop (Ha, ha)
|
||||
|
||||
Oh, the realm shines in stunning splendor
|
||||
Attention! Let's make some noise
|
||||
Soon, comes an impressive debut, expressing purpose with a voice of impact
|
||||
The empty shrine has long been eradicated
|
||||
Ay, cherry blossoms madly bloom, behold the grand arrival
|
||||
|
||||
I don't mean to show off, no, no
|
||||
It's automatic, natural instincts overflow
|
||||
On top of a ironic guillotine, have a blast, gracefully
|
||||
Da-rat-a-tat-a, warning!
|
||||
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
Hooray, rejoice in the spirit of delight
|
||||
Shout it out, shout it out
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
Elegantly soaring, let emotions guide
|
||||
Shout it out, shout it out (Ooh)
|
||||
|
||||
(Hey, uh) Eat it up
|
||||
(Hey, ha) Rat-tat-tat-tat-tat (Pull up)
|
||||
(Hey uh, wa-wa-wa)
|
||||
Full bloom, all at once with full force, jump around
|
||||
|
||||
Look at me now
|
||||
Passionately intense specification
|
||||
Almost like a heart pounding fiercely through the skin (Exotic vox)
|
||||
Eeny-meeny-miny-moe the view of the sunrise upon a presence
|
||||
Set free the elusive feeling that's been playing hide and seek
|
||||
(Adios rationality)
|
||||
Becoming reckless (Ay, ay, ay)
|
||||
|
||||
Jabarabadabi a dual-faced deception
|
||||
The ambitious one, got the juice it makes me jealous
|
||||
Don't play tricks, don't loose your temper
|
||||
Before reaching karma, let me wander and sway
|
||||
Jabarabadabi a dual-faced deception
|
||||
The ambitious one, got the juice it makes me jealous
|
||||
Don't play tricks, don't loose your temper
|
||||
Colorful butterfly (No escape)
|
||||
|
||||
You see, I can't stop anymore
|
||||
Bounded by the noisy heartbeat
|
||||
Daybreak painted with impulsive hues
|
||||
Maddening basstones piercing through the lungs
|
||||
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
Exceptional danger, boundless energy fills the air
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
It's all or nothing, ahh
|
||||
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
Hooray, rejoice in the spirit of delight
|
||||
Shout it out, shout it out
|
||||
Na-na, na-na-na
|
||||
Ready for my show
|
||||
To bring applause, stay
|
||||
Forget everything, shout it out
|
||||
|
||||
Ay, woah-oh-oh-oh
|
||||
Right and left, all together, rat-a-tat-a-tat (Pull up)
|
||||
With all your might, altogether (Clap, clap, clap)
|
||||
Whatever it may be, let's chant together
|
||||
Shout it out, shout it outᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
|
||||
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
|
||||
|
||||
Wandering heart, clouds above
|
||||
Rain begins to fall down
|
||||
My bitter tears flowing out, they never dry up
|
||||
I let the words of a curse be my deliverance
|
||||
ᛗᛁᛖ ᚾᛖᚷ ᛟᚾ ᚷᛁᛖᚲ ᚷᛁᛖᚲ
|
||||
ᚾᚨᚺ ᛈᚺᚨᛋ ᛏᛖᛉᛉᛖ ᛚᚨᚺ
|
||||
These ancient words like a hymn of reclamation
|
||||
Not even death will escape them
|
||||
|
||||
How to center these troubled thoughts? I pray
|
||||
Can the future bring calm to the sea? I beg
|
||||
|
||||
It's time for salvation to finally come
|
||||
I feel this rage, and I'm feelin' it strong
|
||||
This weeping and wailing has gone far too long
|
||||
Nothing left but to yеll! Yeah! Yeah!
|
||||
I know you feel it too so keep on singin' this song
|
||||
Even whеn they abuse us, we'll keep singin' along
|
||||
We'll start another big bang when we all sing as one
|
||||
United, we're fightin', bring 'em down with our song of ruin
|
||||
|
||||
ᛗᛁᛖ ᚾᛖᚷ ᛟᚾ ᚷᛁᛖᚲ ᚷᛁᛖᚲ
|
||||
ᚾᚨᚺ ᛈᚺᚨᛋ ᛏᛖᛉᛉᛖ ᛚᚨᚺ
|
||||
We will rejoice when we get the freedom promised
|
||||
The freedom so many die for
|
||||
|
||||
When there's nowhere to run we must find hope
|
||||
Left forgotten within the light, there it glows
|
||||
|
||||
Keep making this music 'til you breath your last
|
||||
We dream but never lose sight of the past
|
||||
Illuminate hope and forget all the rest
|
||||
Nothing left but to yell, yeah, yeah
|
||||
|
||||
It's time for salvation to finally come
|
||||
I feel this rage, and I'm feelin' it strong
|
||||
This weeping and wailing has gone far too long
|
||||
Nothing left but to yell! Yeah! Yeah!
|
||||
I know you feel it too so keep on singin' this song
|
||||
Even when they abuse us, we'll keep singin' along
|
||||
We'll start another big bang when we all sing as one
|
||||
United, we're fightin', bring 'em down with our song of ruin
|
||||
|
||||
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
|
||||
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
|
||||
85
Week-4/Rick_Astley_never_gonna_give_you_up.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
Desert you
|
||||
Ooh-ooh-ooh-ooh
|
||||
Hurt you
|
||||
|
||||
We're no strangers to love
|
||||
You know the rules and so do I
|
||||
A full commitment's what I'm thinkin' of
|
||||
You wouldn't get this from any other guy
|
||||
|
||||
I just wanna tell you how I'm feeling
|
||||
Gotta make you understand
|
||||
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
|
||||
We've known each other for so long
|
||||
Your heart's been aching, but you're too shy to say it
|
||||
Inside, we both know what's been goin' on
|
||||
We know the game, and we're gonna play it
|
||||
|
||||
And if you ask me how I'm feeling
|
||||
Don't tell me you're too blind to see
|
||||
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
|
||||
Ooh (Give you up)
|
||||
Ooh-ooh (Give you up)
|
||||
(Ooh-ooh)
|
||||
Never gonna give, never gonna give (Give you up)
|
||||
(Ooh-ooh)
|
||||
Never gonna give, never gonna give (Give you up)
|
||||
|
||||
We've known each other for so long
|
||||
Your heart's been aching, but you're too shy to say it
|
||||
Inside, we both know what's been goin' on
|
||||
We know the game, and we're gonna play it
|
||||
|
||||
I just wanna tell you how I'm feeling
|
||||
Gotta make you understand
|
||||
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
Never gonna give you up
|
||||
Never gonna let you down
|
||||
Never gonna run around
|
||||
And desert you
|
||||
Never gonna make you cry
|
||||
Never gonna say goodbye
|
||||
Never gonna tell a lie
|
||||
And hurt you
|
||||
29
Week-4/benutzerliste.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
BENUTZERLISTE
|
||||
|
||||
1. PRIMÄRE NUTZER (Main Target Group)
|
||||
- Alltags-Organisierer
|
||||
Nutzen die App täglich oder fast täglich, brauchen schnelle Erfassung und verlässliche Erinnerungen.
|
||||
- Strukturierte Listen-Nutzer
|
||||
Arbeiten gern mit einfachen Listen und Kategorien, möchten Übersicht ohne Komplexität.
|
||||
- Deadline-/Reminder-Nutzer
|
||||
Nutzen die App vor allem für „Erinnere mich rechtzeitig“, weniger für grosse Strukturen.
|
||||
|
||||
2. SEKUNDÄRE NUTZER (gelegentliche Nutzer)
|
||||
- Gelegenheits-Planer
|
||||
Öffnen die App nur ein paar Mal pro Woche, nutzen Basisfunktionen.
|
||||
- Kalender-Fokus-Nutzer
|
||||
Denken zeitbasiert, nutzen die App als Ergänzung zum Kalender.
|
||||
- Projekt-orientierte Nutzer
|
||||
Nutzen die App temporär für grössere Schul-/Arbeitsprojekte.
|
||||
|
||||
3. SONSTIGE (nicht Hauptzielgruppe, aber real vorhanden)
|
||||
- Interessierte Test-Nutzer
|
||||
Installieren → testen → eventuell behalten.
|
||||
- Minimalisten
|
||||
Nutzen selten ToDos, brauchen aber manchmal schnelle Erinnerungen oder kurze Notizen.
|
||||
|
||||
4. NICHT-NUTZER
|
||||
- Bewusste Nicht-Nutzer
|
||||
Organisieren alles im Kopf oder auf Papier, wollen keine App.
|
||||
- Technische Pflichtrollen
|
||||
Devs, Support, Admins – gehören nicht zur echten Produktzielgruppe.
|
||||
18
Week-4/l-system.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Sketch</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="l-system.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
68
Week-4/l-system.js
Normal file
@@ -0,0 +1,68 @@
|
||||
let angle;
|
||||
let axiom = "F";
|
||||
let sentence = axiom;
|
||||
let len = 100;
|
||||
let rules = [];
|
||||
rules[0] = {
|
||||
a: "F",
|
||||
b: "FF-[-F-F-F]+[+F+F+F]FF*[*F/F/F]/[/F*F*F]FF*[*F/F/F]/[/F*F*F]FF-[-F-F-F]+[+F+F+F]FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
|
||||
// c: "FF*[*F/F/F]/[/F*F*F]",
|
||||
};
|
||||
|
||||
function generate() {
|
||||
len *= 0.5;
|
||||
let nextSentence = "";
|
||||
for (let i = 0; i < sentence.length; i++) {
|
||||
let current = sentence.charAt(i);
|
||||
let found = false;
|
||||
for (let j = 0; j < rules.length; j++) {
|
||||
if (current == rules[j].a) {
|
||||
found = true;
|
||||
nextSentence += rules[j].b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
nextSentence += current;
|
||||
}
|
||||
}
|
||||
sentence = nextSentence;
|
||||
// createP(sentence);
|
||||
turtle();
|
||||
}
|
||||
|
||||
function turtle() {
|
||||
background(51);
|
||||
resetMatrix();
|
||||
translate(width / 2, height);
|
||||
stroke(255, 100);
|
||||
for (let i = 0; i < sentence.length; i++) {
|
||||
let current = sentence.charAt(i);
|
||||
if (current == "F") {
|
||||
line(0, 0, 0, -len);
|
||||
translate(0, -len);
|
||||
} else if (current == "+") {
|
||||
rotate(angle);
|
||||
} else if (current == "-") {
|
||||
rotate(-angle);
|
||||
} else if (current == "*") {
|
||||
rotate(angle * 2);
|
||||
} else if (current == "/") {
|
||||
rotate(angle / 2);
|
||||
} else if (current == "[") {
|
||||
push();
|
||||
} else if (current == "]") {
|
||||
pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setup() {
|
||||
createCanvas(400, 400);
|
||||
angle = radians(10);
|
||||
background(51);
|
||||
createP(axiom);
|
||||
turtle();
|
||||
let button = createButton("generate");
|
||||
button.mousePressed(generate);
|
||||
}
|
||||
18
Week-4/markov-chain.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Sketch</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
|
||||
<script src="/libraries/p5.min.js"></script>
|
||||
<script src="/libraries/p5.sound.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="markov-chain.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
52
Week-4/markov-chain.js
Normal file
@@ -0,0 +1,52 @@
|
||||
let myData;
|
||||
|
||||
function preload() {
|
||||
myData = loadStrings("shakespeare.txt");
|
||||
}
|
||||
|
||||
function setup() {
|
||||
createCanvas(400, 300);
|
||||
background(220);
|
||||
|
||||
const myDataSplit = myData.flatMap((str) => str.split(/\s+/)).filter(Boolean);
|
||||
|
||||
let map = new Map();
|
||||
|
||||
for (let i = 0; i < myDataSplit.length - 1; i++) {
|
||||
let currentWord = myDataSplit[i];
|
||||
let nextWord = myDataSplit[i + 1];
|
||||
|
||||
if (!map.has(currentWord)) {
|
||||
map.set(currentWord, []);
|
||||
}
|
||||
map.get(currentWord).push(nextWord);
|
||||
}
|
||||
|
||||
let phraseArray = [];
|
||||
|
||||
let currentWord = myDataSplit[Math.floor(Math.random() * myDataSplit.length)];
|
||||
phraseArray.push(currentWord);
|
||||
|
||||
for (let i = 0; i < 150; i++) {
|
||||
let possibilities = map.get(currentWord);
|
||||
|
||||
if (!possibilities || possibilities.length === 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
let nextWord =
|
||||
possibilities[Math.floor(Math.random() * possibilities.length)];
|
||||
phraseArray.push(nextWord);
|
||||
|
||||
currentWord = nextWord;
|
||||
}
|
||||
|
||||
let phrase = phraseArray.join(" ");
|
||||
|
||||
textAlign(LEFT, TOP);
|
||||
textFont("Courier New");
|
||||
textSize(12);
|
||||
text(phrase, 20, 40, 360, 200);
|
||||
|
||||
text("- Someone unnamed", 20, 260);
|
||||
}
|
||||
36
Week-4/markovtest.js
Normal file
@@ -0,0 +1,36 @@
|
||||
// An array of lines from a text file
|
||||
let lines;
|
||||
// The Markov Generator object
|
||||
let markov;
|
||||
// An output element
|
||||
let output;
|
||||
|
||||
// Preload some seed data
|
||||
function preload() {
|
||||
lines = loadStrings("shakespere.txt");
|
||||
}
|
||||
|
||||
function setup() {
|
||||
// Join everything together in one long string
|
||||
// Keep carriage returns so these will show up in the markov generator
|
||||
let text = lines.join("\n");
|
||||
|
||||
// N-gram length and maximum length
|
||||
markov = new MarkovGenerator(8, 400);
|
||||
markov.feed(text);
|
||||
//console.log(markov);
|
||||
|
||||
// Make the button
|
||||
let button = createButton("generate");
|
||||
button.mousePressed(generate);
|
||||
|
||||
noCanvas();
|
||||
}
|
||||
|
||||
function generate() {
|
||||
// Generate some text
|
||||
let result = markov.generate();
|
||||
// Put in HTML line breaks wherever there was a carriage return
|
||||
result = result.replace("\n", "<br/><br/>");
|
||||
createP(result);
|
||||
}
|
||||
1395
Week-4/onepiece.txt
Normal file
121753
Week-4/shakespeare.txt
Normal file
109
Week-4/the-last-cartographer.txt
Normal file
@@ -0,0 +1,109 @@
|
||||
The Last Cartographer
|
||||
|
||||
There are no more blank spaces on the map. That's what they told Mirela when she was hired, and it turned out to be almost entirely false.
|
||||
|
||||
She had taken the job at the Institute for Geographical Memory because the salary was decent and the building had good light. The Institute was a strange place — part archive, part museum, part bureaucratic maze. Its hallways were lined with framed maps from every century, and the air smelled permanently of old paper and pencil graphite, as if cartography itself had a scent.
|
||||
|
||||
Her title was Cartographic Analyst, which mostly meant she sat in front of a computer comparing satellite data to historical records, looking for discrepancies. The work was tedious in the best way: quiet, precise, and occasionally surprising. You could spend an entire morning matching road names from a 1947 survey to current street layouts and find nothing. Then in the afternoon, some small thing — a misaligned river bend, a neighborhood that didn't exist in any official record — would make the whole day worth it.
|
||||
|
||||
The blank spaces, it turned out, were everywhere. They were just very small.
|
||||
|
||||
Mirela discovered the first one in October. She was cross-referencing land parcel data in the eastern part of the city, a dense residential district that had been rezoned twice in twenty years, when she noticed a lot with no assigned ID number. Not an error — just absence. The surrounding parcels had their numbers, their owners, their tax histories. This one had nothing. No name, no classification, not even the notation of "undeveloped land" that the city used as a catch-all for anything it hadn't gotten around to processing yet.
|
||||
|
||||
She flagged it, wrote up a note, and moved on. Standard procedure.
|
||||
|
||||
The note came back three days later with a stamp that read: REVIEWED — NO ACTION REQUIRED.
|
||||
|
||||
That should have been the end of it. Mirela was not by nature a person who pushed against official conclusions. She recycled, she paid her bills on time, she returned library books before the due date. She was, she had always assumed, a person who trusted systems to work the way they were supposed to.
|
||||
|
||||
But she had looked at that parcel. She had seen the gap in the data. And the gap had a shape — roughly rectangular, about forty meters by sixty, sitting between a hardware store and a row of townhouses she'd driven past a hundred times. It was not nothing. It was a very specific, very deliberate kind of nothing.
|
||||
|
||||
She printed the map coordinates on a piece of paper, folded it into her jacket pocket, and took the long way home.
|
||||
|
||||
---
|
||||
|
||||
The lot was real.
|
||||
|
||||
That sounds obvious, but it wasn't. Data gaps could mean a lot of things: corrupted files, bureaucratic lag, a property that had changed hands so many times that its records had fragmented across three different municipal databases and never been reconciled. Mirela had seen all of that before. Usually the physical reality matched the record: empty lot, chain-link fence, maybe a mattress someone had dumped.
|
||||
|
||||
This lot had a gate. Not a chain-link fence — an actual wrought-iron gate, painted black, attached to a stone wall that was maybe a meter and a half high. The wall ran along the side of the hardware store and the back of the townhouses. There were no signs. No posted hours, no warnings, no indications of ownership.
|
||||
|
||||
Through the bars of the gate she could see a garden.
|
||||
|
||||
It was not a neglected garden, full of weeds and collapsed structure. It was maintained — visibly, actively, recently maintained. There were raised beds with winter vegetables, a gravel path that curved toward the center of the lot, a small wooden bench, and several large clay pots with bare-branched shrubs that had been cut back for the season. In the far corner there was a tool shed, and through its small window she could see the orange handle of a watering can.
|
||||
|
||||
Someone came here. Someone grew things here. Someone had, at some point, decided that this forty-meter-by-sixty-meter rectangle of earth in the middle of a dense city grid would not have a parcel number, would not appear in municipal records, would not show up in any database that a cartographic analyst at the Institute for Geographical Memory might be asked to review.
|
||||
|
||||
Mirela stood at the gate for a long time, her breath making small clouds in the October air. Then she walked home and made dinner and thought about it until she fell asleep.
|
||||
|
||||
---
|
||||
|
||||
She went back four more times before she talked to anyone.
|
||||
|
||||
The second time, she brought a notepad and sketched the dimensions of the wall as best she could, pacing along the outside edge. The third time, she arrived early in the morning and waited, watching, for almost an hour, and saw no one. The fourth time, it was raining, and she stood under an umbrella and felt slightly absurd but didn't leave. The fifth time, the gate was open.
|
||||
|
||||
Not open as in unlocked. Open as in swung wide, propped with a brick, with clear evidence that whoever used this garden was currently using it. There was a wheelbarrow parked halfway along the gravel path, loaded with soil. A pair of gardening gloves sat on top.
|
||||
|
||||
Mirela stood in the open gateway and called out, "Hello?"
|
||||
|
||||
A woman emerged from behind the tool shed. She was in her sixties, wearing a canvas jacket and practical boots, with gray hair cut short and a face that was well-weathered in a way that suggested outdoor work rather than hard living. She did not look surprised to see Mirela. She looked, if anything, faintly resigned.
|
||||
|
||||
"You're from the Institute," the woman said.
|
||||
|
||||
Mirela blinked. "How did you know?"
|
||||
|
||||
"You came four times before you came in." The woman pulled off her gardening gloves. "That's an Institute approach. You document before you engage. Very methodical."
|
||||
|
||||
"I'm sorry — I wasn't trying to be strange about it."
|
||||
|
||||
"No, it's fine." The woman gestured at the bench. "Sit down if you want. I'll make tea. I usually have tea around this time."
|
||||
|
||||
Her name was Sofija. She had been maintaining the garden for eleven years. Before her, her mother had kept it for thirty years, and before that, someone else, and before that, someone else again. She didn't know how far back it went. The documents — and there were documents, a battered ledger kept in a waterproof box in the shed — went back to 1961, but the wall itself was older than that.
|
||||
|
||||
"It's not on any map," Mirela said, wrapping both hands around her tea mug.
|
||||
|
||||
"No," Sofija agreed.
|
||||
|
||||
"How?"
|
||||
|
||||
Sofija looked at her with an expression that was patient and just slightly amused. "You work at the Institute. You know how maps work. Someone has to make the decision to put something on them."
|
||||
|
||||
"But someone also has to make the decision not to."
|
||||
|
||||
"Yes." Sofija looked out at the garden, at the raised beds, at the bare-branched shrubs. "That's the harder thing to do, actually. It's much easier to put things on maps than to keep them off. Things want to be recorded. Data accumulates. You have to be very deliberate about absence."
|
||||
|
||||
Mirela thought about the stamp on her note. REVIEWED — NO ACTION REQUIRED. Someone at the Institute knew. Someone had always known, and had made the decision, generation after generation of bureaucratic review, to keep making the stamp.
|
||||
|
||||
"Why?" she asked.
|
||||
|
||||
Sofija was quiet for a moment, watching a sparrow land on the edge of one of the raised beds, peck at something, and fly away.
|
||||
|
||||
"There used to be more of them," she said finally. "Gardens like this. Places that weren't on any record. Not hidden, exactly — just unregistered. Unmapped. The city grew up around them and most of them got absorbed eventually, got assigned parcel numbers and sold and built over. This one is the last one I know of." She paused. "Maybe there are others I don't know about."
|
||||
|
||||
"What happens to it? When—" Mirela hesitated. "When you can't take care of it anymore."
|
||||
|
||||
"I'll find someone," Sofija said simply. "Someone who understands what it is. Someone who won't ask to have it registered." She looked at Mirela steadily. "What are you going to do?"
|
||||
|
||||
Mirela thought about the note she had written. About the stamp. About the job she had taken because the salary was decent and the building had good light, and about all the maps on all the walls in all the hallways, every blank space eventually filled in by someone with a pencil and a need to make things legible.
|
||||
|
||||
"Nothing," she said.
|
||||
|
||||
Sofija nodded, as if this was the answer she had expected, or the answer she had hoped for, or both.
|
||||
|
||||
"Drink your tea," she said. "It'll get cold."
|
||||
|
||||
---
|
||||
|
||||
That winter Mirela learned which vegetables grew well in raised beds in partial shade. She learned how to prune shrubs for winter dormancy, how to amend clay-heavy soil with grit, when to water and when not to. She learned to read the sky the way that gardeners do, with attention to the quality of light rather than its presence or absence.
|
||||
|
||||
She never wrote up a second report. She never mentioned the garden to anyone at the Institute. Sometimes, reviewing data, she would come across something that looked like another absence — a gap in the records, a lot with no number, a space that didn't officially exist — and she would make a note on a piece of paper and put it in her jacket pocket and take the long way home.
|
||||
|
||||
Some of them were just data errors. Most of them were just data errors.
|
||||
|
||||
But not all of them.
|
||||
|
||||
The world, it turned out, was full of blank spaces. You just had to know how to look for them, and then you had to know what to do when you found them: which was, most of the time, nothing at all. Just stand there. Just see it. Just let it be a thing that exists outside of any record, tended by someone who understands that not everything that matters needs to be on the map.
|
||||
|
||||
That is its own kind of cartography, Mirela thought. The careful mapping of what not to map.
|
||||
|
||||
She thought it was probably the most important kind.
|
||||
1
mc_kuwahara_shader/final.fsh.settings
Normal file
@@ -0,0 +1 @@
|
||||
shadowmap=false
|
||||
3
mc_kuwahara_shader/shaders.properties
Normal file
@@ -0,0 +1,3 @@
|
||||
separateAo=true
|
||||
shadowMapResolution=0
|
||||
generateShadowMap=false
|
||||
59
mc_kuwahara_shader/shaders/final.fsh
Normal file
@@ -0,0 +1,59 @@
|
||||
#version 150
|
||||
|
||||
uniform float viewWidth;
|
||||
uniform float viewHeight;
|
||||
uniform sampler2D colortex0;
|
||||
|
||||
in vec2 texCoord;
|
||||
out vec4 fragColor;
|
||||
|
||||
// Tune these to trade quality vs performance:
|
||||
// RADIUS 36, STEP 1 → 5476 samples/pixel (original, ~9fps)
|
||||
// RADIUS 36, STEP 3 → 676 samples/pixel (~8x faster)
|
||||
// RADIUS 36, STEP 4 → 400 samples/pixel (~14x faster)
|
||||
// RADIUS 16, STEP 2 → 324 samples/pixel (smaller brush, fast)
|
||||
#define RADIUS 36
|
||||
#define STEP 1
|
||||
|
||||
vec3 kuwahara_region(vec2 uv, vec2 ts, int x0, int x1, int y0, int y1, out float outVariance) {
|
||||
vec3 colorSum = vec3(0.0);
|
||||
float lumaSum = 0.0;
|
||||
float lumaSqSum = 0.0;
|
||||
float count = 0.0;
|
||||
|
||||
for (int i = x0; i <= x1; i += STEP) {
|
||||
for (int j = y0; j <= y1; j += STEP) {
|
||||
vec3 c = texture(colortex0, uv + vec2(float(i), float(j)) * ts).rgb;
|
||||
float luma = dot(c, vec3(0.299, 0.587, 0.114));
|
||||
colorSum += c;
|
||||
lumaSum += luma;
|
||||
lumaSqSum += luma * luma;
|
||||
count += 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
vec3 mean = colorSum / count;
|
||||
float meanLuma = lumaSum / count;
|
||||
float variance = (lumaSqSum / count) - (meanLuma * meanLuma);
|
||||
outVariance = variance * variance; // square for harder selection
|
||||
return mean;
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 ts = vec2(1.0 / viewWidth, 1.0 / viewHeight);
|
||||
|
||||
float v_tr, v_tl, v_bl, v_br;
|
||||
vec3 mean_tr = kuwahara_region(texCoord, ts, 0, RADIUS, 0, RADIUS, v_tr);
|
||||
vec3 mean_tl = kuwahara_region(texCoord, ts, -RADIUS, 0, 0, RADIUS, v_tl);
|
||||
vec3 mean_bl = kuwahara_region(texCoord, ts, -RADIUS, 0, -RADIUS, 0, v_bl);
|
||||
vec3 mean_br = kuwahara_region(texCoord, ts, 0, RADIUS, -RADIUS, 0, v_br);
|
||||
|
||||
vec3 finalColor = mean_tr;
|
||||
float minVar = v_tr;
|
||||
|
||||
if (v_tl < minVar) { minVar = v_tl; finalColor = mean_tl; }
|
||||
if (v_bl < minVar) { minVar = v_bl; finalColor = mean_bl; }
|
||||
if (v_br < minVar) { minVar = v_br; finalColor = mean_br; }
|
||||
|
||||
fragColor = vec4(finalColor, 1.0);
|
||||
}
|
||||
11
mc_kuwahara_shader/shaders/final.vsh
Normal file
@@ -0,0 +1,11 @@
|
||||
#version 150
|
||||
|
||||
in vec3 vaPosition;
|
||||
in vec2 vaUV0;
|
||||
|
||||
out vec2 texCoord;
|
||||
|
||||
void main() {
|
||||
gl_Position = vec4(vaPosition.xy * 2.0 - 1.0, 0.0, 1.0);
|
||||
texCoord = vaUV0;
|
||||
}
|
||||
20
mc_kuwahara_shader/shaders/gbuffers_terrain.fsh
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 150
|
||||
|
||||
/* DRAWBUFFERS:0 */
|
||||
|
||||
uniform sampler2D gtexture;
|
||||
uniform sampler2D lightmap;
|
||||
|
||||
in vec2 texCoord;
|
||||
in vec4 tintColor;
|
||||
in vec2 lightCoord;
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
vec4 color = texture(gtexture, texCoord);
|
||||
if (color.a < 0.1) discard;
|
||||
color *= tintColor;
|
||||
color.rgb *= texture(lightmap, lightCoord).rgb;
|
||||
fragColor = color;
|
||||
}
|
||||
21
mc_kuwahara_shader/shaders/gbuffers_terrain.vsh
Normal file
@@ -0,0 +1,21 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 modelViewMatrix;
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform vec3 chunkOffset;
|
||||
|
||||
in vec3 vaPosition;
|
||||
in vec4 vaColor;
|
||||
in vec2 vaUV0;
|
||||
in ivec2 vaUV2;
|
||||
|
||||
out vec2 texCoord;
|
||||
out vec4 tintColor;
|
||||
out vec2 lightCoord;
|
||||
|
||||
void main() {
|
||||
gl_Position = projectionMatrix * modelViewMatrix * vec4(vaPosition + chunkOffset, 1.0);
|
||||
texCoord = vaUV0;
|
||||
tintColor = vaColor;
|
||||
lightCoord = vaUV2 / 256.0;
|
||||
}
|
||||
@@ -3,7 +3,72 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<title>Creative Coding Website</title>
|
||||
</head>
|
||||
<body></body>
|
||||
<body>
|
||||
<h1>Rectangles... Just rectangles</h1>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-1/rectangles.html"
|
||||
style="height: 800px"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<h1>Images</h1>
|
||||
<h3>styles (non-interactive):</h3>
|
||||
<div>
|
||||
<iframe src="/Week-2/Pictures/styles.html" style="height: 170px"></iframe>
|
||||
</div>
|
||||
<h3>basic image</h3>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-2/Pictures/image.html"
|
||||
style="height: 815px"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<h3>Image Filter</h3>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-2/Pictures/image-filter.html"
|
||||
style="height: 620px"
|
||||
></iframe>
|
||||
</div>
|
||||
<h3>transformations (non-interactive)</h3>
|
||||
<p>build entirely using p5.js math</p>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-2/Pictures/transformations.html"
|
||||
style="height: 800px"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<h1>Shapes</h1>
|
||||
<h3>interacive Shapes</h3>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-2/Shapes/interactive-shapes.html"
|
||||
style="height: 1400px"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<h3>Bouncing DVD-type shape (non-interactive, but looks cool)</h3>
|
||||
<div>
|
||||
<iframe
|
||||
src="/Week-2/Shapes/moving-shapes.html"
|
||||
style="height: 800px"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<h1>L-system</h1>
|
||||
<div>
|
||||
<iframe src="/Week-4/l-system.html" style="height: 600px"></iframe>
|
||||
</div>
|
||||
<h1>Markov Chain</h1>
|
||||
<p>Reload to regenerate</p>
|
||||
<div>
|
||||
<iframe src="/Week-4/markov-chain.html" style="height: 600px"></iframe>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
11
website/style.css
Normal file
@@ -0,0 +1,11 @@
|
||||
/* Reset body margins and prevent double scrollbars */
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
height: 1400px;
|
||||
border: none;
|
||||
}
|
||||