|
1612 | 1612 | d = abs(vWorldPos.z - distance2);
|
1613 | 1613 | }
|
1614 | 1614 |
|
1615 |
| - gl_FragColor = vec4(0.11055276381909548, 0.27638190954773867, 0.4103852596314908, 1.0) * (4.0 - pow(d, 3.0)) * 0.5; |
1616 |
| - // gl_FragColor = max(gl_FragColor, vec4(0.2)); |
| 1615 | + gl_FragColor = vec4(0.11055276381909548, 0.27638190954773867, 0.4103852596314908, 1.0) * (4.0 - pow(d, 3.0)) * 0.5; // 0x42a5f5 |
| 1616 | + // gl_FragColor = max(gl_FragCoor, vec4(0.2)); |
1617 | 1617 | if (gl_FragColor.a >= 1.9) {
|
1618 | 1618 | gl_FragColor.rgb *= 3.0;
|
1619 | 1619 | } else if (gl_FragColor.a <= 0.1) {
|
|
1622 | 1622 | }
|
1623 | 1623 | `;
|
1624 | 1624 | const material = new THREE.ShaderMaterial({
|
1625 |
| - // color: 0x42a5f5, |
1626 | 1625 | uniforms: {
|
1627 | 1626 | uTime: {
|
1628 | 1627 | type: 'f',
|
|
1638 | 1637 | })();
|
1639 | 1638 | scene.add(gridMesh);
|
1640 | 1639 |
|
| 1640 | +const roomMesh = (() => { |
| 1641 | + const geometry = new THREE.BoxBufferGeometry(16, 8, 16).applyMatrix(new THREE.Matrix4().makeTranslation(0, 8/2, 0)); |
| 1642 | + const uvs = geometry.attributes.uv.array; |
| 1643 | + for (let i = 0; i < uvs.length; i += 2) { |
| 1644 | + uvs[i+0] *= 8; |
| 1645 | + uvs[i+1] *= 8; |
| 1646 | + } |
| 1647 | + const roomVsh = ` |
| 1648 | + // varying vec3 vWorldPos; |
| 1649 | + varying vec2 vUv; |
| 1650 | + void main() { |
| 1651 | + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.); |
| 1652 | + vUv = uv; |
| 1653 | + // vWorldPos = abs(position); |
| 1654 | + } |
| 1655 | + `; |
| 1656 | + const roomFsh = ` |
| 1657 | + // uniform sampler2D uTex; |
| 1658 | + uniform vec3 uColor; |
| 1659 | + varying vec3 vWorldPos; |
| 1660 | + varying vec2 vUv; |
| 1661 | + void main() { |
| 1662 | + vec2 uv = fract(vUv); |
| 1663 | + /* float diff = uv.x; |
| 1664 | + diff = min(diff, abs(uv.x - 1.0)); |
| 1665 | + diff = min(diff, uv.y); |
| 1666 | + diff = min(diff, abs(uv.y - 1.0)); |
| 1667 | + if (diff <= 0.01) { */ |
| 1668 | + if ((uv.x <= 0.01 || uv.x >= 0.99) || (uv.y <= 0.01 || uv.y >= 0.99)) { |
| 1669 | + // gl_FragColor = vec4(uColor * (1.0 - min(diff/0.02, 1.0)), 0.5); |
| 1670 | + gl_FragColor = vec4(uColor, 0.5); |
| 1671 | + // } else if (abs(abs(uv.x - 0.5) - abs(uv.y - 0.5)) <= 0.01) { |
| 1672 | + } else if (abs(uv.x - uv.y) <= 0.01) { |
| 1673 | + gl_FragColor = vec4(0.2, 0.2, 0.2, 0.5); |
| 1674 | + } else { |
| 1675 | + gl_FragColor = vec4(0.1, 0.1, 0.1, 0.5); |
| 1676 | + } |
| 1677 | + } |
| 1678 | + `; |
| 1679 | + const material = new THREE.ShaderMaterial({ |
| 1680 | + uniforms: { |
| 1681 | + uColor: { |
| 1682 | + type: 'c', |
| 1683 | + value: new THREE.Color(0xffee58), |
| 1684 | + }, |
| 1685 | + }, |
| 1686 | + vertexShader: roomVsh, |
| 1687 | + fragmentShader: roomFsh, |
| 1688 | + side: THREE.DoubleSide, |
| 1689 | + transparent: true, |
| 1690 | + }); |
| 1691 | + const mesh = new THREE.Mesh(geometry, material); |
| 1692 | + return mesh; |
| 1693 | +})(); |
| 1694 | +scene.add(roomMesh); |
| 1695 | + |
1641 | 1696 | // rig
|
1642 | 1697 |
|
1643 | 1698 | let focusedTab = null;
|
|
0 commit comments