Compare commits

..

114 Commits

Author SHA1 Message Date
b70bdfb955 Add README 2025-05-21 10:19:08 +02:00
6de586ba01 meta 2025-05-20 17:02:24 +02:00
d0446e680d rename laby to loadingMaze 2024-03-20 16:41:00 +01:00
852394c54c perspective rotation 2024-03-20 16:38:26 +01:00
4717ec0877 loading perspective 2024-03-15 02:47:24 +01:00
9ac5c35c90 rotating loading maze 2024-03-14 21:37:05 +01:00
1fb8296bcd Merge branch 'master' of https://git.malingrey.fr/adrien/daedalus 2024-03-13 03:20:26 +01:00
1b8e4b2676 little fixes 2024-03-13 03:18:35 +01:00
dd8361cf33 - new loading screen
- huge loading time reducing by simplifiying ocean
2024-03-13 02:29:02 +01:00
4f20dce37f loading circle before instructions 2024-02-26 23:59:36 +01:00
eb36acac39 fov 2024-02-24 15:14:35 +01:00
ebe7c41578 use webp textures 2024-02-22 23:18:34 +01:00
97172aedf3 use cdn.jsdelivr.net 2024-02-22 23:16:43 +01:00
6ddf3b2949 use avif to reduce textures size 2024-02-19 15:18:55 +01:00
4722783018 remove hex tiling 2023-11-20 01:44:03 +01:00
96d485aabb format 2023-11-20 00:30:56 +01:00
d53b6a97c9 rename pressedMouseButtons 2023-11-18 16:33:38 +01:00
eb5b39529a combine ao roughness and metalness maps in one file for ground material 2023-11-18 16:31:40 +01:00
af8fdfd30e cleanup 2023-11-18 15:49:36 +01:00
2adbecea71 cleanup 2023-11-18 15:49:35 +01:00
9187d8d9ef Merge pull request 'use three-hex-tiling for ground material' (#1) from hexTiling into master
Reviewed-on: #1
2023-11-18 12:48:30 +01:00
a0b2aa96ad use three-hex-tiling for ground material 2023-11-18 12:45:50 +01:00
cb1b0bb541 import hexTiling 2023-11-18 11:38:19 +01:00
6e51b2f115 fix favicon and click 2023-10-15 09:50:36 +02:00
738e92c16b "you are here" in favicon (idea from Yves) 2023-10-11 20:44:26 +02:00
938160f053 deeper ground 2023-08-09 20:46:26 +02:00
75a173d0af threejs V155 2023-07-30 15:01:43 +02:00
3bb43edcee cursor 2023-07-30 14:32:25 +02:00
b318adb469 learn to swim 2023-07-29 17:46:07 +02:00
cee4d886c0 new texture again 2023-07-28 22:35:12 +02:00
cd313b363c tunning 2023-07-28 19:12:02 +02:00
acca8eb92b use Poly textures 2023-07-28 19:10:13 +02:00
75f70a1bac instancedMesh.count 2023-07-13 21:05:40 +02:00
5a85c0cae2 three v154 2023-07-08 17:41:27 +02:00
3f84ddd8df debug 2023-06-30 02:02:31 +02:00
f95f23562e fix Uncaught TypeError? 2023-06-30 01:45:06 +02:00
8732caef73 rename mazeCollisionner 2023-06-29 22:12:41 +02:00
dde4848101 collisions 2023-06-29 22:07:24 +02:00
2d12cf2a47 fix mal de mer 2023-06-29 22:05:08 +02:00
ba41eb9893 200px loading preogress circle 2023-06-29 22:04:54 +02:00
dd2104648e move on mouse button pressed 2023-06-29 18:14:20 +02:00
bed8224c79 new loading progress circle 2023-06-29 16:45:40 +02:00
cb1e89c732 progressCircle 2023-06-29 00:29:36 +02:00
6079d802f2 loading progress circle 2023-06-28 17:37:52 +02:00
bff47a6bbe material tweaks 2023-06-28 15:25:11 +02:00
7bc2344d32 fix sideGroundMaterial 2023-06-28 08:58:42 +02:00
c8982cb0cb fix sideGroundMaterial 2023-06-28 08:56:47 +02:00
6c9fed62b0 less light 2023-06-28 03:21:32 +02:00
51ac2cf0f0 raft world octree 2023-06-28 03:02:53 +02:00
6b5760ac3f format 2023-06-28 02:51:24 +02:00
960103b162 skybox 2023-06-28 02:48:30 +02:00
e89dcb8937 MeshStandardMaterial 2023-06-28 01:07:52 +02:00
596a227eaf better shadow 2023-06-27 20:02:09 +02:00
4afc42ec2f betterrer collisions 2023-06-27 19:20:54 +02:00
eb3ae6f00c better collisions 2023-06-27 18:50:09 +02:00
f582e68d89 tweaks 2023-06-27 02:41:16 +02:00
4c68d9dc83 raft side material 2023-06-27 02:00:53 +02:00
83d6a84c6f lights 2023-06-27 01:13:41 +02:00
6ae40737d3 larger raft 2023-06-27 00:50:42 +02:00
215e15a945 PBR Materials 2023-06-27 00:44:39 +02:00
be609f4137 less mouse sensibility 2023-06-25 22:28:39 +02:00
b073a7d5da escape restart 2023-06-25 22:22:53 +02:00
8b21e6ce14 renderer.setAnimationLoop(animate) 2023-06-24 00:17:22 +02:00
da93c41e43 renderer.setAnimationLoop 2023-06-23 23:53:22 +02:00
52ced3f0f1 physicallyCorrectLights 2023-06-23 21:03:59 +02:00
4275a9933b module import 2023-06-21 01:58:08 +02:00
9ca6c3a2e9 loading bar 2023-06-21 01:42:31 +02:00
af8befcf72 wall texture 2023-06-19 14:33:05 +02:00
1196e896e3 fix mal de mer 2023-06-19 14:18:23 +02:00
cdadb7d42e remove camera init position 2023-06-13 20:49:26 +02:00
209ffa65d7 move on raft 2023-06-13 19:46:56 +02:00
b4ae6a8426 bump 2023-06-12 23:27:10 +02:00
3541f1d461 console map 2023-06-12 01:06:28 +02:00
b5e64094d1 merge mazeWidth and mazeLength 2023-06-12 01:05:44 +02:00
ced5571a7a shadow again 2023-06-10 21:24:28 +02:00
98c4162263 shadow 2023-06-10 20:28:42 +02:00
f0415b52ed use PointerLockControls lib 2023-06-10 20:08:29 +02:00
28b57c37d5 Gerstner water 2023-06-10 19:58:37 +02:00
72d3afa812 fall at start 2023-06-09 01:43:25 +02:00
9806382955 ground scale 2023-06-09 00:03:06 +02:00
0ccd895b90 move cursor 2023-06-08 01:05:16 +02:00
cb258390ab grab cursor 2023-06-08 01:04:18 +02:00
5e12aea559 format 2023-06-06 17:18:25 +02:00
2075429566 log map, smaller maze 2023-06-06 17:10:19 +02:00
d48500919a sunLight position 2023-06-06 16:54:54 +02:00
74c466cf8d restart link 2023-06-06 00:56:44 +02:00
602629129f message fade out 2023-06-06 00:41:42 +02:00
29a3a3fcc6 message fade out 2023-06-06 00:40:20 +02:00
c85aaf96a8 Gerstner raft 2023-06-05 12:10:48 +02:00
cbcec7e387 simple export 2023-06-05 03:21:15 +02:00
a508a3710f simple import 2023-06-05 03:02:49 +02:00
95c0bcdd10 MazeMesh as module 2023-06-05 01:29:34 +02:00
a2fb3ac772 center maze position 2023-06-05 01:11:07 +02:00
cb18679ab1 pavement 2023-06-04 23:39:25 +02:00
780252e392 dont stop on escaped 2023-06-04 12:31:28 +02:00
df0ea317de mazeGeometry 2023-06-04 03:41:05 +02:00
6244de7429 MazeMesh 2023-06-04 03:13:39 +02:00
a7db52aa27 water alpha 2023-06-04 01:35:02 +02:00
649affc841 shadow 2023-06-04 01:03:43 +02:00
8c263b727f ambiant light 2023-06-04 01:01:43 +02:00
8b10df1102 transparent water!! 2023-06-04 00:57:58 +02:00
3e548a863d less water 2023-06-04 00:45:39 +02:00
0d47b5bbef water rename 2023-06-03 22:05:36 +02:00
69a5e819c2 remove sphere 2023-06-03 21:54:58 +02:00
d012c80a57 no torchLight shadow 2023-06-03 19:49:29 +02:00
eed37b46ac less piano 2023-06-03 18:04:34 +02:00
21c1506c13 shadow, reorg 2023-06-03 18:02:38 +02:00
29053eeaec random start hour 2023-06-03 14:06:13 +02:00
2ba43c03b4 30s sad piano 2023-06-03 02:42:39 +02:00
39b4e939bf sad piano on exit 2023-06-02 21:30:18 +02:00
70dd803ab0 css 2023-06-02 17:01:38 +02:00
d5f6f0baee fr 2023-06-02 02:21:18 +02:00
ee36c2d8fb classier end 2023-06-02 01:53:34 +02:00
57cdea41f9 classier end 2023-06-02 01:53:33 +02:00
70 changed files with 1058 additions and 553 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
textures/old/

74
MazeMesh.js Normal file
View File

@ -0,0 +1,74 @@
import * as THREE from 'three';
export default class MazeMesh extends THREE.InstancedMesh {
constructor( width, length, height, material ) {
super(
new THREE.BoxGeometry( 1, height, 1 ),
material,
width*length - 2
);
this.length = length
this.width = width
this.map = new Array(length).fill().map(() => new Array(width).fill(1))
this.start = new THREE.Vector3(width/2, .1, length/2)
this.exit = new THREE.Vector3(Math.floor(width/2), 0, 1)
this.dig(this.exit)
this.dig(new THREE.Vector3(Math.floor(width/2), 0, 0))
this.build ( this.exit )
let matrix = new THREE.Matrix4()
this.count = 0
this.map.forEach((row, z) => {
row.forEach((isWall, x) => {
if (isWall) {
matrix.setPosition( x + .5 - width/2, 0.5, z + .5 - length/2)
this.setMatrixAt( this.count, matrix );
this.count++
}
})
})
}
dig(position) {
this.map[position.z][position.x] = 0
}
static DIRECTIONS = [
new THREE.Vector3( 0, 0, -1),
new THREE.Vector3( 0, 0, 1),
new THREE.Vector3(-1, 0, 0),
new THREE.Vector3( 1, 0, 0),
]
build(position) {
for (var direction of Array.from(this.constructor.DIRECTIONS).sort(x => .5 - Math.random())) {
var step1 = position.clone().add(direction)
var step2 = step1.clone().add(direction)
if (this.isWall(step2) == 1) {
this.dig(step1)
this.dig(step2)
this.count -= 2
this.build(step2)
}
}
}
isWall(position) {
if (0 <= position.x && position.x < this.width &&
0 <= position.y &&
0 <= position.z && position.z < this.length) {
return this.map[Math.floor(position.z)][Math.floor(position.x)]
} else {
return -1
}
}
collision(position) {
return this.isWall(this.worldToLocal(position))
}
toString() {
return this.map.map(row =>
row.map(isWall => isWall? "██":" ").join("")
).join("\n")
}
}

5
README.md Normal file
View File

@ -0,0 +1,5 @@
# Daedalus
3D Maze Web game made with Three.js library
![screenshot](https://git.malingrey.fr/adrien/daedalus/raw/branch/master/thumbnail.png)

Binary file not shown.

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

View File

@ -2,43 +2,15 @@
header('Content-Type: image/x-icon');
const SIZE = 16;
const WALL = 1;
const GROUND = 0;
$favicon = imagecreatetruecolor(SIZE, SIZE);
$wallColor = imagecolorallocate($favicon, 165, 80, 30);
$groundColor = imagecolorallocate($favicon, 203, 162, 133);
$x = filter_input(INPUT_GET, "x", FILTER_SANITIZE_NUMBER_INT);
$y = filter_input(INPUT_GET, "y", FILTER_SANITIZE_NUMBER_INT);
imagefill($favicon, 0, 0, $wallColor);
$favicon = imagecreatefrombmp("favicon.ico");
$maze = array();
for ($y = 0; $y < SIZE; $y++) {
$maze[$y] = array();
for ($x = 0; $x < SIZE; $x++) {
$maze[$y][$x] = WALL;
}
}
$red = imagecolorallocate($favicon, 255, 0, 0);
imagesetpixel($favicon, $x, $y, $red);
function dig($position) {
global $maze;
global $favicon;
global $groundColor;
$directions = [[0, 1], [0, -1], [1, 0], [-1, 0]];
shuffle($directions);
foreach ($directions as $direction) {
$step1 = [$position[0] + $direction[0], $position[1] + $direction[1]];
$step2 = [$step1[0] + $direction[0], $step1[1] + $direction[1]];
if (0 <= $step2[1] and $step2[1] < SIZE and 0 <= $step2[0] and $step2[0] < SIZE and $maze[$step2[1]][$step2[0]] == WALL) {
$maze[$step1[1]][$step1[0]] = GROUND;
imagesetpixel($favicon, $step1[0], $step1[1], $groundColor);
$maze[$step2[1]][$step2[0]] = GROUND;
imagesetpixel($favicon, $step2[0], $step2[1], $groundColor);
dig($step2);
}
}
}
dig([1, 1]);
imagebmp($favicon);
imagedestroy($favicon);
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

View File

@ -1,29 +1,170 @@
<!DOCTYPE html>
<html lang="en">
<html lang="fr">
<head>
<title>Daedalus</title>
<meta charset=utf-8 />
<title>Daedalus</title>
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="favicon.php"/>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" id="favicon"/>
<meta property="og:title" content="Daedalus"/>
<meta property="og:type" content="game"/>
<meta property="og:url" content="https://adrien.malingrey.fr/jeux/daedalus/"/>
<meta property="og:image" content="https://adrien.malingrey.fr/jeux/daedalus/thumbnail.png"/>
<meta property="og:image:width" content="250"/>
<meta property="og:image:height" content="250"/>
<meta property="og:description" content="Retrouvez la sortie"/>
<meta property="og:locale" content="fr_FR"/>
<meta property="og:site_name" content="adrien.malingrey.fr"/>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="container"></div>
<!-- Import maps polyfill -->
<!-- Remove this when import maps will be widely supported -->
<script async src="https://unpkg.com/es-module-shims@1.6.3/dist/es-module-shims.js"></script>
<script async src="https://cdn.jsdelivr.net/npm/es-module-shims@1.8.3/dist/es-module-shims.min.js"></script>
<script type="importmap">
{
"imports": {
"three": "https://unpkg.com/three@0.152.2/build/three.module.js",
"three/addons/": "https://unpkg.com/three@0.152.2/examples/jsm/"
"three": "https://cdn.jsdelivr.net/npm/three@0.169.0/build/three.module.min.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.169.0/examples/jsm/"
}
}
</script>
<script id="vertexShader" type="x-shader/x-vertex">
uniform mat4 textureMatrix;
uniform float time;
<script type="module" src="main.js"></script>
varying vec4 mirrorCoord;
varying vec4 worldPosition;
#include <common>
#include <fog_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
uniform vec4 waveA;
uniform vec4 waveB;
uniform vec4 waveC;
vec3 GerstnerWave (vec4 wave, vec3 p) {
float steepness = wave.z;
float wavelength = wave.w;
float k = 2.0 * PI / wavelength;
float c = sqrt(9.8 / k);
vec2 d = normalize(wave.xy);
float f = k * (dot(d, p.xy) - c * time);
float a = steepness / k;
return vec3(
d.x * (a * cos(f)),
d.y * (a * cos(f)),
a * sin(f)
);
}
void main() {
mirrorCoord = modelMatrix * vec4( position, 1.0 );
worldPosition = mirrorCoord.xyzw;
mirrorCoord = textureMatrix * mirrorCoord;
vec3 p = position.xyz;
p += GerstnerWave(waveA, position.xyz);
p += GerstnerWave(waveB, position.xyz);
p += GerstnerWave(waveC, position.xyz);
gl_Position = projectionMatrix * modelViewMatrix * vec4( p.x, p.y, p.z, 1.0);
#include <beginnormal_vertex>
#include <defaultnormal_vertex>
#include <logdepthbuf_vertex>
#include <fog_vertex>
#include <shadowmap_vertex>
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
uniform sampler2D mirrorSampler;
uniform float alpha;
uniform float time;
uniform float size;
uniform float distortionScale;
uniform sampler2D normalSampler;
uniform vec3 sunColor;
uniform vec3 sunDirection;
uniform vec3 eye;
uniform vec3 waterColor;
varying vec4 mirrorCoord;
varying vec4 worldPosition;
vec4 getNoise( vec2 uv ) {
vec2 uv0 = ( uv / 103.0 ) + vec2(time / 17.0, time / 29.0);
vec2 uv1 = uv / 107.0-vec2( time / -19.0, time / 31.0 );
vec2 uv2 = uv / vec2( 8907.0, 9803.0 ) + vec2( time / 101.0, time / 97.0 );
vec2 uv3 = uv / vec2( 1091.0, 1027.0 ) - vec2( time / 109.0, time / -113.0 );
vec4 noise = texture2D( normalSampler, uv0 ) +
texture2D( normalSampler, uv1 ) +
texture2D( normalSampler, uv2 ) +
texture2D( normalSampler, uv3 );
return noise * 0.5 - 1.0;
}
void sunLight( const vec3 surfaceNormal, const vec3 eyeDirection, float shiny, float spec, float diffuse, inout vec3 diffuseColor, inout vec3 specularColor ) {
vec3 reflection = normalize( reflect( -sunDirection, surfaceNormal ) );
float direction = max( 0.0, dot( eyeDirection, reflection ) );
specularColor += pow( direction, shiny ) * sunColor * spec;
diffuseColor += max( dot( sunDirection, surfaceNormal ), 0.0 ) * sunColor * diffuse;
}
#include <common>
#include <packing>
#include <bsdfs>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <lights_pars_begin>
#include <shadowmap_pars_fragment>
#include <shadowmask_pars_fragment>
void main() {
#include <logdepthbuf_fragment>
vec4 noise = getNoise( worldPosition.xz * size );
vec3 surfaceNormal = normalize( noise.xzy * vec3( 1.5, 1.0, 1.5 ) );
vec3 diffuseLight = vec3(0.0);
vec3 specularLight = vec3(0.0);
vec3 worldToEye = eye-worldPosition.xyz;
vec3 eyeDirection = normalize( worldToEye );
sunLight( surfaceNormal, eyeDirection, 100.0, 2.0, 0.5, diffuseLight, specularLight );
float distance = length(worldToEye);
vec2 distortion = surfaceNormal.xz * ( 0.001 + 1.0 / distance ) * distortionScale;
vec3 reflectionSample = vec3( texture2D( mirrorSampler, mirrorCoord.xy / mirrorCoord.w + distortion ) );
float theta = max( dot( eyeDirection, surfaceNormal ), 0.0 );
float rf0 = 0.3;
float reflectance = rf0 + ( 1.0 - rf0 ) * pow( ( 1.0 - theta ), 5.0 );
vec3 scatter = max( 0.0, dot( surfaceNormal, eyeDirection ) ) * waterColor;
vec3 albedo = mix( ( sunColor * diffuseLight * 0.3 + scatter ) * getShadowMask(), ( vec3( 0.1 ) + reflectionSample * 0.9 + reflectionSample * specularLight ), reflectance);
vec3 outgoingLight = albedo;
gl_FragColor = vec4( outgoingLight, alpha );
#include <tonemapping_fragment>
#include <fog_fragment>
}
</script>
</head>
<body>
<div id="loading">
<div id="loadingMazeShadow">
<table id="loadingMazeTable"></table>
</div>
<div id="loadingMessage">Construction du labyrinthe : <span id="progress">0</span>%</div>
<div>
Se déplacer : ↑←↓→, ZQSD ou clic<br/>
Sauter : ESPACE<br/>
Regarder : Souris
</div>
</div>
<div id="container"></div>
<span id="message"></span>
<script type="module" src="./main.js"></script>
</body>
</html>

1152
main.js

File diff suppressed because it is too large Load Diff

BIN
snd/ambiance.mp3 Normal file

Binary file not shown.

BIN
snd/waves-and-tears.mp3 Normal file

Binary file not shown.

122
style.css
View File

@ -1,10 +1,114 @@
body {
margin: 0;
background-color: #000;
color: #fff;
font-family: Monospace;
font-size: 13px;
line-height: 24px;
overscroll-behavior: none;
cursor: pointer;
}
margin: 0;
background-color: #041626;
font-size: 1.3em;
overscroll-behavior: none;
cursor: progress;
}
#loading {
width: fit-content;
color: #2c5c88;
font-size: 1.3em;
top: 20vh;
margin: auto;
font-family: sans-serif;
}
#loadingMessage {
margin-bottom: 0.5em;
}
@keyframes perspective {
from {
transform: rotateX(0deg) perspective(0px);
filter: drop-shadow(0px 00px 0px #0f2437);
}
to {
transform: rotateX(40deg) perspective(150px);
filter: drop-shadow(0px 10px 0px #0f2437);
}
}
#loadingMazeShadow {
width: 230px;
height: 230px;
margin-left: auto;
margin-right: auto;
margin-top: 20vh;
margin-bottom: 5vh;
animation: perspective 30s;
}
@keyframes rotation {
from {
transform: rotateZ(0deg);
}
to {
transform: rotateZ(360deg);
}
}
#loadingMazeTable {
border-collapse: collapse;
animation: rotation 60s infinite;
border: none;
}
#loadingMazeTable td {
width: 10px;
height: 10px;
transition: background-color 1s;
border: none;
padding: 0;
}
.wall {
background-color: transparent;
}
.ground {
background-color: #214464;
}
#container {
position: absolute;
z-index: 0;
cursor: move;
}
@keyframes escaped{
0% {
opacity: 0%;
top: 90vh;
}
100% {
opacity: 100%;
top: 30vh;
}
}
#message {
display: none;
position: absolute;
left: 0;
width: 100%;
background: transparent;
justify-content: center;
z-index: 1;
color: gray;
font-family: serif;
}
#message a {
color: inherit;
}
#message.escaped {
display: block;
opacity: 100%;
font-size: 4vh;
text-align: center;
top: 30vh;
animation: escaped 5s;
}

