当前位置: 首页 > wzjs >正文

公司网站免费模板推广文案怎么写

公司网站免费模板,推广文案怎么写,北京软件外包公司排名,计算机做网站难吗shader小白的学习之路。 3D可视化就是为了更好地展示效果,谁会拒绝一个闪闪发光的星空呢。说起发光,第一想到的肯定是three.js 自带的后处理的辉光效果,这个在我自己之前的博客中也有讲过。 我没有剖析过相关源码,也没有那个能力…

shader小白的学习之路。

3D可视化就是为了更好地展示效果,谁会拒绝一个闪闪发光的星空呢。说起发光,第一想到的肯定是three.js 自带的后处理的辉光效果,这个在我自己之前的博客中也有讲过。

 我没有剖析过相关源码,也没有那个能力,今天只是分享一个让粒子发光的另一种方法。

一、粒子发光

首先,构建出一个基本的粒子系统,模拟星空:

const fireShader = {uniforms: {uTime: time,},vertexShader: `uniform float uTime;attribute float size;void main() {vec3 newPos = position;vec4 mvPosition = modelViewMatrix * vec4(newPos, 1.0);gl_PointSize = size * 70.0 / -mvPosition.z;gl_Position = projectionMatrix * mvPosition;}`,fragmentShader: `void main() {gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);}`,
};const fireCount = 1000;
const firePositions = new Float32Array(fireCount * 3);
const fireSizes = new Float32Array(fireCount);
const r = 10;
for (let i = 0; i < fireCount; i++) {fireSizes[i] = Math.random() + 0.5;firePositions[3 * i] = (Math.random() - 0.5) * 2 * r;firePositions[3 * i + 1] = (Math.random() - 0.5) * 2 * r;firePositions[3 * i + 2] = (Math.random() - 0.5) * 2 * r;
}
const fireGeo = new Three.BufferGeometry();
fireGeo.setAttribute("position", new Three.BufferAttribute(firePositions, 3));
fireGeo.setAttribute("size", new Three.BufferAttribute(fireSizes, 1));
const fireMat = new Three.ShaderMaterial({...fireShader,transparent: true,
});
const fireMesh = new Three.Points(fireGeo, fireMat);
scene.add(fireMesh);

一个很丑的粒子组成的立方体就出现了:

然后我们就让其发光。这个发光的要点在于透明度的控制,通过某一段透明度的快速变化形成模糊发光的视觉效果。

函数为:0.05 * (1 / len - 2)

上述公式的曲线如图所示:

大概在len=0.045的时候,y=1;len=0.5时,y=0。在这个区间内,y值迅速下降,可以用来模拟透明度的快速变化。

其中,len表示每一个PointCoord到中心点的距离。len值越小,说明距离中心点越近。

写到片元着色器中:

/* GLSL frgmentShader */void main() {float len = length(gl_PointCoord - vec2(0.5));float strength = clamp(0.05 * (1.0 / len - 2.0), 0.0, 1.0);gl_FragColor = vec4(1.0, 1.0, 1.0, strength);}

实现的效果如下:

 可以看到粒子散发出了明媚的光芒,哈哈。

 二、透明渲染有时失效

在有多个透明度物体时,可能会出现透明度失效的问题。

一种表现形式是,设置了透明度是0.5,但只表现为颜色暗淡,却无法透过去看见背后的mesh;另一种则表现为完全将背后的模型投过去,直接看见更背后的mesh:

这两种情况用共同的解决方法:手动控制mesh的renderOrder属性。

mesh.renderOrder = 10;

有事还可以通过设置混合模型和禁止深度写入来解决:

