GG修改器破解版下载地址:https://ghb2023zs.bj.bcebos.com/gg/xgq/ggxgq?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修改器游戏修改的全部内容,希望对大家有帮助。
gg修改器修免root方法_Gg修改器如何免root 大小:12.01MB5,425人安装 大家好,今天小编为大家分享关于gg修改器修免root方法_Gg修改器如何免root的内容,……
下载手机gg游戏修改器下载,手机GG游戏修改器下载让游戏变得更有趣 大小:10.73MB4,459人安装 手机游戏的普及让人们可以随时随地享受游戏的乐趣,但是有些游戏却需要不断的付出时……
下载gg游戏修改器全部使用教程,令人惊叹的gg游戏修改器:全部使用教程赏析 大小:12.07MB4,654人安装 游戏玩家们都知道,一款游戏的乐趣往往在于探索和挑战。然而,在游戏过程中可能会遇……
下载王者荣耀gg修改器下载安装中文,王者荣耀gg修改器下载安装中文 — 娱乐游戏的完美伙伴 大小:12.21MB4,420人安装 现代科技的不断发展让游戏行业蓬勃发展,越来越多的人选择用游戏来放松身心。而《王……
下载gg修改器root怎么授权_gg修改器授权root失败怎么办 大小:19.66MB5,457人安装 大家好,今天小编为大家分享关于gg修改器root怎么授权_gg修改器授权root失败怎么办……
下载gg修改器未root能用吗_gg修改器不root能用吗 大小:7.71MB5,292人安装 大家好,今天小编为大家分享关于gg修改器未root能用吗_gg修改器不root能用吗的内容……
下载gg修改器必须root才能用,GG修改器打造顶级游戏体验 大小:3.10MB4,210人安装 随着游戏行业的不断发展,越来越多的游戏玩家发现,单靠游戏自带的设置和操作难以满……
下载gg修改器王者荣耀最新版本,GG修改器王者荣耀最新版本:无比强大的游戏助手 大小:15.20MB4,235人安装 王者荣耀早已成为众多游戏爱好者的最爱,但是在这样一款游戏中,想要达到高水平并不……
下载gg修改器免rootqq群,强大而便捷gg修改器免rootqq群 大小:6.22MB4,306人安装 gg修改器是一款修改安卓游戏内存数据的工具。众所周知,很多游戏中的内购物品或者金……
下载GG修改器无ROOT怎么办,GG修改器无ROOT怎么办 大小:16.54MB4,285人安装 GG修改器无疑是一款非常优秀的手机游戏修改器,它能够帮助玩家修改游戏数据,进而获……
下载