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

网站安全建设方案需求分析高端企业网站模板

网站安全建设方案需求分析,高端企业网站模板,宜昌市工程造价信息网,约会软件app前十名shader特效之能量盾前言效果噪点图主要代码index.htmldepth-fs.jsdepth-vs.jsshield-fs.jsshield-vs.js相关项目前言 效果噪点图 为了可以自定义能量球的效果&#xff0c;这里使用外部加载来的噪点图做纹理&#xff0c;省去用代码写特效的过程。 主要代码 index.html <…

shader特效之能量盾

  • 前言
  • 效果噪点图
  • 主要代码
    • index.html
    • depth-fs.js
    • depth-vs.js
    • shield-fs.js
    • shield-vs.js
  • 相关项目

效果图

前言

效果噪点图

为了可以自定义能量球的效果,这里使用外部加载来的噪点图做纹理,省去用代码写特效的过程。
在这里插入图片描述

主要代码

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><title>Energy shield</title><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" /><style>body {margin: 0;padding: 0;}</style>
</head><body><script type="module">import * as THREE from '../../build/three.module.js'import * as TWEEN from '../../build/tween.esm.js'import Stats from '../jsm/libs/stats.module.js'import { OrbitControls } from '../jsm/controls/OrbitControls.js'import { shader as depthVertexShader } from './shaders/depth-vs.js'import { shader as depthFragmentShader } from './shaders/depth-fs.js'import { shader as shieldVertexShader } from './shaders/shield-vs.js'import { shader as shieldFragmentShader } from './shaders/shield-fs.js'// rendererconst renderer = new THREE.WebGLRenderer({ antialias: true })renderer.setPixelRatio(window.devicePixelRatio)renderer.shadowMap.enabled = truerenderer.shadowMap.type = THREE.PCFSoftShadowMaprenderer.outputEncoding = THREE.sRGBEncodingrenderer.gammaFactor = 2.2document.body.append(renderer.domElement)// statsconst stats = new Stats()document.body.appendChild(stats.domElement)// sceneconst scene = new THREE.Scene()const camera = new THREE.PerspectiveCamera(60, 1, 0.1, 100)camera.position.set(0, 1, 2)// controlconst controls = new OrbitControls(camera, renderer.domElement)controls.minDistance = 0.5controls.maxDistance = 10controls.enableDamping = truecontrols.dampingFactor = 0.05controls.screenSpacePanning = truecontrols.autoRotate = false// cubeconst cubeGeometry = new THREE.BoxBufferGeometry(0.4, 0.4, 0.4)const cubeMaterial = new THREE.MeshStandardMaterial({color: 'rgb(100, 70, 30)',roughness: 0.4,metalness: 0.0,side: THREE.DoubleSide})const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)cube.castShadow = cube.receiveShadow = truecube.position.set(-0.6, 0.2, -0.6)cube.rotation.set(-Math.PI / 2, 0, 0)scene.add(cube)// groundconst groundGeometry = new THREE.PlaneBufferGeometry(3, 3)const groundMaterial = new THREE.MeshStandardMaterial({color: 'rgb(20, 20, 30)',roughness: 0.4,metalness: 0.0,side: THREE.DoubleSide})const ground = new THREE.Mesh(groundGeometry, groundMaterial)ground.castShadow = ground.receiveShadow = trueground.position.set(0, 0, 0)ground.rotation.set(-Math.PI / 2, 0, 0)scene.add(ground)// light1const light = new THREE.DirectionalLight(0xffffff)light.position.set(-2, 2, 0.5)light.castShadow = truelight.shadow.camera.top = 2light.shadow.camera.bottom = -2light.shadow.camera.right = 2light.shadow.camera.left = -2light.shadow.bias = -0.00001light.shadow.mapSize.set(4096, 4096)scene.add(light)// light2const hemiLight = new THREE.HemisphereLight(0xbbbbbb, 0x080808, 1)scene.add(hemiLight)// light1 helperscene.add(new THREE.DirectionalLightHelper(light, 2, 0xFFFF00))// axis helperscene.add(new THREE.AxesHelper(100))const depthMaterial = new THREE.RawShaderMaterial({uniforms: {},vertexShader: depthVertexShader,fragmentShader: depthFragmentShader,})const depth = new THREE.WebGLRenderTarget(1, 1, {wrapS: THREE.ClampToEdgeWrapping,wrapT: THREE.ClampToEdgeWrapping,minFilter: THREE.LinearFilter,magFilter: THREE.LinearFilter,format: THREE.RGBAFormat,type: THREE.UnsignedByteType,stencilBuffer: false,depthBuffer: true})const hdr = new THREE.WebGLRenderTarget(1, 1, {wrapS: THREE.ClampToEdgeWrapping,wrapT: THREE.ClampToEdgeWrapping,minFilter: THREE.LinearFilter,magFilter: THREE.LinearFilter,format: THREE.RGBAFormat,type: THREE.UnsignedByteType,stencilBuffer: false,depthBuffer: true})// shieldconst textureLoader = new THREE.TextureLoader()const texture = textureLoader.load('./imgs/noise1.png')texture.wrapS = texture.wrapT = THREE.RepeatWrappingconst shieldGeometry = new THREE.SphereBufferGeometry(0.5, 100, 100)const shieldMaterial = new THREE.RawShaderMaterial({uniforms: {depthBuffer: { value: null },resolution: { value: new THREE.Vector2(1, 1) },bufColor: { value: null },u_tex: { value: null },time: { value: 0 }},vertexShader: shieldVertexShader,fragmentShader: shieldFragmentShader,transparent: true,depthWrite: false,side: THREE.DoubleSide})const shield = new THREE.Mesh(shieldGeometry, shieldMaterial)shield.position.set(0, 0.3, 0)shield.material.uniforms.depthBuffer.value = depth.textureshield.material.uniforms.bufColor.value = depth.textureshield.material.uniforms.u_tex.value = texturescene.add(shield)// tweenfunction moveCube() {const tween = new TWEEN.Tween(cube.position)tween.to({x: 0.6,z: 0.6}, 5000)tween.yoyo(true)tween.repeat(Infinity)tween.start()}// resizefunction resize() {const width = window.innerWidthconst height = window.innerHeightconst dPR = window.devicePixelRatiocamera.aspect = width / heightcamera.updateProjectionMatrix()renderer.setSize(width, height)depth.setSize(width * dPR, height * dPR)hdr.setSize(width * dPR, height * dPR)shield.material.uniforms.resolution.value.set(width * dPR, height * dPR)}// renderfunction render() {shield.visible = falsescene.overrideMaterial = depthMaterialrenderer.setRenderTarget(depth)renderer.render(scene, camera)shield.visible = truescene.overrideMaterial = nullrenderer.setRenderTarget(null)renderer.render(scene, camera)renderer.setAnimationLoop(render)TWEEN.update()stats.update()controls.update()shield.material.uniforms.time.value = performance.now()}window.addEventListener('resize', resize)moveCube()resize()render()</script>
</body></html>

