WebGL

Use of futures for async loading

血红的双手。 提交于 2019-12-23 16:28:12
问题 I decided to learn Dart and my project for doing so will be a small webgl game. The use of a single thread with aysnc operations and futures are new to me though and while I understand the concepts I'm finding it a little hard to know how to use them. In my game I want to load a webgl GLSL program. To create this program I first have to load a vertex shader and a fragment shader from files. So I've written this which seems to work ok for loading and compiling the shaders. The problem I have

Can I avoid texture gradient calculations in webgl?

孤街醉人 提交于 2019-12-23 14:53:38
问题 We have a webgl/three.js application that makes extensive use of texture buffers for passing data between passes and for storing arrays of data. None of these has any use for mipmaps. We are easily able to prevent mipmap generation: at the three.js level we set min and mag filters to NearestFilter, and set generateMipmaps false. However, the shaders do not know at compile time that there is no mipmapping. When compiled using ANGLE we get a lot of warning messages: warning X4121: gradient

基于HTML5的WebGL结合Box2DJS物理引擎应用

匆匆过客 提交于 2019-12-23 13:48:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上篇 我们基于 HT for Web 呈现了 A* Search Algorithm 的3D寻路效果,这篇我们将采用 HT for Web 3D 来呈现Box2DJS物理引擎的碰撞效果,同上篇其实Box2DJS只是二维的平面碰撞物理引擎,但同样通过3D的呈现能让人更直观的体验到碰撞效果,先上张最终例子效果图: http://hightopo.com/demo/box2djs/ht-box2d-demo.html Box2D最早是Erin Catto在 GDC 大会上的一个展示例子,后来不断完善成C++的开源物理引擎库,这些年了衍生出Java、ActionScript以及JS等版本,被广泛应用在游戏领域。说其丰富的确很丰富,说乱也够乱的,找个Box2D的JS版就有N多选择,而且不同版本API还有差异,可参考这里的对比 http://stackoverflow.com/questions/7628078/which-box2d-javascript-library-should-i-use 虽然版本较多有点乱,但各个版本的基本原理和API都类似,以下为我基于Box2DJS融合 HT for Web 写的例子代码。Box2D有很多参数功能点,这里例子我们仅呈现最基础简单的要素

基于HT for Web 3D呈现Box2DJS物理引擎

我的梦境 提交于 2019-12-23 13:46:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上篇 我们基于 HT for Web 呈现了 A* Search Algorithm 的3D寻路效果,这篇我们将采用 HT for Web 3D 来呈现Box2DJS物理引擎的碰撞效果,同上篇其实Box2DJS只是二维的平面碰撞物理引擎,但同样通过3D的呈现能让人更直观的体验到碰撞效果,先上张最终例子效果图: Box2D最早是Erin Catto在 GDC 大会上的一个展示例子,后来不断完善成C++的开源物理引擎库,这些年了衍生出Java、ActionScript以及JS等版本,被广泛应用在游戏领域。说其丰富的确很丰富,说乱也够乱的,找个Box2D的JS版就有N多选择,而且不同版本API还有差异,可参考这里的对比 http://stackoverflow.com/questions/7628078/which-box2d-javascript-library-should-i-use 虽然版本较多有点乱,但各个版本的基本原理和API都类似,以下为我基于Box2DJS融合 HT for Web 写的例子代码。Box2D有很多参数功能点,这里例子我们仅呈现最基础简单的要素,主要让大家理解Box2DJS引擎的基本使用,以及呈现上如何与 HT for Web 结合。 function init() { dm = new

基于HT for Web的3D呈现A* Search Algorithm

僤鯓⒐⒋嵵緔 提交于 2019-12-23 13:42:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近搞个游戏遇到最短路径的常规游戏问题,一时起兴基于 HT for Web 写了个A*算法的WebGL 3D呈现,算法基于开源 https://github.com/bgrins/javascript-astar 的javascript实现,其实作者也有个不错的2D例子实现 http://www.briangrinstead.com/files/astar/ ,只不过觉得所有A*算法的可视化实现都是平面的不够酷,另外还有不少参数需要调节控制,还是值得好好搞个全面的Demo,先上张2D和3D例子的对照图。 实现代码比较容易一百多行,不过算法核心在astar.js了,界面核心在 ht.js 里面了,我只需要构建网格信息,只需监听用户点击,然后调用astar.js进行最短路径计算,将结果通过动画的方式呈现出走动的过程,所有代码如下: function init() { w = 40; m = 20; d = w * m / 2; gridRows = []; dm = new ht.DataModel(); g3d = new ht.graph3d.Graph3dView(dm); g3d.setGridVisible(true); g3d.setGridColor('#BBBBBB'); g3d

