WebGL

webgl: fastest approach to drawing many circles

浪子不回头ぞ 提交于 2020-12-04 11:44:25
问题 I'm currently drawing thousands of circles, instancing a circle geometry (many triangles). alternatively, I could simply instance a quad (2 triangles), but cut out a circle in the fragment shader, using a distance function and discard . which approach would be faster? -- is drawing many triangles more expensive than the calculations done in the fragment shader? 回答1: The fastest way might depend on the GPU and lots of other factors like how you're drawing the circles, 2D, 3D, are you blending

webgl: fastest approach to drawing many circles

為{幸葍}努か 提交于 2020-12-04 11:39:34
问题 I'm currently drawing thousands of circles, instancing a circle geometry (many triangles). alternatively, I could simply instance a quad (2 triangles), but cut out a circle in the fragment shader, using a distance function and discard . which approach would be faster? -- is drawing many triangles more expensive than the calculations done in the fragment shader? 回答1: The fastest way might depend on the GPU and lots of other factors like how you're drawing the circles, 2D, 3D, are you blending

Build Settings 构建设置

淺唱寂寞╮ 提交于 2020-12-03 04:08:00
构建设置 “构建设置”窗口允许您选择目标平台,调整构建的设置,并开始构建过程。 要访问“构建设置”窗口,请从“文件”菜单中选择“构建设置”。 一旦指定了构建设置,您可以单击“构建”以创建构建,或单击“构建并运行”以在指定的平台上创建和运行构建。 “构建设置”窗口 场景在Build 窗口的这一部分显示您的项目中将包含在您的构建中的场景。 如果没有显示的场景,那么你可以使用 添加当前 按钮将当前场景添加到生成,或者你可以拖动场景资产注入从项目窗口此窗口。 您也可以取消该列表中的场景,以将其从构建中排除,而不将其从列表中删除。 如果在构建中不需要场景,可以通过按删除键将其从场景列表中删除。 勾选并添加到“构建”列表中的“场景”的场景将包含在构建中。 场景列表将用于控制场景加载的顺序。 您可以通过向上或向下拖动来调整场景的顺序。 平台列表 “构建区域中的场景”下的“平台”区域列出了您的Unity版本可用的所有平台。 某些平台可能显示为灰色,表明它们不是您的版本的一部分,或者邀请您下载特定于平台的构建选项。选择其中一个平台将控制将构建哪个平台。 如果更改目标平台,则需要按“切换平台”按钮应用更改。 这可能需要一些时间进行切换,因为您的资产可能需要以符合您的目标平台的格式重新导入。 当前选择的平台在平台名称右侧用Unity图标指示。 所选平台将显示可针对构建进行调整的选项列表。

Working around gl_PointSize limitations in three.js / webGL

假装没事ソ 提交于 2020-12-01 07:18:50
问题 I'm using three.js to create an interactive data visualisation. This visualisation involves rendering 68000 nodes, where each different node has a different size and color. Initially I tried to do this by rendering meshes, but that proved to be very expensive. My current attempt is to use a three.js particle system, with each point being a node in the visualisation. I can control the color * size of the point, but only to a certain point. On my card, the maximum size for a gl point seems to

Working around gl_PointSize limitations in three.js / webGL

血红的双手。 提交于 2020-12-01 07:18:01
问题 I'm using three.js to create an interactive data visualisation. This visualisation involves rendering 68000 nodes, where each different node has a different size and color. Initially I tried to do this by rendering meshes, but that proved to be very expensive. My current attempt is to use a three.js particle system, with each point being a node in the visualisation. I can control the color * size of the point, but only to a certain point. On my card, the maximum size for a gl point seems to

WebGL编程指南读书笔记 | 第二章 WebGL入门

送分小仙女□ 提交于 2020-11-30 07:01:33
getrWebGLContext() 获取上下文 gl.clearColor() 指定绘图区域背景色 R,G,B,A gl.clear(buffer) 将缓冲区设定为预定的值,颜色、深度、模板缓冲区 着色器(shader) WebGL有两种着色器: 顶点着色器(Vertex shader) 用来描述顶点特性(位置、颜色)的程序 顶点(Vertex)指二维或三维空间中的点 片元着色器(Fragment shader)进行逐片元处理过程 片元(fragment) 像素 图像的单元 顶点着色器指定点的位置和尺寸 片元着色器指定点的颜色 initShader(gl, vshader, fshader) 在WebGL系统内部建立和初始化着色器 齐次坐标 提高处理三维数据的效率(x,y,z,w)等价于(x/w,y/w,z/w) w的值大于等于0 gl.FragColor 内置变量 指定片元颜色 WebGL的坐标系统 右手坐标系 canvas坐标 中心点(0,0,0) 上下左右边缘分别为1 attribute 存储限定符 数据从着色器外部传入给该对象 attribute vec4 a_Position 获取attribute变量的存储位置: gl.getAttribLocation(gl.program,name) 程序对象,包括顶点着色器和片元着色器 向attribute变量传值 gl

webgl系列:webgl基础网站分享