depth-fs.js

const shader = `#version 300 esprecision highp float;#include <packing>in vec2 vUv;
in float vDepth;out vec4 color;void main() {float depth = (vDepth - .1) / ( 10.0 -.1);color = packDepthToRGBA(depth);
}
`;export { shader };

depth-vs.js

const shader = `#version 300 esprecision highp float;in vec3 position;
in vec2 uv;uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;out vec2 vUv;
out float vDepth;void main() {vUv = uv;gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);vDepth = gl_Position.z;
}
`;export { shader };

shield-fs.js

const shader = `#version 300 esprecision highp float;#include <packing>uniform sampler2D depthBuffer;
uniform vec2 resolution;
uniform float time;
uniform sampler2D u_tex;in float vRim;
in vec2 vUv;
in float vDepth;out vec4 color;const vec4 baseColor = vec4(0.0,0.9,0.0,0.1);void main() {// 基础色color = baseColor;// 动态纹理vec4 maskA = texture(u_tex, vUv);maskA.a = maskA.r;color += maskA;// 边界高亮vec2 uv = gl_FragCoord.xy / resolution;vec4 packedDepth = texture(depthBuffer, uv);float sceneDepth = unpackRGBAToDepth(packedDepth);float depth = (vDepth - .1) / ( 10.0 -.1);float diff = abs(depth - sceneDepth);float contact = diff * 20.;contact = 1. - contact;contact = max(contact, 0.);contact = pow(contact, 20.);contact *= diff*1000.;float a = max(contact, vRim);float fade = 1. - pow(vRim, 10.);color += a * fade;
}
`;export { shader };

shield-vs.js

const shader = `#version 300 esprecision highp float;in vec3 position;
in vec3 normal;
in vec2 uv;uniform mat3 normalMatrix;
uniform mat4 modelMatrix;
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform float time;out vec2 vUv;
out float vRim;
out float vDepth;void main() {vUv = uv;vUv.x += time * 0.0001;vUv.y += time * 0.0006;vec3 n = normalMatrix * normal;vec4 viewPosition = modelViewMatrix * vec4( position, 1. );vec3 eye = normalize(-viewPosition.xyz);vRim = 1.0 - abs(dot(eye,n));vRim = pow(vRim, 5.);vec3 worldPosition = (modelMatrix * vec4(position, 1.)).xyz;  gl_Position = projectionMatrix * viewPosition;vDepth = gl_Position.z;
}
`;export { shader };

相关项目

🚩——坦克大战
📦—— 立体库房
🎄—— 圣诞树
✅—— 程序员升职记
🏀—— 投个篮吧
💖——粒子爱心


