add
This commit is contained in:
76
README.md
76
README.md
@@ -1,75 +1,37 @@
|
|||||||
|
<div align="center">
|
||||||
|
|
||||||
# 个人樱花引导页
|
# 个人樱花引导页
|
||||||
注意:
|
|
||||||
此源码是基于 [Dimension](https://html5up.net/dimension "Dimension") 的二次修改
|
|
||||||
|
|
||||||
Demo 1:[https://nianbroken.github.io/Personal_Sakura_Guide_Page/](https://nianbroken.github.io/Personal_Sakura_Guide_Page/ "https://nianbroken.github.io/Personal_Sakura_Guide_Page/")
|
<img src="https://blog.nianbroken.top/NianBrokenStorage/FileStorage/7/03.png" alt="主界面" style="zoom:35%;" />
|
||||||
|
|
||||||
Demo 2:[https://www.nianbroken.top/](https://www.nianbroken.top/ "https://www.nianbroken.top/")
|
</div>
|
||||||
|
|
||||||
------------
|
## 预览
|
||||||
|
|
||||||
### 更新日志:
|
- [https://nianbroken.github.io/Personal_Sakura_Guide_Page/](https://nianbroken.github.io/Personal_Sakura_Guide_Page/)
|
||||||
|
|
||||||
#### 1.2 - 2022年1月30日
|
---
|
||||||
|
|
||||||
- 更正错别字“途径”→“途经”(她只是**途经**我留下了星火 而我却任凭它焚烧了我整个荒原)
|
## 配置修改
|
||||||
- 修复页面中头像周围出现两个圆框
|
|
||||||
- 新增版权信息的年份支持自动更新
|
|
||||||
- 底部新增一条文案
|
|
||||||
- 修复其他Bug
|
|
||||||
|
|
||||||
|
收款码:`money_receiving_QR_code` → `index.html`
|
||||||
|
|
||||||
|
## 许可证
|
||||||
|
|
||||||
#### 1.1 - 2021年7月21日
|
`Copyright © 2022 NianBroken. All rights reserved.`
|
||||||
|
|
||||||
- 修复 **Svg 无法显示** 的问题
|
本项目采用 [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) 许可证。简而言之,你可以自由使用、修改和分享本项目的代码,但前提是在其衍生作品中必须保留原始许可证和版权信息,并且必须以相同的许可证发布所有修改过的代码。
|
||||||
- 增加 **Meta Description** 优化SEO
|
|
||||||
- 增加 **图像的 Alt 属性** 优化SEO
|
|
||||||
- 增加 **Meta Language 标记** 优化SEO
|
|
||||||
- 增加 **万能收款码** (需自行修改 `\money_receiving_QR_code\index.html` 相关参数)
|
|
||||||
- 此版本可通过Bing、Google搜索引擎的质量检查
|
|
||||||
|
|
||||||
------------
|
## 特别感谢
|
||||||
|
|
||||||
### 修改内容:
|
- [dimension](https://html5up.net/dimension)
|
||||||
|
|
||||||
1. 将页面内头像改为本地头像
|
- [fwxiaohan](fwxiaohan.github.io)
|
||||||
2. 将原本的背景替换为动态樱花背景(参考自 [fwxiaohan.github.io](https://github.com/fwxiaohan/fwxiaohan.github.io "fwxiaohan.github.io") )
|
|
||||||
3. 去除`<li>`标签的锚点链接,改为文本链接
|
|
||||||
4. 去除超链接下方的横线
|
|
||||||
|
|
||||||
main.css内的
|
## 最便宜的 VPN
|
||||||
|
|
||||||
```css
|
[https://nianbroken.github.io/Great-Firewall/](https://nianbroken.github.io/Great-Firewall/)
|
||||||
border-bottom: dotted 1px rgba(255, 255, 255, 0.5);
|
|
||||||
```
|
|
||||||
|
|
||||||
5. 去除页面中间的黑色块块
|
## 其他
|
||||||
|
|
||||||
main.css内的
|
欢迎提交 `Issues` 和 `Pull requests`
|
||||||
|
|
||||||
```css
|
|
||||||
background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%);
|
|
||||||
background-image: radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%);
|
|
||||||
```
|
|
||||||
|
|
||||||
6. 增加显示访问者IP地址(调用 [https://pv.sohu.com/cityjson?ie=utf-8](https://pv.sohu.com/cityjson?ie=utf-8 "https://pv.sohu.com/cityjson?ie=utf-8") 接口)
|
|
||||||
|
|
||||||
------------
|
|
||||||
|
|
||||||
### Dimension与个人樱花引导页的对比:
|
|
||||||
|
|
||||||
> #### Dimension
|
|
||||||
>
|
|
||||||
> [](https://html5up.net/dimension "Dimension")
|
|
||||||
|
|
||||||
|
|
||||||
> #### 个人樱花引导页
|
|
||||||
>
|
|
||||||
> 静态图
|
|
||||||
> [](https://www.nianbroken.top/ "碎念个人樱花引导页静态图")
|
|
||||||
|
|
||||||
> 动态图
|
|
||||||
> [](https://www.nianbroken.top/ "碎念个人樱花引导页动态图")
|
|
||||||
|
|
||||||
由于Gif较大,可能加载不出来或加载比较慢,建议直接点击图片跳转至演示站查看。
|
|
||||||
|
|||||||
195
index.html
195
index.html
@@ -28,10 +28,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li> <a target="_blank" href="http://blog.nianbroken.top/">碎念博客</a></li>
|
<li><a target="_blank" href="https://eugnaa.eu-gov.eu.org/">EUGNAA</a></li>
|
||||||
<li> <a target="_blank" href="http://rane.nianbroken.top/">燃鹅助手</a></li>
|
<li><a target="_blank" href="https://blog.nianbroken.top/">碎念博客</a></li>
|
||||||
<li> <a target="_blank" href="http://baidu.nianbroken.top/">帮你百度</a></li>
|
<li><a target="_blank" href="https://chat.nianbroken.top/">灵巧AI</a></li>
|
||||||
<li> <a target="_blank" href="http://pan.nianbroken.top/">碎念云盘</a></li>
|
<li><a target="_blank" href="https://pan.nianbroken.top/">碎念云盘</a></li>
|
||||||
|
<li><a target="_blank" href="https://url.nianbroken.top/">短链生成</a></li>
|
||||||
|
<li><a target="_blank" href="https://baidu.nianbroken.top/">帮你百度</a></li>
|
||||||
<li><a target="_blank" href="https://fireworks.nianbroken.top/">烟花模拟</a></li>
|
<li><a target="_blank" href="https://fireworks.nianbroken.top/">烟花模拟</a></li>
|
||||||
<!--<li><a href="#elements">Elements</a></li>-->
|
<!--<li><a href="#elements">Elements</a></li>-->
|
||||||
</ul>
|
</ul>
|
||||||
@@ -39,21 +41,26 @@
|
|||||||
</header>
|
</header>
|
||||||
<!-- Footer -->
|
<!-- Footer -->
|
||||||
<footer id="footer">
|
<footer id="footer">
|
||||||
<p class="copyright">您的IP:<script src="https://pv.sohu.com/cityjson?ie=utf-8"></script><script type="text/javascript">document.write(returnCitySN["cip"])</script></p>
|
<p class="copyright">
|
||||||
<p class="copyright"><script>
|
您的IP:
|
||||||
|
<script src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write(returnCitySN["cip"]);
|
||||||
|
</script>
|
||||||
|
</p>
|
||||||
|
<p class="copyright">
|
||||||
|
<script>
|
||||||
var mydate = new Date();
|
var mydate = new Date();
|
||||||
document.writeln("Copyright © 2021 - "+mydate.getFullYear()+' 碎念_Nian<br />All Rights Reserved');</script></p>
|
document.writeln("Copyright © 2021 - " + mydate.getFullYear() + " 碎念_Nian<br />All Rights Reserved");
|
||||||
|
</script>
|
||||||
|
</p>
|
||||||
<p class="copyright">你在阳光下盛放 而我在阴郁的天空下自得其乐</p>
|
<p class="copyright">你在阳光下盛放 而我在阴郁的天空下自得其乐</p>
|
||||||
<p class="copyright"> <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=2971802058&site=qq&menu=yes"> <img src="images\svg\qq.svg" width="30" alt="QQ" title="QQ" /> </a> <a target="_blank" href="mailto:suinian666@gmail.com"> <img src="images\svg\mail.svg" width="30" alt="Mail" title="Mail" /> </a> <a target="_blank" href="/money_receiving_QR_code"> <img src="images\svg\money_receiving_QR_code.svg" width="30" alt="给我打钱" title="给我打钱" /> </a> <a target="_blank" href="https://github.com/nianbroken"> <img src="images\svg\github.svg" width="30" alt="Github" title="Github" /> </a> <a target="_blank" href="https://gitee.com/nianbroken"> <img src="images\svg\gitee.svg" width="30" alt="Gitee" title="Gitee" /> </a> <a target="_blank" href="http://www.coolapk.com/u/1315644"> <img src="images\svg\coolapk.svg" width="30" alt="Coolapk" title="Coolapk" /></a> </p>
|
<p class="copyright">
|
||||||
|
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=2971802058&site=qq&menu=yes"> <img src="images\svg\qq.svg" width="30" alt="QQ" title="QQ" /> </a> <a target="_blank" href="mailto:suinian666@gmail.com"> <img src="images\svg\mail.svg" width="30" alt="Mail" title="Mail" /> </a> <a target="_blank" href="/money_receiving_QR_code"> <img src="images\svg\money_receiving_QR_code.svg" width="30" alt="给我打钱" title="给我打钱" /> </a> <a target="_blank" href="https://github.com/nianbroken"> <img src="images\svg\github.svg" width="30" alt="Github" title="Github" /> </a> <a target="_blank" href="https://gitee.com/nianbroken"> <img src="images\svg\gitee.svg" width="30" alt="Gitee" title="Gitee" /> </a> <a target="_blank" href="http://www.coolapk.com/u/1315644"> <img src="images\svg\coolapk.svg" width="30" alt="Coolapk" title="Coolapk" /></a>
|
||||||
|
</p>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
<canvas id="sakura" style="z-index: 2;
|
<canvas id="sakura" style="z-index: 2; position: fixed; left: 0; top: 0; height: 100vh; width: 100vw"> </canvas>
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
height: 100vh;
|
|
||||||
width: 100vw;">
|
|
||||||
</canvas>
|
|
||||||
<!-- BG -->
|
<!-- BG -->
|
||||||
<!-- <div id="bg"> -->
|
<!-- <div id="bg"> -->
|
||||||
<!-- Scripts -->
|
<!-- Scripts -->
|
||||||
@@ -62,7 +69,12 @@
|
|||||||
<script src="assets/js/breakpoints.min.js"></script>
|
<script src="assets/js/breakpoints.min.js"></script>
|
||||||
<script src="assets/js/util.js"></script>
|
<script src="assets/js/util.js"></script>
|
||||||
<script src="assets/js/main.js"></script>
|
<script src="assets/js/main.js"></script>
|
||||||
<style>canvas { padding:0; margin:0; }</style>
|
<style>
|
||||||
|
canvas {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<!-- sakura shader -->
|
<!-- sakura shader -->
|
||||||
<script id="sakura_point_vsh" type="x-shader/x_vertex">
|
<script id="sakura_point_vsh" type="x-shader/x_vertex">
|
||||||
uniform mat4 uProjection;
|
uniform mat4 uProjection;
|
||||||
@@ -354,7 +366,7 @@ void main(void) {
|
|||||||
var Vector3 = {};
|
var Vector3 = {};
|
||||||
var Matrix44 = {};
|
var Matrix44 = {};
|
||||||
Vector3.create = function (x, y, z) {
|
Vector3.create = function (x, y, z) {
|
||||||
return {'x':x, 'y':y, 'z':z};
|
return { x: x, y: y, z: z };
|
||||||
};
|
};
|
||||||
Vector3.dot = function (v0, v1) {
|
Vector3.dot = function (v0, v1) {
|
||||||
return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;
|
return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;
|
||||||
@@ -378,8 +390,7 @@ Vector3.arrayForm = function(v) {
|
|||||||
v.array[0] = v.x;
|
v.array[0] = v.x;
|
||||||
v.array[1] = v.y;
|
v.array[1] = v.y;
|
||||||
v.array[2] = v.z;
|
v.array[2] = v.z;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
v.array = new Float32Array([v.x, v.y, v.z]);
|
v.array = new Float32Array([v.x, v.y, v.z]);
|
||||||
}
|
}
|
||||||
return v.array;
|
return v.array;
|
||||||
@@ -388,16 +399,16 @@ Matrix44.createIdentity = function () {
|
|||||||
return new Float32Array([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]);
|
return new Float32Array([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]);
|
||||||
};
|
};
|
||||||
Matrix44.loadProjection = function (m, aspect, vdeg, near, far) {
|
Matrix44.loadProjection = function (m, aspect, vdeg, near, far) {
|
||||||
var h = near * Math.tan(vdeg * Math.PI / 180.0 * 0.5) * 2.0;
|
var h = near * Math.tan(((vdeg * Math.PI) / 180.0) * 0.5) * 2.0;
|
||||||
var w = h * aspect;
|
var w = h * aspect;
|
||||||
|
|
||||||
m[0] = 2.0 * near / w;
|
m[0] = (2.0 * near) / w;
|
||||||
m[1] = 0.0;
|
m[1] = 0.0;
|
||||||
m[2] = 0.0;
|
m[2] = 0.0;
|
||||||
m[3] = 0.0;
|
m[3] = 0.0;
|
||||||
|
|
||||||
m[4] = 0.0;
|
m[4] = 0.0;
|
||||||
m[5] = 2.0 * near / h;
|
m[5] = (2.0 * near) / h;
|
||||||
m[6] = 0.0;
|
m[6] = 0.0;
|
||||||
m[7] = 0.0;
|
m[7] = 0.0;
|
||||||
|
|
||||||
@@ -408,7 +419,7 @@ Matrix44.loadProjection = function (m, aspect, vdeg, near, far) {
|
|||||||
|
|
||||||
m[12] = 0.0;
|
m[12] = 0.0;
|
||||||
m[13] = 0.0;
|
m[13] = 0.0;
|
||||||
m[14] = -2.0 * far * near / (far - near);
|
m[14] = (-2.0 * far * near) / (far - near);
|
||||||
m[15] = 0.0;
|
m[15] = 0.0;
|
||||||
};
|
};
|
||||||
Matrix44.loadLookAt = function (m, vpos, vlook, vup) {
|
Matrix44.loadLookAt = function (m, vpos, vlook, vup) {
|
||||||
@@ -444,20 +455,22 @@ Matrix44.loadLookAt = function (m, vpos, vlook, vup) {
|
|||||||
|
|
||||||
//
|
//
|
||||||
var timeInfo = {
|
var timeInfo = {
|
||||||
'start':0, 'prev':0, // Date
|
start: 0,
|
||||||
'delta':0, 'elapsed':0 // Number(sec)
|
prev: 0, // Date
|
||||||
|
delta: 0,
|
||||||
|
elapsed: 0, // Number(sec)
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
var gl;
|
var gl;
|
||||||
var renderSpec = {
|
var renderSpec = {
|
||||||
'width':0,
|
width: 0,
|
||||||
'height':0,
|
height: 0,
|
||||||
'aspect':1,
|
aspect: 1,
|
||||||
'array':new Float32Array(3),
|
array: new Float32Array(3),
|
||||||
'halfWidth':0,
|
halfWidth: 0,
|
||||||
'halfHeight':0,
|
halfHeight: 0,
|
||||||
'halfArray':new Float32Array(3)
|
halfArray: new Float32Array(3),
|
||||||
// and some render targets. see setViewport()
|
// and some render targets. see setViewport()
|
||||||
};
|
};
|
||||||
renderSpec.setSize = function (w, h) {
|
renderSpec.setSize = function (w, h) {
|
||||||
@@ -483,10 +496,10 @@ function deleteRenderTarget(rt) {
|
|||||||
|
|
||||||
function createRenderTarget(w, h) {
|
function createRenderTarget(w, h) {
|
||||||
var ret = {
|
var ret = {
|
||||||
'width':w,
|
width: w,
|
||||||
'height':h,
|
height: h,
|
||||||
'sizeArray':new Float32Array([w, h, w / h]),
|
sizeArray: new Float32Array([w, h, w / h]),
|
||||||
'dtxArray':new Float32Array([1.0 / w, 1.0 / h])
|
dtxArray: new Float32Array([1.0 / w, 1.0 / h]),
|
||||||
};
|
};
|
||||||
ret.frameBuffer = gl.createFramebuffer();
|
ret.frameBuffer = gl.createFramebuffer();
|
||||||
ret.renderBuffer = gl.createRenderbuffer();
|
ret.renderBuffer = gl.createRenderbuffer();
|
||||||
@@ -571,29 +584,29 @@ function createShader(vtxsrc, frgsrc, uniformlist, attrlist) {
|
|||||||
function useShader(prog) {
|
function useShader(prog) {
|
||||||
gl.useProgram(prog);
|
gl.useProgram(prog);
|
||||||
for (var attr in prog.attributes) {
|
for (var attr in prog.attributes) {
|
||||||
gl.enableVertexAttribArray(prog.attributes[attr]);;
|
gl.enableVertexAttribArray(prog.attributes[attr]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function unuseShader(prog) {
|
function unuseShader(prog) {
|
||||||
for (var attr in prog.attributes) {
|
for (var attr in prog.attributes) {
|
||||||
gl.disableVertexAttribArray(prog.attributes[attr]);;
|
gl.disableVertexAttribArray(prog.attributes[attr]);
|
||||||
}
|
}
|
||||||
gl.useProgram(null);
|
gl.useProgram(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////
|
/////
|
||||||
var projection = {
|
var projection = {
|
||||||
'angle':60,
|
angle: 60,
|
||||||
'nearfar':new Float32Array([0.1, 100.0]),
|
nearfar: new Float32Array([0.1, 100.0]),
|
||||||
'matrix':Matrix44.createIdentity()
|
matrix: Matrix44.createIdentity(),
|
||||||
};
|
};
|
||||||
var camera = {
|
var camera = {
|
||||||
'position':Vector3.create(0, 0, 100),
|
position: Vector3.create(0, 0, 100),
|
||||||
'lookat':Vector3.create(0, 0, 0),
|
lookat: Vector3.create(0, 0, 0),
|
||||||
'up':Vector3.create(0, 1, 0),
|
up: Vector3.create(0, 1, 0),
|
||||||
'dof':Vector3.create(10.0, 4.0, 8.0),
|
dof: Vector3.create(10.0, 4.0, 8.0),
|
||||||
'matrix':Matrix44.createIdentity()
|
matrix: Matrix44.createIdentity(),
|
||||||
};
|
};
|
||||||
|
|
||||||
var pointFlower = {};
|
var pointFlower = {};
|
||||||
@@ -651,16 +664,12 @@ BlossomParticle.prototype.update = function (dt, et) {
|
|||||||
function createPointFlowers() {
|
function createPointFlowers() {
|
||||||
// get point sizes
|
// get point sizes
|
||||||
var prm = gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE);
|
var prm = gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE);
|
||||||
renderSpec.pointSize = {'min':prm[0], 'max':prm[1]};
|
renderSpec.pointSize = { min: prm[0], max: prm[1] };
|
||||||
|
|
||||||
var vtxsrc = document.getElementById("sakura_point_vsh").textContent;
|
var vtxsrc = document.getElementById("sakura_point_vsh").textContent;
|
||||||
var frgsrc = document.getElementById("sakura_point_fsh").textContent;
|
var frgsrc = document.getElementById("sakura_point_fsh").textContent;
|
||||||
|
|
||||||
pointFlower.program = createShader(
|
pointFlower.program = createShader(vtxsrc, frgsrc, ["uProjection", "uModelview", "uResolution", "uOffset", "uDOF", "uFade"], ["aPosition", "aEuler", "aMisc"]);
|
||||||
vtxsrc, frgsrc,
|
|
||||||
['uProjection', 'uModelview', 'uResolution', 'uOffset', 'uDOF', 'uFade'],
|
|
||||||
['aPosition', 'aEuler', 'aMisc']
|
|
||||||
);
|
|
||||||
|
|
||||||
useShader(pointFlower.program);
|
useShader(pointFlower.program);
|
||||||
pointFlower.offset = new Float32Array([0.0, 0.0, 0.0]);
|
pointFlower.offset = new Float32Array([0.0, 0.0, 0.0]);
|
||||||
@@ -700,7 +709,9 @@ function initPointFlowers() {
|
|||||||
var PI2 = Math.PI * 2.0;
|
var PI2 = Math.PI * 2.0;
|
||||||
var tmpv3 = Vector3.create(0, 0, 0);
|
var tmpv3 = Vector3.create(0, 0, 0);
|
||||||
var tmpv = 0;
|
var tmpv = 0;
|
||||||
var symmetryrand = function() {return (Math.random() * 2.0 - 1.0);};
|
var symmetryrand = function () {
|
||||||
|
return Math.random() * 2.0 - 1.0;
|
||||||
|
};
|
||||||
for (var i = 0; i < pointFlower.numFlowers; i++) {
|
for (var i = 0; i < pointFlower.numFlowers; i++) {
|
||||||
var tmpprtcl = pointFlower.particles[i];
|
var tmpprtcl = pointFlower.particles[i];
|
||||||
|
|
||||||
@@ -713,25 +724,13 @@ function initPointFlowers() {
|
|||||||
tmpprtcl.setVelocity(tmpv3.x * tmpv, tmpv3.y * tmpv, tmpv3.z * tmpv);
|
tmpprtcl.setVelocity(tmpv3.x * tmpv, tmpv3.y * tmpv, tmpv3.z * tmpv);
|
||||||
|
|
||||||
//rotation
|
//rotation
|
||||||
tmpprtcl.setRotation(
|
tmpprtcl.setRotation(symmetryrand() * PI2 * 0.5, symmetryrand() * PI2 * 0.5, symmetryrand() * PI2 * 0.5);
|
||||||
symmetryrand() * PI2 * 0.5,
|
|
||||||
symmetryrand() * PI2 * 0.5,
|
|
||||||
symmetryrand() * PI2 * 0.5
|
|
||||||
);
|
|
||||||
|
|
||||||
//position
|
//position
|
||||||
tmpprtcl.setPosition(
|
tmpprtcl.setPosition(symmetryrand() * pointFlower.area.x, symmetryrand() * pointFlower.area.y, symmetryrand() * pointFlower.area.z);
|
||||||
symmetryrand() * pointFlower.area.x,
|
|
||||||
symmetryrand() * pointFlower.area.y,
|
|
||||||
symmetryrand() * pointFlower.area.z
|
|
||||||
);
|
|
||||||
|
|
||||||
//euler
|
//euler
|
||||||
tmpprtcl.setEulerAngles(
|
tmpprtcl.setEulerAngles(Math.random() * Math.PI * 2.0, Math.random() * Math.PI * 2.0, Math.random() * Math.PI * 2.0);
|
||||||
Math.random() * Math.PI * 2.0,
|
|
||||||
Math.random() * Math.PI * 2.0,
|
|
||||||
Math.random() * Math.PI * 2.0
|
|
||||||
);
|
|
||||||
|
|
||||||
//size
|
//size
|
||||||
tmpprtcl.setSize(0.9 + Math.random() * 0.1);
|
tmpprtcl.setSize(0.9 + Math.random() * 0.1);
|
||||||
@@ -747,8 +746,7 @@ function renderPointFlowers() {
|
|||||||
//out of area
|
//out of area
|
||||||
if (prt.position[cmp] > 0) {
|
if (prt.position[cmp] > 0) {
|
||||||
prt.position[cmp] -= limit * 2.0;
|
prt.position[cmp] -= limit * 2.0;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
prt.position[cmp] += limit * 2.0;
|
prt.position[cmp] += limit * 2.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -772,14 +770,13 @@ function renderPointFlowers() {
|
|||||||
|
|
||||||
prtcl.alpha = 1.0; //(pointFlower.area.z - prtcl.position[2]) * 0.5;
|
prtcl.alpha = 1.0; //(pointFlower.area.z - prtcl.position[2]) * 0.5;
|
||||||
|
|
||||||
prtcl.zkey = (camera.matrix[2] * prtcl.position[0]
|
prtcl.zkey = camera.matrix[2] * prtcl.position[0] + camera.matrix[6] * prtcl.position[1] + camera.matrix[10] * prtcl.position[2] + camera.matrix[14];
|
||||||
+ camera.matrix[6] * prtcl.position[1]
|
|
||||||
+ camera.matrix[10] * prtcl.position[2]
|
|
||||||
+ camera.matrix[14]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort
|
// sort
|
||||||
pointFlower.particles.sort(function(p0, p1){return p0.zkey - p1.zkey;});
|
pointFlower.particles.sort(function (p0, p1) {
|
||||||
|
return p0.zkey - p1.zkey;
|
||||||
|
});
|
||||||
|
|
||||||
// update data
|
// update data
|
||||||
var ipos = pointFlower.positionArrayOffset;
|
var ipos = pointFlower.positionArrayOffset;
|
||||||
@@ -867,11 +864,11 @@ function renderPointFlowers() {
|
|||||||
//common util
|
//common util
|
||||||
function createEffectProgram(vtxsrc, frgsrc, exunifs, exattrs) {
|
function createEffectProgram(vtxsrc, frgsrc, exunifs, exattrs) {
|
||||||
var ret = {};
|
var ret = {};
|
||||||
var unifs = ['uResolution', 'uSrc', 'uDelta'];
|
var unifs = ["uResolution", "uSrc", "uDelta"];
|
||||||
if (exunifs) {
|
if (exunifs) {
|
||||||
unifs = unifs.concat(exunifs);
|
unifs = unifs.concat(exunifs);
|
||||||
}
|
}
|
||||||
var attrs = ['aPosition'];
|
var attrs = ["aPosition"];
|
||||||
if (exattrs) {
|
if (exattrs) {
|
||||||
attrs = attrs.concat(exattrs);
|
attrs = attrs.concat(exattrs);
|
||||||
}
|
}
|
||||||
@@ -879,12 +876,7 @@ function createEffectProgram(vtxsrc, frgsrc, exunifs, exattrs) {
|
|||||||
ret.program = createShader(vtxsrc, frgsrc, unifs, attrs);
|
ret.program = createShader(vtxsrc, frgsrc, unifs, attrs);
|
||||||
useShader(ret.program);
|
useShader(ret.program);
|
||||||
|
|
||||||
ret.dataArray = new Float32Array([
|
ret.dataArray = new Float32Array([-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0]);
|
||||||
-1.0, -1.0,
|
|
||||||
1.0, -1.0,
|
|
||||||
-1.0, 1.0,
|
|
||||||
1.0, 1.0
|
|
||||||
]);
|
|
||||||
ret.buffer = gl.createBuffer();
|
ret.buffer = gl.createBuffer();
|
||||||
gl.bindBuffer(gl.ARRAY_BUFFER, ret.buffer);
|
gl.bindBuffer(gl.ARRAY_BUFFER, ret.buffer);
|
||||||
gl.bufferData(gl.ARRAY_BUFFER, ret.dataArray, gl.STATIC_DRAW);
|
gl.bufferData(gl.ARRAY_BUFFER, ret.dataArray, gl.STATIC_DRAW);
|
||||||
@@ -925,14 +917,13 @@ function unuseEffect(fxobj) {
|
|||||||
|
|
||||||
var effectLib = {};
|
var effectLib = {};
|
||||||
function createEffectLib() {
|
function createEffectLib() {
|
||||||
|
|
||||||
var vtxsrc, frgsrc;
|
var vtxsrc, frgsrc;
|
||||||
//common
|
//common
|
||||||
var cmnvtxsrc = document.getElementById("fx_common_vsh").textContent;
|
var cmnvtxsrc = document.getElementById("fx_common_vsh").textContent;
|
||||||
|
|
||||||
//background
|
//background
|
||||||
frgsrc = document.getElementById("bg_fsh").textContent;
|
frgsrc = document.getElementById("bg_fsh").textContent;
|
||||||
effectLib.sceneBg = createEffectProgram(cmnvtxsrc, frgsrc, ['uTimes'], null);
|
effectLib.sceneBg = createEffectProgram(cmnvtxsrc, frgsrc, ["uTimes"], null);
|
||||||
|
|
||||||
// make brightpixels buffer
|
// make brightpixels buffer
|
||||||
frgsrc = document.getElementById("fx_brightbuf_fsh").textContent;
|
frgsrc = document.getElementById("fx_brightbuf_fsh").textContent;
|
||||||
@@ -940,12 +931,12 @@ function createEffectLib() {
|
|||||||
|
|
||||||
// direction blur
|
// direction blur
|
||||||
frgsrc = document.getElementById("fx_dirblur_r4_fsh").textContent;
|
frgsrc = document.getElementById("fx_dirblur_r4_fsh").textContent;
|
||||||
effectLib.dirBlur = createEffectProgram(cmnvtxsrc, frgsrc, ['uBlurDir'], null);
|
effectLib.dirBlur = createEffectProgram(cmnvtxsrc, frgsrc, ["uBlurDir"], null);
|
||||||
|
|
||||||
//final composite
|
//final composite
|
||||||
vtxsrc = document.getElementById("pp_final_vsh").textContent;
|
vtxsrc = document.getElementById("pp_final_vsh").textContent;
|
||||||
frgsrc = document.getElementById("pp_final_fsh").textContent;
|
frgsrc = document.getElementById("pp_final_fsh").textContent;
|
||||||
effectLib.finalComp = createEffectProgram(vtxsrc, frgsrc, ['uBloom'], null);
|
effectLib.finalComp = createEffectProgram(vtxsrc, frgsrc, ["uBloom"], null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// background
|
// background
|
||||||
@@ -1042,7 +1033,7 @@ function initScene() {
|
|||||||
|
|
||||||
//camera.position.z = 17.320508;
|
//camera.position.z = 17.320508;
|
||||||
camera.position.z = pointFlower.area.z + projection.nearfar[0];
|
camera.position.z = pointFlower.area.z + projection.nearfar[0];
|
||||||
projection.angle = Math.atan2(pointFlower.area.y, camera.position.z + pointFlower.area.z) * 180.0 / Math.PI * 2.0;
|
projection.angle = ((Math.atan2(pointFlower.area.y, camera.position.z + pointFlower.area.z) * 180.0) / Math.PI) * 2.0;
|
||||||
Matrix44.loadProjection(projection.matrix, renderSpec.aspect, projection.angle, projection.nearfar[0], projection.nearfar[1]);
|
Matrix44.loadProjection(projection.matrix, renderSpec.aspect, projection.angle, projection.nearfar[0], projection.nearfar[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1083,11 +1074,11 @@ function setViewports() {
|
|||||||
if (rt) deleteRenderTarget(rt);
|
if (rt) deleteRenderTarget(rt);
|
||||||
renderSpec[rtname] = createRenderTarget(rtw, rth);
|
renderSpec[rtname] = createRenderTarget(rtw, rth);
|
||||||
};
|
};
|
||||||
rtfunc('mainRT', renderSpec.width, renderSpec.height);
|
rtfunc("mainRT", renderSpec.width, renderSpec.height);
|
||||||
rtfunc('wFullRT0', renderSpec.width, renderSpec.height);
|
rtfunc("wFullRT0", renderSpec.width, renderSpec.height);
|
||||||
rtfunc('wFullRT1', renderSpec.width, renderSpec.height);
|
rtfunc("wFullRT1", renderSpec.width, renderSpec.height);
|
||||||
rtfunc('wHalfRT0', renderSpec.halfWidth, renderSpec.halfHeight);
|
rtfunc("wHalfRT0", renderSpec.halfWidth, renderSpec.halfHeight);
|
||||||
rtfunc('wHalfRT1', renderSpec.halfWidth, renderSpec.halfHeight);
|
rtfunc("wHalfRT1", renderSpec.halfWidth, renderSpec.halfHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
@@ -1126,18 +1117,18 @@ function makeCanvasFullScreen(canvas) {
|
|||||||
canvas.height = fullh;
|
canvas.height = fullh;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('load', function(e) {
|
window.addEventListener("load", function (e) {
|
||||||
var canvas = document.getElementById("sakura");
|
var canvas = document.getElementById("sakura");
|
||||||
try {
|
try {
|
||||||
makeCanvasFullScreen(canvas);
|
makeCanvasFullScreen(canvas);
|
||||||
gl = canvas.getContext('experimental-webgl');
|
gl = canvas.getContext("experimental-webgl");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
alert("WebGL not supported." + e);
|
alert("WebGL not supported." + e);
|
||||||
console.error(e);
|
console.error(e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('resize', onResize);
|
window.addEventListener("resize", onResize);
|
||||||
|
|
||||||
setViewports();
|
setViewports();
|
||||||
createScene();
|
createScene();
|
||||||
@@ -1150,8 +1141,16 @@ window.addEventListener('load', function(e) {
|
|||||||
|
|
||||||
//set window.requestAnimationFrame
|
//set window.requestAnimationFrame
|
||||||
(function (w, r) {
|
(function (w, r) {
|
||||||
w['r'+r] = w['r'+r] || w['webkitR'+r] || w['mozR'+r] || w['msR'+r] || w['oR'+r] || function(c){ w.setTimeout(c, 1000 / 60); };
|
w["r" + r] =
|
||||||
})(window, 'equestAnimationFrame');
|
w["r" + r] ||
|
||||||
|
w["webkitR" + r] ||
|
||||||
|
w["mozR" + r] ||
|
||||||
|
w["msR" + r] ||
|
||||||
|
w["oR" + r] ||
|
||||||
|
function (c) {
|
||||||
|
w.setTimeout(c, 1000 / 60);
|
||||||
|
};
|
||||||
|
})(window, "equestAnimationFrame");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
File diff suppressed because one or more lines are too long
8
nianbroken.txt
Normal file
8
nianbroken.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
主页:https://nianbroken.top
|
||||||
|
QQ:2971802058
|
||||||
|
微信:NianBroken
|
||||||
|
Gmail:suinian666@gmail.com
|
||||||
|
捐赠:https://pay.nianbroken.top/
|
||||||
|
Github:https://github.com/nianbroken
|
||||||
|
欧盟全球网络加速协会:https://eugnaa.eu-gov.eu.org/
|
||||||
|
最便宜的VPN:https://eugnaa.eu-gov.eu.org/
|
||||||
Reference in New Issue
Block a user