const fireMat = new Three.ShaderMaterial({...fireShader,transparent: true,blending: Three.AdditiveBlending,depthWrite: false,
});

 原因或者说原理就需要了解three.js中渲染顺序的问题:

  1. 不透明物体:按照从前往后的顺序渲染(即先渲染距离相机较近的物体)。

  2. 透明物体:按照从后往前的顺序渲染(即先渲染距离相机较远的物体)。

 针对透明物体:

  1. 先渲染距离相机较远的透明物体:这样可以确保它们的像素先被写入到帧缓冲区中。

  2. 再渲染距离相机较近的透明物体:这些物体的像素会与已经渲染的较远物体的像素进行混合,从而实现正确的透明效果。

 renderOrder越小,理论上渲染顺序越靠前。所以有时需要手动控制渲染的顺序,尤其是两者位置距离很近的时候。


文章转载自:

http://03cf2O6l.mwkwg.cn
http://dvuU9aX9.mwkwg.cn
http://iOXz2PxQ.mwkwg.cn
http://a1zKYZEa.mwkwg.cn
http://mO1UhBoN.mwkwg.cn
http://CtyedqZJ.mwkwg.cn
http://GeexpLzY.mwkwg.cn
http://fhRX3wg5.mwkwg.cn
http://THfbvKD0.mwkwg.cn
http://bD4bLvVU.mwkwg.cn
http://Xrl47DdU.mwkwg.cn
http://ldJoTxTi.mwkwg.cn
http://tSew3MtX.mwkwg.cn
http://HnVhECoj.mwkwg.cn
http://lyuMKpbY.mwkwg.cn
http://UMFiuSkq.mwkwg.cn
http://ciIdImHb.mwkwg.cn
http://wPbXLjnS.mwkwg.cn
http://8vQRaxvs.mwkwg.cn
http://LkDzfaH3.mwkwg.cn
http://nBUNobX8.mwkwg.cn
http://W0DqheQh.mwkwg.cn
http://cuKe7eEu.mwkwg.cn
http://CUrNyeDI.mwkwg.cn
http://EFFcoT82.mwkwg.cn
http://qQhN8bY8.mwkwg.cn
http://nirCeObt.mwkwg.cn
http://XfkzOOyn.mwkwg.cn
http://pDzkwWkc.mwkwg.cn
http://CcwZMzLY.mwkwg.cn
http://www.dtcms.com/wzjs/609150.html

相关文章:

  • 优秀手机网站傻瓜式制作app的软件
  • wix如何做网站渝快办官网
  • eclipse开发网站开发服务称赞的建筑机电网
  • 国内无版权图片网站建筑模板公司
  • 重庆网站建设公司的网站跨境o2o网站建设方案
  • 生成flash的网站源码中文安卓开发工具
  • 汕头如何建设网站设计如何让网页适应屏幕尺寸
  • 手机网站 侧边栏导航网站滑动
  • 有没有专业做挂的网站吗北京附近做网站的公司有哪些
  • 邢台 网站建设建立什么填词语
  • 怎么自己做淘宝客网站ui培训学校哪家好
  • 电子商务网站策划书3000字城市之星福州网站建设
  • 整容网站模板wordpress如何修改背景图片
  • 昆明做网站win主机安装wordpress
  • 天津电子商务网站建设南阳平面设计培训学校
  • 社交网站 设计高级搜索引擎
  • 网络游戏公司排行榜前十名云南seo网站关键词优化软件
  • 在线做六级阅读网站徐州手机网站开发公司电话
  • o2o网站建设方案讲解如何做网站关键词词霸
  • 自学免费网站建设自己做的网站别人怎么访问
  • 基于网站开发app建设卒中中心几个网站
  • 网站必须备案吗营销型网站建设主要步骤
  • html5网站开发公司做网站大概要多久
  • 如何使用wordpress建站做视频网站需要什么服务器配置
  • 婚纱摄影网站的设计与实现论文万网是做什么的
  • 珠海网站上排名写一个app多少钱
  • 徐州网站建设技术全flash网站制作教程
  • 深圳做网站排名公司哪家好古腾堡布局的网站
  • 嘉兴外贸网站建设网站地图建设有什么用
  • 怎么建设宣传网站wordpress打开网站前动画