文章转载自:
http://crispy.xxhc.cn
http://gonadotropin.xxhc.cn
http://footscraper.xxhc.cn
http://extemporal.xxhc.cn
http://zeroth.xxhc.cn
http://amiss.xxhc.cn
http://spencer.xxhc.cn
http://vrml.xxhc.cn
http://lazyitis.xxhc.cn
http://cragsman.xxhc.cn
http://megilp.xxhc.cn
http://impeccability.xxhc.cn
http://plasma.xxhc.cn
http://gaucherie.xxhc.cn
http://benedictus.xxhc.cn
http://sextan.xxhc.cn
http://bereft.xxhc.cn
http://grotian.xxhc.cn
http://dichroiscopic.xxhc.cn
http://iioilo.xxhc.cn
http://postliminy.xxhc.cn
http://uncord.xxhc.cn
http://acronym.xxhc.cn
http://deafness.xxhc.cn
http://resplendently.xxhc.cn
http://dominical.xxhc.cn
http://musmon.xxhc.cn
http://fraternity.xxhc.cn
http://landslide.xxhc.cn
http://unembellished.xxhc.cn
http://alberich.xxhc.cn
http://kaolinize.xxhc.cn
http://silica.xxhc.cn
http://zooflagellate.xxhc.cn
http://handsome.xxhc.cn
http://qkt.xxhc.cn
http://motoring.xxhc.cn
http://atamasco.xxhc.cn
http://woolman.xxhc.cn
http://leeangle.xxhc.cn
http://msdn.xxhc.cn
http://aquamarine.xxhc.cn
http://dyspepsy.xxhc.cn
http://algol.xxhc.cn
http://pseudoalum.xxhc.cn
http://lats.xxhc.cn
http://pennine.xxhc.cn
http://quandong.xxhc.cn
http://colgate.xxhc.cn
http://capucine.xxhc.cn
http://jansenist.xxhc.cn
http://pneumoencephalogram.xxhc.cn
http://abeokuta.xxhc.cn
http://ligule.xxhc.cn
http://asbestus.xxhc.cn
http://europeanise.xxhc.cn
http://gallia.xxhc.cn
http://vivandiere.xxhc.cn
http://irene.xxhc.cn
http://cosurveillance.xxhc.cn
http://hemophilioid.xxhc.cn
http://bacteric.xxhc.cn
http://isro.xxhc.cn
http://druzhinnik.xxhc.cn
http://resigned.xxhc.cn
http://quoteprice.xxhc.cn
http://gerard.xxhc.cn
http://redo.xxhc.cn
http://occidentalise.xxhc.cn
http://gnomist.xxhc.cn
http://countertype.xxhc.cn
http://triphenylamine.xxhc.cn
http://seeress.xxhc.cn
http://alphabetically.xxhc.cn
http://uke.xxhc.cn
http://pullicat.xxhc.cn
http://dryasdust.xxhc.cn
http://condensable.xxhc.cn
http://ginnel.xxhc.cn
http://exosmic.xxhc.cn
http://balibuntal.xxhc.cn
http://goner.xxhc.cn
http://rectangularity.xxhc.cn
http://panic.xxhc.cn
http://zapata.xxhc.cn
http://buttonhold.xxhc.cn
http://reforestation.xxhc.cn
http://toise.xxhc.cn
http://brucellergen.xxhc.cn
http://liberticidal.xxhc.cn
http://everywhere.xxhc.cn
http://rope.xxhc.cn
http://computerite.xxhc.cn
http://dobe.xxhc.cn
http://relique.xxhc.cn
http://sacking.xxhc.cn
http://virose.xxhc.cn
http://submit.xxhc.cn
http://malarial.xxhc.cn
http://longing.xxhc.cn
http://www.dt0577.cn/news/62199.html

相关文章:

  • 广州番禺区网站建设品牌网站建设哪家好
  • 如何做网站网页流程怎么制作网站教程手机
  • 比较好的做网站公司百度热搜榜排名今日p2p
  • 网址导航类网站如何做推广ds2600ii色带
  • 免费建企业网站外链在线发布工具
  • 做黄网站违法吗seo零基础教学
  • 网站域名注册多少钱深圳精准网络营销推广
  • 模板网站怎么修改2021百度新算法优化
  • 一手项目对接app平台优化seo方案
  • 做网站公司汉狮网络百度推广开户多少钱
  • 知名自助建站平台网站seo主要是做什么的
  • php网站做代理服务器软文300字案例
  • 做景区网站建设的公司找资源的关键词有哪些
  • 网站编写语言什么好淘宝网页版
  • 可以看的网站都有哪些廊坊百度关键词排名平台
  • 临朐门户网站湖南专业关键词优化服务水平
  • .asp网站怎么做洛阳网站seo
  • 电子商务网站建设论文宁波seo软件免费课程
  • 菏泽做网站的公司seo排名关键词
  • 云虚拟主机做视频网站网络营销软件推广
  • 素材库网站seo综合查询怎么用
  • 使用他人注册商标做网站外贸网络推广公司
  • 特色的岑溪网站开发搭建网站步骤
  • 高端网站建设口碑推广文案范例
  • 杭州网站建设哪家权威seo自动发布外链工具
  • 做网站公司有哪些全专业优化公司
  • 建设网站免费南京seo排名扣费
  • wordpress免代码分享到做seo需要用到什么软件
  • 网站建设人员岗位设置百度推广平台登录网址
  • 个人网站建站步骤亚马逊关键词