基于HTML5的WebGL呈现A星算法的3D可视化

拥有回忆 提交于 2019-12-23 13:41:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近搞个游戏遇到最短路径的常规游戏问题,一时起兴基于 HT for Web 写了个A*算法的WebGL 3D呈现,算法基于开源 https://github.com/bgrins/javascript-astar 的javascript实现,其实作者也有个不错的2D例子实现 http://www.briangrinstead.com/files/astar/ ,只不过觉得所有A*算法的可视化实现都是平面的不够酷,另外还有不少参数需要调节控制,还是值得好好搞个全面的Demo,先上张2D和3D例子的对照图。 http://www.hightopo.com/demo/astar/astar.html 实现代码比较容易一百多行,不过算法核心在astar.js了,界面核心在 ht.js 里面了,我只需要构建网格信息,只需监听用户点击,然后调用astar.js进行最短路径计算,将结果通过动画的方式呈现出走动的过程,所有代码如下: function init() { w = 40; m = 20; d = w * m / 2; gridRows = []; dm = new ht.DataModel(); g3d = new ht.graph3d.Graph3dView(dm); g3d.setGridVisible

基于HT的CSG功能构建HTML5的3D书架

杀马特。学长 韩版系。学妹 提交于 2019-12-23 13:41:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 构造实体几何 CSG 全称 Constructive solid geometry ,是3D计算机图形学中构建模型的常用技术,可通过合并Union、相减Subtraction和相交Intersction的三种取集的逻辑运算,将立方体、圆柱体和棱柱等简单的基础模型,嵌套组合成更复杂三维模型。 CSG的算法这些年来已有各种语言平台版本实现,C++版主流的是 http://opencsg.org/ 已有众多基于该开源类库的应用案例,JavaScript语言较早版实现 http://evanw.github.io/csg.js/ 影响较广,很多其他js衍生版都是基于该版本进行改进完善,包括Java版的实现 https://github.com/miho/JCSG ,可参考基于JavaFX的3D打印IDE https://github.com/miho/JFXScad ,提起JavaFX视乎这些年完全消失在程序员视野毫无声息,但还是有一群拥护者持续在使用着如今地位有点尴尬的JavaFX。 回到我们今天要搞的3D书架例子,我们将基于 HT for Web 的3D引擎来实现, HT 已经内置了CSG功能的模型封装,我们通过构建CSGNode图元对象,该类型图元可对Host吸附的图元进行CSG技术的合集、并集和补集的三种操作

HTML5的WebGL实现的3D和2D拓扑树

℡╲_俬逩灬. 提交于 2019-12-23 13:41:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在 HT for Web 中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在展现上配合 HT for Web 的弹力布局组件会显得比较直观,一眼望去可以把整个树状结构数据看个大概,但是在弹力布局的作用下,其层次结构看得就不是那么清晰了。所以这时候结构清晰的3D树的需求就来了,那么这个 3D树 具体长成啥样呢,我们来一起目睹下~ 要实现这样的效果,该从何下手呢?接下来我们就将这个问题拆解成若干个小问题来解决。 1. 创建一个树状结构 有了解过 HT for Web 的朋友,对树状结构数据的创建应该都不陌生,在这里我就不做深入的探讨了。树状结构数据的创建很简单,在这里为了让代码更简洁,我封装了三个方法来创建树状结构数据,具体代码如下: /** * 创建连线 * @param {ht.DataModel} dataModel - 数据容器 * @param {ht.Node} source - 起点 * @param {ht.Node} target - 终点 */ function createEdge(dataModel, source, target) { // 创建连线

What's the state of OffscreenCanvas's support for 2d context?

折月煮酒 提交于 2019-12-23 13:30:59
问题 I'm new to web development, so this might be a dumb question. Please let me know if it's already answered:) According to MDN web docs' page for OffscreenCanvas , currently, the API only supports WebGL context only. (Maybe it just means the worker support for OffscreenCanvas ' 2d context is not implemented, but we can still use it on the main thread?) Note: This API is currently implemented for WebGL1 and WebGL2 contexts only. See bug 801176 for Canvas 2D API support from workers. But when I

Three.js/GLSL - Convert Pixel Coordinate to World Coordinate

流过昼夜 提交于 2019-12-23 12:46:59
问题 I have a simple shader in my Three.js application that colors the screen red. However, I want to color all pixels to the right of a given world position to to a different color. I have seen some answers that suggest using varying vec4 worldCoord = gl_ModelViewMatrix * gl_Vertex; , but since WebGL using GLSLES, variables like gl_Vertex are not available to me. Vertex Shader <script type="x-shader/x-vertex" id="vertexshader"> #ifdef GL_ES precision highp float; #endif void main() { gl_Position