GG修改器破解版下载地址:https://ghb2023zs.bj.bcebos.com/d/z/p/d/dbzs.apk?GGXGQ
大家好,今天小编为大家分享关于gg游戏修改器上色_gg修改器游戏修改的内容,赶快来一起来看看吧。
在这个教程中,我们将学习如何搭建一个3D场景,如何编写GLSL程序并使用Vertex Shader和Fragment Shader重建澳洲著名的Ululu巨岩附近的真实地形。为了方便起见,我们将使用Three.js和React来编写本教程中的示例代码。
你可能知道微软去年8月发布的游戏 Flight Simulator,如果你和我一样对飞行模拟器或在计算机中重建现实生活中场景,可能已经花了很多时间敬畏地注意到这个游戏中的那些惊人的细节。
Flight Simulator使用Bing地图的卫星扫描和地形数据实时生成地形。我不会详细解释这里的细节,不过你可以在这里 查看具体说明。可以肯定地说,游戏的确准确的重建了现实生活中的地方,有人说,他们甚至在飞过所在城镇时发现自己的房子。
这篇文章将帮助你重现类似的现实场景,尽管细节要小得多,规模要小得多,然而我想你依然会发现这是令人兴奋的。
让我们开始吧。
自从WebGL将 OpenGL 的强大功能引入 Web 以来,开发可以通过 Web访问的具有复杂纹理和照明的 3D 环境 就变得可行。Webgl为开发人员提供了一种在带有 Web 浏览器和支持 WebGL 的任何平台上展示其作品的方法。如今,支持 WebGL 的平台列表相当庞大,已经覆盖了很大一部分用户群。
Three.js允许开发人员在 JavaScript 中编写代码并与浏览器 API(如DOM、音频 API和WebSockets)进行交互,从而让开发人员更容易使用。此外,Three.js还允许你直接调用WebGL 层的API。
最近,一个名为react-three-fiber 的js库更进一步,支持开发人员毫不费力地使用 JSX 声明式地编写其Three.js代码。
我们将尝试在Three.js中重现一片地形,并尝试使其尽可能逼真。
但首先,让我们建立一个最小可运行的程序,以便得到一些有形的东西。
我们将首先中创建一个小场景。此场景将包含:
以下是实现的效果,代码可以访问这里:
要更全面地了解此代码的工作原理,你应该查看Vikrant 的文章,中有关react-three-fiber基本原理的解释。
我们要构建的”地形”现在只是一个绿色的方块。因此,下一步将获取所需的数据,使其看起来更像地球。
首先,让我们在地球上选一个好地方。
在这篇文章中,我们将使用一个现实生活中的位置。乌鲁鲁(也称为艾尔斯岩)是澳大利亚中部的自然岩层,它已经被列为联合国教科文组织世界遗产。乌鲁鲁主要是砂岩,有独特的红褐色,周围是Uluṟu-Kata Tjuṯa国家公园的干旱景观。完美的测试位置。
它是谷歌地球上的特色网站之一。
很漂亮,不是吗?几乎就像火星表面一样。我选择这个地方是因为地形有一些突出的特点,这将是有趣的重建过程,地形高度的变化也非常独特。
我们将分两步重建地形:
对于这两个步骤,我们都需要不同类型的数据,因此我们将在每一步之前获取这些数据。
在许多情况下,描述一件事情的最简单方法是用图片。就计算机图形而言,图像可以是最有效的编码数据形式之一,其附加优势是允许人类轻松感知这些数据。
我们需要的第一个数据是地形上每个点的高度或高度映射。这样做的一种方法是将地球表面的点映射到图像中的像素,每个像素代表一些有关地表上的点或区域的数据。
人们所能想到的最自然的映射方法是:像素颜色越浅,对应的点在地球上就越高。
幸运的是,有几个工具恰好可以实现这个。一个相当流行的例子是terrain.party,Cities:Skylines社区使用它在游戏中生成地形。
但是,我们将使用另一种免费的在线工具,称为Tangrams Heightmapper。
以下是整个澳大利亚的高度图:
我们需要澳大利亚的一个特定部分。因此,放大乌鲁鲁所在坐标:
tangrams.github.io/heightmapper/#15.19444/-..
白色部分是乌鲁鲁,要更高一些,而周围几乎是黑色的,是岩层地面。
Tangrams 封装了一些复杂的工作,确保最低位(海拔 500 米)为黑色(#000),而乌鲁鲁峰(海拔 800 米)为白色(#fff),其余的则线性映射在两者之间。
在将足够范围的地形导出为PNG文件后,我使用GIMP将其缩放并裁剪成 1024×1024 格式。对于下面处理来说,高度和宽度是2的乘方很重要。
以下是最终得到的高度图:
现在,我们需要将此添加到Three.js场景,以便我们的平面开始像最终地形转化。
但首先…
着色器/Shader是一种由若干参数决定像素外观的函数。在 WebGL 中,有两种类型的着色器:
让我们在3D对象的上下文中讨论这些。任何 3D 对象的表面都可以表示为一堆多边形。通常,我们使用三角形,因为它们简单而且可以保证是平面。
简单的说,顶点着色器决定这些多边形的顶点在 3D 空间中的渲染位置,而片元着色器则决定这些顶点之间的空间将是什么样子。
因此,顶点着色器将帮助我们使用高度图来塑造我们的地形,而片元着色器当我们需要应用纹理将是有用的。
为此,我们需要修改之前的代码,因为之前使用的材料(MeshBasicMaterial)已经不能满足要求了。相反,我们需要一种叫做ShaderMaterial的特殊材料,它允许我们传入手工制作的着色器。
WebGL 着色器采用 GLSL 语言编写,在某些方面类似于C++,但可编译为直接在 GPU 上运行。每个着色器都有一个主函数,此函数中的代码将应用于 GPU 帧缓冲区中的每个像素。
在Three.js中,这些着色器可以作为字符串传递到ShaderMaterial中。只要字符串是有效的 GLSL 程序就可以正常工作。
我们将制作一个顶点着色器,它采用高度图中每个像素的Red通道值(RGBA 中的 R),并将其与缩放因子相结合,以决定 X-Z 平面上方每个点的高度(我们的地形所在的平面)。
我们也可以使用蓝色和绿色通道,但由于是转换为灰度,这些值将与高度图中的红色组件相同。
我们还将创建一个基本的偏远着色器,只需较高的绿色阴影上生成点,以便我们能够很容易地看到结果。
下面是顶点着色器代码:
// Uniforms are data that are shared between shaders
// The contain data that are uniform across the entire frame.
// The heightmap and scaling constant for each point are uniforms in this respect.
// A uniform to contain the heightmap image
uniform sampler2D bumpTexture;
// A uniform to contain the scaling constant
uniform float bumpScale;
// Varyings are variables whose values are decided in the vertext shader
// But whose values are then needed in the fragment shader
// A variable to store the height of the point
varying float vAmount;
// The UV mapping coordinates of a vertex
varying vec2 vUV;
void main()
{
// The "coordinates" in UV mapping representation
vUV = uv;
// The heightmap data at those coordinates
vec4 bumpData = texture2D(bumpTexture, uv);
// height map is grayscale, so it doesn’t matter if you use r, g, or b.
vAmount = bumpData.r;
// move the position along the normal
vec3 newPosition = position + normal * bumpScale * vAmount;
// Compute the position of the vertex using a standard formula
gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);
}
最后的结果还不错。
好了,我们使用高度图和顶点着色器将地形高度转换为ShaderMaterial。 我们还获得了一个大小、缩放级别和位置都一致的纹理地图。
现在,我们需要创建一个片元着色器,可以将地形纹理映射为ShaderMaterial 。
在我们的例子中实现这个环节是令人惊讶的简单。我们只需要读取纹理地图图像,并使用偏远着色器设置相应像素的颜色。
以下是片元着色器的代码:
// A uniform fot the terrain texture image
uniform sampler2D terrainTexture;
// Get the varyings from the vertex shader
varying vec2 vUV;
// vAmount isn’t really used, but could be if necessary
varying float vAmount;
void main()
{
// Get the color of the fragment from the texture map
// at that coordinate in the UV mapping
gl_FragColor = texture2D(terrainTexture, vUV);
}
下面是最终的运行结果:
漂亮!我们做到了!我们已经使用Uluru和Three.js创建了一个虚拟的乌鲁鲁!
点击这里查看最终完成的代码。
在本文中,我们尝试建立了一个基本的3D场景,学习了两种类型的材料(MeshBasicMaterial 和ShaderMaterial),学习了如何使用定制的着色器,并使用Three.js和React重现一块真实世界的地形。
结果相当不错。我们还可以做更多的事情,下次再见!
原文链接:http://www./blog/webgl-shader/
以上就是关于gg游戏修改器上色_gg修改器游戏修改的全部内容,希望对大家有帮助。
root工具gg修改器,如何用 root 工具 gg 修改器提升游戏体验 大小:4.26MB4,134人安装 有时候,我们玩游戏的时候遇到了难以逾越的难点,或是体验不尽人意,这时候我们需要……
下载gg游戏修改器改移动回城,GG游戏修改器:让你轻松改良游戏体验 大小:13.95MB3,747人安装 玩游戏是许多人的娱乐方式之一,但有时游戏的难度甚至不合理的设计可能会让我们感到……
下载gg修改器免root老版_GG修改器免ROOT版下载 大小:4.58MB4,833人安装 大家好,今天小编为大家分享关于gg修改器免root老版_GG修改器免ROOT版下载的内容,……
下载gg修改器root权,GG修改器root权限万能神器 大小:17.99MB3,442人安装 随着智能手机的普及,越来越多的人使用手机来玩游戏。但是,有些手机游戏需要root权……
下载虚拟空间gg修改器最新版,让游戏变得更有趣的神器虚拟空间gg修改器最新版 大小:14.16MB3,868人安装 对于喜欢游戏的人来说,有些时候游戏难度过大、玩久了无趣,这时候就需要一些好用的……
下载gg修改器最新怎么用,GG修改器的最新使用方法 大小:4.89MB3,655人安装 GG修改器是一款非常受欢迎的游戏修改工具,它可以帮助玩家修改游戏内的数据,进而提……
下载GG修改器王者荣耀中文版_gg修改器,王者荣耀 大小:3.05MB4,887人安装 大家好,今天小编为大家分享关于GG修改器王者荣耀中文版_gg修改器,王者荣耀的内容,……
下载GG修改器香肠派对最新脚本,GG修改器带来最新的香肠派对脚本,让你畅玩游戏 大小:15.68MB3,966人安装 GG修改器是一款非常实用的游戏辅助工具,在许多游戏中都有广泛的应用。而在最近备受……
下载gg修改器不root权限_gg修改器怎么root权限 大小:18.72MB4,912人安装 大家好,今天小编为大家分享关于gg修改器不root权限_gg修改器怎么root权限的内容,……
下载gg游戏修改器负数,gg游戏修改器负数:为游戏挑战加倍 大小:11.00MB3,458人安装 随着游戏玩家水平的不断提高,游戏的难度也在不断提升。许多玩家为了更好的游戏体验……
下载