扶醉桌前 提交于 2020-11-30 05:44:57
"WebGL经常被当成3D API,人们总想'我可以使用WebGL和一些神奇的东西做出炫酷的3D作品'。 事实上WebGL仅仅是一个光栅化引擎,它可以根据你的代码绘制出点,线和三角形。 想要利用WebGL完成更复杂任务,取决于你能否提供合适的代码,组合使用点,线和三角形代替实现。" 使用webgl可以以高性能,开发出很多炫酷的效果,像地图中的一些动态效果,echarts开发的效果,借助webgl的底层开发,比直接使用js的canvas的api能提升相当多的性能。 分享wegl中文学习网站: https://webglfundamentals.org/webgl/lessons/zh_cn/webgl-fundamentals.html webgl的glsl语法学习网站: https://github.com/wshxbqq/GLSL-Card glsl的示例效果网站: http://www.glslsandbox.com/ webgl的一个帮助类库: http://twgljs.org/ 本文分享自微信公众号 - 技术几句杂谈(tecsimplepoint)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u

GraphQL

瘦欲@ 提交于 2020-11-25 03:23:39
感谢支持ayqy个人订阅号,每周义务推送1篇( only unique one )原创精品博文,话题包括但不限于前端、Node、Android、数学(WebGL)、语文(课外书读后感)、英语(文档翻译) 如果觉得弱水三千,一瓢太少,可以去 http://blog.ayqy.net 看个痛快 写在前面 本文第一部分翻译自REST 2.0 Is Here and Its Name Is GraphQL,标题很有视觉冲击力,不小心上钩了 剩余部分是对GraphQL的思考。现在,我们边看译文边汇聚疑问 一.译文 GraphQL是一种API查询语言。虽然与REST有本质区别,但GraphQL可以作为REST的备选项,它提供了高性能、良好的开发体验和一些强大的工具 通过本文,我们来看看怎样用REST和GraphQL来处理一些常见场景。本文附有3个项目,提供了流行电影和演员信息API,还用HTML和jQuery搭了个简单的前端应用,可以查看对应的REST和GraphQL源码 我们将通过这些API来看这两种技术的差异,以便了解其优缺点。开始之前,先布置舞台,快速过一下这些技术是怎么冒出来的 Web早期 Web早期很简单,早期的Web应用就是静态HTML文档。演化到网站想包含存在数据库(例如SQL)里的动态内容,并通过JavaScript来添加交互功能

基于 HTML5 + WebGL 的 3D 风力发电场

ぐ巨炮叔叔 提交于 2020-11-24 05:00:09
前言 风能是一种开发中的洁净能源,它取之不尽、用之不竭。当然,建风力发电场首先应考虑气象条件和社会自然条件。近年来,我国海上和陆上风电发展迅猛。海水、陆地为我们的风力发电提供了很好地质保障。正是这些场地为我们的风力提供了用之不竭的能源。现在我们正在努力探索这些领域。 本文章实现了风力发电场的整体流程。能让大家能够看到一套完整风力发电预览体系。 需要注意的是,本次项目是使用 Hightopo 的 HT for Web 产品来搭建的。 预览地址: https://hightopo.com/demo/wind-power-station/ 大致流程 下面是整个项目的流程图。我们从首页可以进入到场区分布页面和集控页面。 场区分布页面又包括两个不同的 3D 场景,分别是陆地风机场和海上风机场。点击两个 3D 风机场最终都会进入到 3D 风机场景。 预览效果 首页: 1. 世界地图效果 2. 中国地 图效果 2. 城市地图效果 集控中心页面(没有动画效果): 场区分布页面 (没有动画效果) : 陆地风机场: 海上风机场: 代码实现 我们可以看到,首页的地球有三种视角状态,世界地图、中国地图、城市地图。点击每个状态相机就会转到对应的位置。在这之前我们要先预先存一下对应的 center 和 eye 。 我们最好新建一个 data.js 文件,专门用来提供数据。 相关伪代码如下: // 记录位置

JavaScript展开操作符(Spread operator)介绍

落爺英雄遲暮 提交于 2020-11-24 02:40:10
本文介绍JavaScript的展开操作符(Spread operator) ... 。本文适合ES6初学者。 你可以通过展开操作符(Spread operator) ... 扩展一个数组对象和字符串。展开运算符(spread)是三个点(…),可以将可迭代对象转为用逗号分隔的参数序列。如同rest参数的逆运算。 用于数组 以数组为例,首先创建一个数组, const a = [ 1, 2, 3], b = [ 4, 5, 6]; 你可以轻松赋值一个数组: const c = [...a] // [1,2,3] 你还可以轻松拼接两个数组: const d = [...a,...b] // [1,2,3,4,5,6] 也可以如下拼接 const d = [...a, 4, 5, 6] // [1,2,3,4,5,6] 如果要把一个数组b的元素全部插入到数组a的后面(不生成新数组),可以这样操作: const a = [ 1, 2, 3]; a.push(...b); 如果要把一个数组b的元素全部插入到数组a的前面(不生成新数组),可以这样操作: const a = [ 1, 2, 3]; a. unshift(...b); 类数组对象变成数组 可以通过展开运算符把类数组对象变成真正的数组: var list=document.getElementsByTagName( 'a'); var