View File

@ -0,0 +1,3 @@
This asset was made with Poly, an AI-generated design asset marketplace that lets you find and create incredibly life-like, detailed, and artistic assets for your next project, in seconds.
Get started for free at https://withpoly.com

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

View File

@ -0,0 +1,23 @@
{
"prompt_text": "cobblestone wall with grass and flowers between rocks",
"patch": {
"ext": "png",
"dtype": "uint8",
"width": 512,
"height": 512,
"url": "https://static-dev.withpoly.com/v3-voronoi/textures/patches/486f8eed-0dfd-4bdc-9dee-3776fc72b1f1.png",
"patch_id": "GVpEsGuQ8S"
},
"seamless_prompt_text": "cobblestone wall with grass and flowers between rocks",
"seamless_patch_scale": 0.98,
"upscale_prompt_text": "cobblestone wall with grass and flowers between rocks",
"upscale_resolution": 4096,
"is_seamless": true,
"pbr_mode": "organic",
"pbr_use_render_as_color": true,
"pbr_generate_normal": true,
"pbr_generate_height": true,
"pbr_generate_ao": true,
"pbr_generate_roughness": true,
"pbr_generate_metallic": false
}

View File

@ -0,0 +1,3 @@
This asset was made with Poly, an AI-generated design asset marketplace that lets you find and create incredibly life-like, detailed, and artistic assets for your next project, in seconds.
Get started for free at https://withpoly.com

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@ -0,0 +1,23 @@
{
"prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
"patch": {
"ext": "png",
"dtype": "uint8",
"width": 512,
"height": 512,
"url": "https://static-dev.withpoly.com/v3-voronoi/textures/patches/0ddfc901-a5dd-40f0-993b-8de3ccefb7f7.png",
"patch_id": "a79eceALs5"
},
"seamless_prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
"seamless_patch_scale": 0.8,
"upscale_prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
"upscale_resolution": 4096,
"is_seamless": true,
"pbr_mode": "matte",
"pbr_generate_color": true,
"pbr_generate_normal": true,
"pbr_generate_height": true,
"pbr_generate_ao": true,
"pbr_generate_roughness": true,
"pbr_generate_metallic": false
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

BIN
textures/waternormals.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB