webGL 2 Julia 3D Fractal
Created
September 4, 2024 04:42
-
-
Save awakeningspirit/3c0f33b998773ab15e0341e1ba7ef90a to your computer and use it in GitHub Desktop.
"The Marvelous Julia"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html lang="fr"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>The Marvelous Julia</title> | |
</head> | |
<body> | |
<canvas id="juliaSetCanvas"></canvas> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const _0x471913 = _0x2572; | |
(function (_0x101ff1, _0x384382) { | |
const _0x59e9a1 = _0x2572, | |
_0x388bde = _0x101ff1(); | |
while (!![]) { | |
try { | |
const _0x16e07c = | |
parseInt(_0x59e9a1(0x1e2)) / 0x1 + | |
(parseInt(_0x59e9a1(0x1cd)) / 0x2) * (parseInt(_0x59e9a1(0x1db)) / 0x3) + | |
(parseInt(_0x59e9a1(0x1ec)) / 0x4) * (-parseInt(_0x59e9a1(0x1bc)) / 0x5) + | |
parseInt(_0x59e9a1(0x1c7)) / 0x6 + | |
-parseInt(_0x59e9a1(0x1e1)) / 0x7 + | |
-parseInt(_0x59e9a1(0x1cf)) / 0x8 + | |
parseInt(_0x59e9a1(0x1c8)) / 0x9; | |
if (_0x16e07c === _0x384382) break; | |
else _0x388bde["push"](_0x388bde["shift"]()); | |
} catch (_0x50f832) { | |
_0x388bde["push"](_0x388bde["shift"]()); | |
} | |
} | |
})(_0x45d1, 0xe306a); | |
const canvas = document["getElementById"](_0x471913(0x1c6)), | |
gl = canvas[_0x471913(0x1ea)](_0x471913(0x1e6)); | |
function _0x2572(_0xb98484, _0x56e0fc) { | |
const _0x45d141 = _0x45d1(); | |
return ( | |
(_0x2572 = function (_0x257264, _0x65795b) { | |
_0x257264 = _0x257264 - 0x1ba; | |
let _0x4359a1 = _0x45d141[_0x257264]; | |
return _0x4359a1; | |
}), | |
_0x2572(_0xb98484, _0x56e0fc) | |
); | |
} | |
!gl ? alert(_0x471913(0x1c3)) : initWebGL(); | |
function initWebGL() { | |
const _0x4d757a = _0x471913, | |
_0x340beb = _0x4d757a(0x1eb), | |
_0x526c74 = _0x4d757a(0x1dc); | |
function _0x4c7045(_0x1a3cad, _0x1bd77e, _0x2990ab) { | |
const _0x59b851 = _0x4d757a, | |
_0x545fb0 = _0x1a3cad["createShader"](_0x1bd77e); | |
_0x1a3cad[_0x59b851(0x1e0)](_0x545fb0, _0x2990ab), | |
_0x1a3cad[_0x59b851(0x1c5)](_0x545fb0); | |
if (!_0x1a3cad["getShaderParameter"](_0x545fb0, _0x1a3cad[_0x59b851(0x1df)])) | |
return ( | |
console["error"](_0x59b851(0x1d5), _0x1a3cad[_0x59b851(0x1d3)](_0x545fb0)), | |
_0x1a3cad["deleteShader"](_0x545fb0), | |
null | |
); | |
return _0x545fb0; | |
} | |
const _0x404650 = _0x4c7045(gl, gl[_0x4d757a(0x1d1)], _0x340beb), | |
_0x2e4a3e = _0x4c7045(gl, gl[_0x4d757a(0x1d2)], _0x526c74); | |
if (!_0x404650 || !_0x2e4a3e) { | |
console[_0x4d757a(0x1bb)](_0x4d757a(0x1ba)); | |
return; | |
} | |
const _0x37d4d9 = gl["createProgram"](); | |
gl[_0x4d757a(0x1be)](_0x37d4d9, _0x404650), | |
gl["attachShader"](_0x37d4d9, _0x2e4a3e), | |
gl[_0x4d757a(0x1bf)](_0x37d4d9); | |
if (!gl[_0x4d757a(0x1c4)](_0x37d4d9, gl[_0x4d757a(0x1e7)])) { | |
console[_0x4d757a(0x1bb)]( | |
"Program\x20link\x20error:", | |
gl["getProgramInfoLog"](_0x37d4d9) | |
); | |
return; | |
} | |
const _0x556d38 = gl[_0x4d757a(0x1d0)](_0x37d4d9, _0x4d757a(0x1d9)), | |
_0x8dcbaa = gl[_0x4d757a(0x1bd)](_0x37d4d9, _0x4d757a(0x1de)), | |
_0x1d17cc = gl[_0x4d757a(0x1bd)](_0x37d4d9, "resolution"), | |
_0x4d42d9 = gl[_0x4d757a(0x1d7)](); | |
gl[_0x4d757a(0x1e9)](gl[_0x4d757a(0x1d6)], _0x4d42d9); | |
const _0x319298 = [-0x1, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, 0x1]; | |
gl[_0x4d757a(0x1cb)]( | |
gl[_0x4d757a(0x1d6)], | |
new Float32Array(_0x319298), | |
gl["STATIC_DRAW"] | |
); | |
function _0x42a975() { | |
const _0x3e7d81 = _0x4d757a; | |
(canvas[_0x3e7d81(0x1c1)] = window["innerWidth"] * window[_0x3e7d81(0x1c2)]), | |
(canvas["height"] = window[_0x3e7d81(0x1e8)] * window[_0x3e7d81(0x1c2)]), | |
gl[_0x3e7d81(0x1ca)]( | |
0x0, | |
0x0, | |
canvas[_0x3e7d81(0x1c1)], | |
canvas[_0x3e7d81(0x1c0)] | |
); | |
} | |
window[_0x4d757a(0x1e5)](_0x4d757a(0x1d8), _0x42a975), _0x42a975(); | |
function _0x503a37(_0x5eb557) { | |
const _0x55733d = _0x4d757a; | |
(_0x5eb557 *= 0.001), | |
gl[_0x55733d(0x1d4)](0x0, 0x0, 0x0, 0x1), | |
gl[_0x55733d(0x1c9)](gl[_0x55733d(0x1cc)]), | |
gl[_0x55733d(0x1ce)](_0x37d4d9), | |
gl[_0x55733d(0x1e9)](gl[_0x55733d(0x1d6)], _0x4d42d9), | |
gl["enableVertexAttribArray"](_0x556d38), | |
gl["vertexAttribPointer"]( | |
_0x556d38, | |
0x2, | |
gl[_0x55733d(0x1da)], | |
![], | |
0x0, | |
0x0 | |
), | |
gl[_0x55733d(0x1e4)](_0x8dcbaa, _0x5eb557), | |
gl[_0x55733d(0x1dd)](_0x1d17cc, canvas[_0x55733d(0x1c1)], canvas["height"]), | |
gl[_0x55733d(0x1e3)](gl["TRIANGLE_STRIP"], 0x0, 0x4), | |
requestAnimationFrame(_0x503a37); | |
} | |
requestAnimationFrame(_0x503a37); | |
} | |
function _0x45d1() { | |
const _0x3a6141 = [ | |
"COLOR_BUFFER_BIT", | |
"1308854SEUhmn", | |
"useProgram", | |
"11694104zeTRIE", | |
"getAttribLocation", | |
"VERTEX_SHADER", | |
"FRAGMENT_SHADER", | |
"getShaderInfoLog", | |
"clearColor", | |
"Shader\x20compile\x20error:", | |
"ARRAY_BUFFER", | |
"createBuffer", | |
"resize", | |
"position", | |
"FLOAT", | |
"3ihSxsG", | |
"#version\x20300\x20es\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20precision\x20highp\x20float;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20out\x20vec4\x20fragColor;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uniform\x20float\x20time;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uniform\x20vec2\x20resolution;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20int\x20MAX_ITERATIONS\x20=\x20128;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20float\x20EPSILON\x20=\x200.0001;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20float\x20STEP_SIZE\x20=\x200.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20float\x20MIN_DISTANCE\x20=\x200.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20float\x20MAX_DISTANCE\x20=\x2020.0;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20rotate(vec3\x20p,\x20float\x20angle,\x20vec3\x20axis)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20a\x20=\x20normalize(axis);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20s\x20=\x20sin(angle);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20c\x20=\x20cos(angle);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20r\x20=\x201.0\x20-\x20c;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mat3\x20m\x20=\x20mat3(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20a.x\x20*\x20a.x\x20*\x20r\x20+\x20c,\x20a.y\x20*\x20a.x\x20*\x20r\x20+\x20a.z\x20*\x20s,\x20a.z\x20*\x20a.x\x20*\x20r\x20-\x20a.y\x20*\x20s,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20a.x\x20*\x20a.y\x20*\x20r\x20-\x20a.z\x20*\x20s,\x20a.y\x20*\x20a.y\x20*\x20r\x20+\x20c,\x20a.z\x20*\x20a.y\x20*\x20r\x20+\x20a.x\x20*\x20s,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20a.x\x20*\x20a.z\x20*\x20r\x20+\x20a.y\x20*\x20s,\x20a.y\x20*\x20a.z\x20*\x20r\x20-\x20a.x\x20*\x20s,\x20a.z\x20*\x20a.z\x20*\x20r\x20+\x20c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20m\x20*\x20p;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20juliaDE(vec3\x20pos,\x20vec4\x20c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20z\x20=\x20vec4(pos,\x200.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20md2\x20=\x201.0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20mz2\x20=\x20dot(z,\x20z);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20MAX_ITERATIONS;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20md2\x20*=\x204.0\x20*\x20mz2;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z\x20=\x20vec4(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z.x\x20*\x20z.x\x20-\x20z.y\x20*\x20z.y\x20-\x20z.z\x20*\x20z.z\x20-\x20z.w\x20*\x20z.w,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x202.0\x20*\x20z.x\x20*\x20z.y,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x202.0\x20*\x20z.x\x20*\x20z.z,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x202.0\x20*\x20z.x\x20*\x20z.w\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x20+\x20c;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mz2\x20=\x20dot(z,\x20z);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(mz2\x20>\x204.0)\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x200.25\x20*\x20sqrt(mz2\x20/\x20md2)\x20*\x20log(mz2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20estimateNormal(vec3\x20p,\x20vec4\x20c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20e\x20=\x20vec2(EPSILON,\x200.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20normalize(vec3(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20juliaDE(p\x20+\x20e.xyy,\x20c)\x20-\x20juliaDE(p\x20-\x20e.xyy,\x20c),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20juliaDE(p\x20+\x20e.yxy,\x20c)\x20-\x20juliaDE(p\x20-\x20e.yxy,\x20c),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20juliaDE(p\x20+\x20e.yyx,\x20c)\x20-\x20juliaDE(p\x20-\x20e.yyx,\x20c)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20render(vec3\x20ro,\x20vec3\x20rd,\x20vec4\x20c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20t\x20=\x20MIN_DISTANCE;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(int\x20i\x20=\x200;\x20i\x20<\x20MAX_ITERATIONS;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20p\x20=\x20ro\x20+\x20rd\x20*\x20t;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20d\x20=\x20juliaDE(p,\x20c);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(d\x20<\x20EPSILON\x20*\x20t\x20||\x20t\x20>\x20MAX_DISTANCE)\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20t\x20+=\x20d\x20*\x20STEP_SIZE;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(t\x20<\x20MAX_DISTANCE)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20p\x20=\x20ro\x20+\x20rd\x20*\x20t;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20normal\x20=\x20estimateNormal(p,\x20c);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20lightDir\x20=\x20normalize(vec3(1.0,\x201.0,\x20-1.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20diff\x20=\x20max(dot(normal,\x20lightDir),\x200.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20amb\x20=\x200.1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20float\x20spec\x20=\x20pow(max(dot(reflect(-lightDir,\x20normal),\x20-rd),\x200.0),\x2032.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20albedo\x20=\x200.5\x20+\x200.5\x20*\x20cos(6.28318\x20*\x20(vec3(0.0,\x200.33,\x200.67)\x20+\x200.3\x20*\x20normal.z\x20+\x200.1\x20*\x20vec3(time)));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20albedo\x20*\x20(amb\x20+\x20diff)\x20+\x20spec\x20*\x20vec3(0.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3(0.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20void\x20main()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec2\x20uv\x20=\x20(gl_FragCoord.xy\x20-\x200.5\x20*\x20resolution.xy)\x20/\x20resolution.y;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20ro\x20=\x20vec3(0.0,\x200.0,\x20-3.5);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20rd\x20=\x20normalize(vec3(uv,\x201.0));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ro\x20=\x20rotate(ro,\x20time\x20*\x200.3,\x20vec3(0.0,\x201.0,\x200.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rd\x20=\x20rotate(rd,\x20time\x20*\x200.3,\x20vec3(0.0,\x201.0,\x200.0));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20c\x20=\x200.7\x20*\x20vec4(cos(time\x20*\x200.4),\x20sin(time\x20*\x200.3),\x20cos(time\x20*\x200.2),\x20sin(time\x20*\x200.1));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3\x20color\x20=\x20render(ro,\x20rd,\x20c);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fragColor\x20=\x20vec4(color,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}", | |
"uniform2f", | |
"time", | |
"COMPILE_STATUS", | |
"shaderSource", | |
"333921NrInkq", | |
"504752WZxJgL", | |
"drawArrays", | |
"uniform1f", | |
"addEventListener", | |
"webgl2", | |
"LINK_STATUS", | |
"innerHeight", | |
"bindBuffer", | |
"getContext", | |
"#version\x20300\x20es\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in\x20vec4\x20position;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20void\x20main()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20position;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}", | |
"17148BPmcBu", | |
"Shader\x20creation\x20failed", | |
"error", | |
"30qhWcLz", | |
"getUniformLocation", | |
"attachShader", | |
"linkProgram", | |
"height", | |
"width", | |
"devicePixelRatio", | |
"WebGL\x202\x20not\x20supported", | |
"getProgramParameter", | |
"compileShader", | |
"juliaSetCanvas", | |
"7106472zfJwqJ", | |
"1093455SWhYAw", | |
"clear", | |
"viewport", | |
"bufferData" | |
]; | |
_0x45d1 = function () { | |
return _0x3a6141; | |
}; | |
return _0x45d1(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body, | |
html { | |
margin: 0; | |
padding: 0; | |
overflow: hidden; | |
} | |
canvas { | |
width: 100%; | |
height: 100%; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment