我是一个软件开发工程师

乐观 积极 生活如此精彩

总有快乐的事情降临

这是一个精彩的世界,不是吗?

技术精要

这里是我的一些你可能需要的技术摘要

动画与效果

一些常见的动画和效果

算法与逻辑

常用的算法和逻辑推导

性能与技巧

关于性能和技巧方面的总结

rollup搭建项目

现在的项目基本都开始用rollup搭建的,很快要放弃webpack了。

初始化

npm init

接着按照步骤填入信息,生成package.json,默认入口为main.js,暂时写成main.js,后面会修改入口文件为编译后的文件

在根目录新建src文件夹,在src文件夹下新建main.ts文件:

export function hello () { 
    console.log('hello indeex') 
}

配置rollup

安装typescriptrollup

npm i -D typescript

npm i -S rollup

配置eslint

[……]

继续阅读

使用next.js做ssr

目前使用next.js的越来越多,这里是只是一个模版记录。

开始

First, run the development server:

npm run dev
# or
yarn dev

Open http://localhost:3000 with your browser to see the result.

sass

npm i -S sass

直接使用,无需其他配置

移动端适配

安装postcss-px-to-viewport

npm i -D postcss-px-to-viewport

根目录新建postcss.config.js

/*
 * @Author: indeex
 *[......]

继续阅读

WebGPU基础(八)- 体积雾

体积雾,简单来说就是有体积的区域雾,在体积雾内的物体,会显得模糊;而在体积雾外的物体,则是物体的原颜色。

在实际生活中,光在均匀的空气中直线传播,当遇到浑浊的空气,光线中的一部分能量会照射在小颗粒上,进而一部分光散射入眼睛。这是看见的光产生体积效果。

注意区分体积光的区别:

体积雾,是没有直接的光照,小颗粒反射的光线全部来自于间接光;

体积光,则是有明显的单一光照请向;

如果物体落在体积雾内,我们需要在雾的颜色和物体原颜色之间做一个混合。这个混合比例不是固定的,而是取决于体积雾的厚度。而这个厚度,和物体以及体积雾的深度是相关的,需要用物体的深度减去离眼睛更近的雾的深度以得到体积雾的厚度。厚[……]

继续阅读

WebGPU基础(八)- 体积雪

下雪时,物体上的雪会随着下雪时间,逐渐增加厚度,物体坠落或经过时,会形成凹陷效果,再次随着时间的推移厚度慢慢增加,这种有种类似地形图的效果。

indeex@qq.com

[已加密]

请联系作者登记后查看,联系方式在本页获取。

code enjoy! 🦖🦖🦖

作者:indeex

链接:https://indeex.club

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[……]

继续阅读

WebGPU基础(七)- 光追效果

光线追踪(英语:ray tracing)是三维计算机图形学中的特殊渲染算法,追踪光线从来源开始照射到物体上,再由物体反射的光线“路径”,由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径,由于是从玩家视角开始进行运算,有时被误解为光线追踪是追踪“从眼睛发出的光线”。通过这样一项技术生成编排好的场景的数学模型显现出来。这样得到的结果类似于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果,例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以当追求高质量的效果时经常使用这种方法。

在物理学中,光线追迹可以用来计算光束在介质中传播的情况。在介质中传[……]

继续阅读

WebGPU基础(六)- 粒子特效

粒子特效的原理是将若干粒子无规则的组合在一起。来模拟火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹等效果,可以为场景提供更加丰富的表现力。

粒子不是静止的,运动起来后,组成粒子动画,被广泛运用于模拟天气系统、烟雾光效等方面。

由于粒子组合后会大量消耗系统资源,这里使用最简单的例子效果。

indeex@qq.com

[已加密]

请联系作者登记后查看,联系方式在本页获取。

code enjoy! 🦖🦖🦖

作者:indeex

链接:https://indeex.club

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[……]

继续阅读

WebGPU基础(五)- 加载模型

在WebGPU开发中,会加载各种各样的模型,

下载模型

这里以通用OBJ模型为例,首先是加载文件:

//...

private modeObj?: any;
private modeData?: any;

//...

//...

function loadFile(url: string) {
    new Promise((resolve, reject) => {

    });
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, false);
    xhr.onload = f[......]

继续阅读

WebGPU基础(四)- 地形

地形其实就是带高度的纹理,又称高程纹理或高度贴图。

engine

修改之前的engine代码:

//...

import { setDevice, device, setCameraUniformBuffer, cameraUniformBuffer } from './common';

//...

let _cameraUniformBuffer = device.createBuffer({
    size: this.matrixSize,
    usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,[......]

继续阅读

WebGPU基础(三)-场景和相机

物体

在引擎开发中,我们会添加一个一个的场景,然后使用不同的相机查看不同的物体。

首先物体的生成:

//...

import { mat4, vec3 } from 'gl-matrix';
import fragShaderCode from './shaders/triangle.frag.wgsl?raw';
import vertexShadowCode from './shaders/triangle.vert.wgsl?raw';

//...

constructor(device: GPUDevice, vertic[......]

继续阅读

WebGPU基础(二)-旋转的立方体

根据克罗诺斯(Khronos)会议,WebGPU将于2022年第二季度发布1.0版本,WGSL也在快速完善。

按照以往的技术推广进度,理论上标准会在发布5-7年后才能被大部分信仰React/Vue的开发者接受,但随着硬件设备的不断发展、Web行业的不断壮大、使用Typescript的人越来越多以及元宇宙概念的普及,尤其很多以前使用WebGL开发Flash游戏的开发者很多已经早早开始了WebGPU引擎的开发工作,这个时间会被极大的缩短,那么今年将成为WebGPU元年。

那么WebGPU能做什么呢?理论上WebGPU is All,比如在服务器上可以挖矿、在游戏领域做3A大作、在电商领域做商品展示[……]

继续阅读