CN110163945B - Water surface simulation method in real-time rendering - Google Patents
Water surface simulation method in real-time rendering Download PDFInfo
- Publication number
- CN110163945B CN110163945B CN201910442598.2A CN201910442598A CN110163945B CN 110163945 B CN110163945 B CN 110163945B CN 201910442598 A CN201910442598 A CN 201910442598A CN 110163945 B CN110163945 B CN 110163945B
- Authority
- CN
- China
- Prior art keywords
- water surface
- fragment
- reflection
- vector
- color
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 title claims abstract description 160
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000009877 rendering Methods 0.000 title claims abstract description 34
- 238000004088 simulation Methods 0.000 title claims abstract description 26
- 239000012634 fragment Substances 0.000 claims description 95
- 239000013598 vector Substances 0.000 claims description 77
- 238000005070 sampling Methods 0.000 claims description 27
- 239000011159 matrix material Substances 0.000 claims description 21
- 230000009466 transformation Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 8
- 238000001028 reflection method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 39
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000004364 calculation method Methods 0.000 abstract description 5
- 238000004422 calculation algorithm Methods 0.000 abstract description 4
- 230000002452 interceptive effect Effects 0.000 abstract description 2
- 238000012360 testing method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/30—Assessment of water resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明涉及一种实时渲染中的水面仿真的方法,属于计算机图形学领域,旨在解决现有水面实时渲染仿真技术中无法兼顾真实感与计算效率的问题。本发明主要包含七个算法模块或部分,即:倒影摄像机、片元法线生成模块、水面反射颜色生成模块、水底颜色生成模块、菲涅尔系数生成方法、高光反射颜色生成方法、水面颜色混合方法。本发明通过上述算法模块或者部分的配合,可以得到最终的水面效果。本发明可应用于主流实时三维编程接口:OpenGL或DirectX。此外,本发明所采用的方法,在不涉及水体本身物理模拟,不涉及水面下观察的三维交互应用中,能够兼顾真实感与计算效率。
The invention relates to a method for water surface simulation in real-time rendering, belongs to the field of computer graphics, and aims to solve the problem that the existing real-time rendering simulation technology of water surface cannot give consideration to both realism and calculation efficiency. The present invention mainly includes seven algorithm modules or parts, namely: reflection camera, slice normal generation module, water surface reflection color generation module, underwater color generation module, Fresnel coefficient generation method, highlight reflection color generation method, water surface color mixing method. The present invention can obtain the final water surface effect through the cooperation of the above algorithm modules or parts. The present invention can be applied to mainstream real-time three-dimensional programming interface: OpenGL or DirectX. In addition, the method adopted in the present invention can give consideration to both realism and computational efficiency in a three-dimensional interactive application that does not involve physical simulation of the water body itself and does not involve observation under the water surface.
Description
技术领域technical field
本发明涉及一种实时渲染中的水面仿真方法,属于计算机图形学实时渲染领域,应用于视频游戏,交互艺术,实时3D环境模拟或场景设计行业。The invention relates to a water surface simulation method in real-time rendering, which belongs to the field of real-time rendering of computer graphics and is applied to video games, interactive art, real-time 3D environment simulation or scene design industries.
背景技术Background technique
近年来,随着硬件设备与娱乐产业的发展,人们愈加重视三维显示效果,其中实时渲染得到的三维显示效果尤其引人注目。在实时渲染的三维场景中,水面效果拥有广泛的应用场景。只要涉及到有关日常生活或者自然场景的模拟,就必然会涉及到水面效果的模拟。In recent years, with the development of hardware equipment and the entertainment industry, people have paid more and more attention to the 3D display effect, among which the 3D display effect obtained by real-time rendering is particularly eye-catching. In real-time rendered 3D scenes, water surface effects have a wide range of application scenarios. As long as it involves the simulation of daily life or natural scenes, it will inevitably involve the simulation of water surface effects.
为了便于理解,在此简单介绍图形学基本知识。我们以高阶着色器语言(HLSL)为例,简单介绍渲染管线和空间变换。首先,高阶着色器语言能够让我们使用可编程的图形硬件,让我们可以控制物体的形状,外观和运动方式。一个管线是一系列并行执行并且顺序固定的步骤。每一个步骤会接收到来自前一个步骤的输入,并把结果输出到下一个紧邻着的步骤。就如同一个装配流水线一样,有许多的汽车在同时被制造和装配,但他们处于同一条线的不同阶段。整体来说,一个渲染流水线会被输入一个3D场景的描述,以及一个有方向,有位置的虚拟摄像机。这个渲染流水线只能就是整个的把摄像机看到的东西,转化成2D图像的流程。在本方法中,只涉及对于顶点着色器阶段和片元着色器阶段的编程。比如顶点着色器,在基本几何图元被组装完成之后,这些顶点会被给到顶点着色器阶段。顶点着色器可以被看做一个函数,它的输入是一个顶点,它的输出也是一个顶点。每一个需要被画出来的顶点都会流经这个顶点着色器。又比如片元着色器,一个片元着色器会为每一个像素片元执行一次,并且,它会使用被插值的顶点属性作为输入的数据,去计算颜色。一个像素着色器可以很简单,比如就是附上一个固定的颜色。当然,它也可以很复杂,比如去计算逐像素的光照、反射和阴影效果。For ease of understanding, here is a brief introduction to the basics of graphics. We take the high-level shader language (HLSL) as an example to briefly introduce the rendering pipeline and space transformation. First, high-level shader languages allow us to use programmable graphics hardware, allowing us to control the shape, appearance and movement of objects. A pipeline is a series of steps executed in parallel and in a fixed order. Each step receives input from the previous step and outputs results to the next immediately following step. Just like an assembly line, there are many cars being manufactured and assembled at the same time, but they are in different stages of the same line. Overall, a rendering pipeline is fed a description of a 3D scene and a virtual camera with orientation and position. This rendering pipeline can only be the entire process of converting what the camera sees into a 2D image. In this method, only the programming for the vertex shader stage and the fragment shader stage is involved. For example, the vertex shader, after the basic geometric primitives are assembled, these vertices will be given to the vertex shader stage. A vertex shader can be thought of as a function whose input is a vertex and whose output is also a vertex. Every vertex that needs to be drawn flows through this vertex shader. Another example is the fragment shader. A fragment shader will be executed once for each pixel fragment, and it will use the interpolated vertex attributes as input data to calculate the color. A pixel shader can be as simple as attaching a fixed color. Of course, it can also be very complex, such as to calculate the lighting, reflection and shadow effects per pixel.
接下来,我们介绍图形管线中涉及到的空间变换的基本概念。总的来说,将一个三维的场景映射到二维需要涉及一下几个空间及变换。模型空间、世界空间、观察空间、裁剪空间以及屏幕空间。从模型空间到世界空间的变换叫模型变换、从世界空间到观察空间的变换叫观察变换、从观察空间到裁剪空间的变换叫投影变换、从裁剪空间到屏幕空间的变换叫屏幕映射。Next, we introduce the basic concepts of spatial transformations involved in the graphics pipeline. In general, mapping a 3D scene to 2D requires several spaces and transformations. Model space, world space, view space, clip space, and screen space. The transformation from model space to world space is called model transformation, the transformation from world space to observation space is called observation transformation, the transformation from observation space to clipping space is called projection transformation, and the transformation from clipping space to screen space is called screen mapping.
现有水面模拟技术往往存在两个极端,一类更加关注水体运动的科学性,如水面顶点如何在风力,水下作用力等多种影响下运动,进而科学地表达出水面波纹的效果;这一类水面模拟主要存在两个问题,第一个问题是这类技术往往会忽略其他同样可以显著增强水面真实性的效果,如:水面周围环境的反射、水面的高光、水下环境的折射、菲涅尔现象等;第二个问题在于其相对庞大的计算量,由于其通过改变水面的每一个顶点位置并结合漫反射模型得到水面波纹效果,这样会显著增加需要绘制的基本图元数量,进而使得显卡负担增加;此外,由于顶点位置是根据动态的物理参数计算得出的,所以它也会显著增加CPU的计算负担。综上,这一类效果往往是在专业的图形工作站上渲染出来的,它们很难应用在家用台式机,笔记本电脑,或者移动设备上。There are often two extremes in the existing water surface simulation technology. One type pays more attention to the scientific nature of water body movement, such as how the top of the water surface moves under the influence of wind force, underwater force, etc., and then scientifically expresses the effect of water surface ripples; There are two main problems in one type of water surface simulation. The first problem is that this type of technology often ignores other effects that can also significantly enhance the reality of the water surface, such as: reflection of the surrounding environment on the water surface, high light on the water surface, refraction of the underwater environment, Fresnel phenomenon, etc.; the second problem lies in its relatively large amount of calculation, because it changes the position of each vertex of the water surface and combines the diffuse reflection model to obtain the ripple effect of the water surface, which will significantly increase the number of basic primitives that need to be drawn. This in turn increases the burden on the graphics card; in addition, since the vertex position is calculated based on dynamic physical parameters, it also significantly increases the computational burden on the CPU. To sum up, this kind of effects are often rendered on professional graphics workstations, and they are difficult to apply on home desktops, laptops, or mobile devices.
另一类水面模拟技术更加关注计算效率,这类效果更加专注于如何在所有设备上运行,所以一般会舍弃一些水面效果,如:菲涅尔效应、高光模型甚至环境反射。但是,随着硬件的发展以及简化的菲涅尔计算公式以及简化的高光模型的理论提出,这些理论也应该可以应用到这些水面模拟技术之中,去增加水面的真实感。Another type of water surface simulation technology pays more attention to computing efficiency. This type of effect is more focused on how to run on all devices, so some water surface effects are generally discarded, such as: Fresnel effect, specular model and even environmental reflection. However, with the development of hardware and the theory of simplified Fresnel calculation formulas and simplified highlight models, these theories should also be applied to these water surface simulation technologies to increase the realism of the water surface.
发明内容Contents of the invention
针对上述现有技术的问题,本发明目的在于提供一种可以兼顾计算效率与真实感的实时水面仿真技术,其旨在解决当前水面模拟技术无法兼顾这两种特点的问题。In view of the above-mentioned problems in the prior art, the purpose of the present invention is to provide a real-time water surface simulation technology that can take into account both computational efficiency and realism, which aims to solve the problem that the current water surface simulation technology cannot take into account these two characteristics.
为达到上述目的,本发明采用的技术方案如下:In order to achieve the above object, the technical scheme adopted in the present invention is as follows:
一种基于OpenGL或DirectX图像应用编程接口的水面渲染流程。宏观来看包含两个步骤,即:倒影摄像机获取场景倒影图像、主摄像机渲染出包含水面的场景图像;与七个算法模块或部分,即:倒影摄像机、片元法线生成模块、水面反射颜色生成模块、水底颜色生成模块、菲涅尔系数生成方法、高光反射颜色生成方法、水面颜色混合方法。A water surface rendering process based on OpenGL or DirectX image application programming interface. From a macro perspective, it consists of two steps, namely: the reflection camera acquires the scene reflection image, the main camera renders the scene image containing the water surface; and seven algorithm modules or parts, namely: the reflection camera, the fragment normal generation module, and the reflection color of the water surface Generation module, underwater color generation module, Fresnel coefficient generation method, specular reflection color generation method, water surface color mixing method.
进一步地,所述第一个宏观步骤可以分成以下八个步骤,其中8由图像应用编程接口自动处理,见图2:Further, the first macroscopic step can be divided into the following eight steps, 8 of which are automatically processed by the image application programming interface, as shown in Figure 2:
1)创建倒影摄像机。这一步要完全复制主摄像机,作为倒影摄像机。完全复制的含义即为将主摄像机的位置与朝向数据复制给新建的倒影摄像机;1) Create a reflection camera. This step is to completely duplicate the main camera, as a reflection camera. The meaning of full copy is to copy the position and orientation data of the main camera to the newly created reflection camera;
2)获得关于水面平面的反射矩阵。这一步输入世界空间中的水面平面的四维向量表示,根据线性代数的镜面反射原理,计算得到在世界空间中的关于水面平面的反射矩阵;2) Obtain the reflection matrix about the water surface plane. In this step, input the four-dimensional vector representation of the water surface plane in the world space, and calculate the reflection matrix about the water surface plane in the world space according to the mirror reflection principle of linear algebra;
3)获得当前倒影摄像机的观察变换矩阵;3) Obtain the observation transformation matrix of the current reflection camera;
4)反射矩阵右乘观察变换矩阵;4) The reflection matrix is right multiplied by the observation transformation matrix;
5)用步骤4获得的矩阵替代当前倒影摄像机的观察变换矩阵。这一步得到的结果相当于让所有物体的顶点在从世界空间中转换到摄像机观察空间之前,先进行了关于水面平面的镜像变换;5) Replace the observation transformation matrix of the current reflection camera with the matrix obtained in step 4. The result obtained in this step is equivalent to making the vertices of all objects perform a mirror transformation on the water plane before converting from the world space to the camera observation space;
6)把表示当前水面平面的四维向量从世界空间变换到倒影摄像机观察空间。具体原理可参考线性代数中的空间变换;6) Transform the four-dimensional vector representing the current water plane from the world space to the observation space of the reflection camera. For specific principles, please refer to the space transformation in linear algebra;
7)将步骤6得到的水面平面四维向量作为近裁平面,修改倒影摄像机的投影矩阵。具体方法和原理可参考《游戏编程精粹5》第2章,第2.6节的内容;7) Use the four-dimensional vector of the water surface plane obtained in step 6 as the near clipping plane, and modify the projection matrix of the reflection camera. For specific methods and principles, please refer to Chapter 2, Section 2.6 of "The Essence of Game Programming 5";
8)倒影摄像机将视锥体内的场景渲染成水面平面的倒影图像。图形编程接口会自动访问倒影摄像机的投影矩阵,并自动执行该过程;8) The reflection camera renders the scene in the viewing frustum as a reflection image of the water plane. The graphical programming interface automatically accesses the reflection camera's projection matrix and automates the process;
进一步地,所述第二个宏观步骤可以分成以下七个步骤,其中2,5,7由图形应用编程接口自动处理。4,6由工程师自行编程并由图形应用编程接口自动调用,见图3:Further, the second macro step can be divided into the following seven steps, wherein 2, 5, and 7 are automatically processed by the graphics application programming interface. 4 and 6 are programmed by the engineer and automatically called by the graphic application programming interface, see Figure 3:
1)设置水面平面的渲染顺序,使其在场景中其他物体之后渲染;1) Set the rendering order of the water plane so that it is rendered after other objects in the scene;
2)依据渲染顺序,将排在水面平面之前的物体渲染到最终的图像中;2) According to the rendering order, render the objects before the water plane into the final image;
3)将此前倒影摄像机渲染出的二维图像与水面建立起关联。即:使得我们可以通过水面对象访问存储有倒影摄像机渲染出的二维图像数据;3) Associate the two-dimensional image rendered by the previous reflection camera with the water surface. That is: it allows us to access and store the two-dimensional image data rendered by the reflection camera through the water surface object;
4)输入渲染管线上一步的数据,进行水面顶点着色器处理,将产生的数据输出到下一步骤;在这一步中,通过编写好的水面顶点着色器,逐顶点的处理每个顶点附带的信息,获得水面中每个点在主摄像机裁剪空间中的位置、世界空间中的位置、世界空间中该顶点对应的切线向量、世界空间中该顶点对应的副切线向量、世界空间中该顶点对应的法线向量、该顶点对应的屏幕位置、该顶点对应的法线纹理坐标;4) Input the data of one step on the rendering pipeline, process it with the water surface vertex shader, and output the generated data to the next step; Information, obtain the position of each point in the water surface in the clipping space of the main camera, the position in the world space, the tangent vector corresponding to the vertex in the world space, the subtangent vector corresponding to the vertex in the world space, and the corresponding vertex in the world space The normal vector of the vertex, the screen position corresponding to the vertex, and the normal texture coordinates corresponding to the vertex;
5)图元组装,光栅化与插值;5) Primitive assembly, rasterization and interpolation;
6)输入渲染管线上一步的数据,水面片元着色器处理,将产生的数据输出到下一步骤。在这一步中,通过水面平面的片元着色器,依据之前获得的信息,得到每个水面平面片元的颜色及深度信息;6) Input the data of one step on the rendering pipeline, process it with the water surface fragment shader, and output the generated data to the next step. In this step, the color and depth information of each water plane fragment is obtained according to the previously obtained information through the fragment shader of the water plane;
7)更新主摄像机渲染的图像中的对应于水面平面位置的像素;7) Update the pixel corresponding to the position of the water surface in the image rendered by the main camera;
进一步地,第二个宏观步骤的第6个步骤可以分成以下六个步骤,步骤间依赖关系见图4,只要符合依赖关系,步骤间顺序可以随意调换:Further, the sixth step of the second macro-step can be divided into the following six steps. The dependencies between the steps are shown in Figure 4. As long as the dependencies are met, the order of the steps can be exchanged at will:
1)向片元法线生成模块输入其所需的数据,获得当前片元的,在切线空间下或世界空间下的法线向量。具体解释参见后文对于模块的描述;1) Input the required data to the fragment normal generation module to obtain the normal vector of the current fragment in tangent space or world space. For specific explanation, please refer to the description of the module below;
2)向水底颜色生成模块输入其所需的数据,获得当前片元对应的水底折射颜色。具体解释参见后文对于模块的描述;2) Input the required data to the underwater color generation module to obtain the underwater refraction color corresponding to the current fragment. For specific explanation, please refer to the description of the module below;
3)向水面反射颜色生成模块输入其所需的数据,获得当前片元对应的水面反射颜色。具体解释参见后文对于模块的描述;3) Input the required data to the water surface reflection color generation module to obtain the water surface reflection color corresponding to the current fragment. For specific explanation, please refer to the description of the module below;
4)获得视角方向和当前片元对应的世界空间下的法线向量的点积。对该点积使用下文中所述的菲涅尔简化公式方法,得到当前片元对应的菲涅尔系数。视角方向可以通过访问摄像机对应内置参数得到;4) Obtain the dot product of the view direction and the normal vector in the world space corresponding to the current fragment. Use the Fresnel simplified formula method described below to obtain the Fresnel coefficient corresponding to the current fragment. The viewing angle direction can be obtained by accessing the corresponding built-in parameters of the camera;
5)对当前片元对应的光的反射方向、高光颜色、视角方向以及光滑度系数使用Phong高光反射方法,得到当前片元对应的高光反射颜色;其中,光的反射方向可以由世界空间下法线向量与光的入射方向通过反射计算得到。光的入射方向可以直接通过图形编程接口获得。高光颜色与光滑度系数由使用者自行设置,方便及时调整最终效果。视角方向获取方式同步骤4。Phong高光反射方法参见后文;5) Use the Phong highlight reflection method for the light reflection direction, highlight color, viewing angle direction and smoothness coefficient corresponding to the current fragment to obtain the highlight reflection color corresponding to the current fragment; where the light reflection direction can be determined by the world space method The line vector and the incident direction of the light are calculated by reflection. The incident direction of light can be obtained directly through the graphical programming interface. The highlight color and smoothness coefficient are set by the user, which is convenient for adjusting the final effect in time. The method of obtaining the viewing angle direction is the same as step 4. See below for the Phong specular reflection method;
6)对步骤2获得的水底折射颜色、步骤3获得的水面反射颜色、步骤4获得的菲涅尔系数以及步骤5获得的高光反射颜色进行计算,得到该片元对应的最终的颜色。在这一步中,具体的计算方式为:6) Calculate the underwater refraction color obtained in step 2, the water surface reflection color obtained in step 3, the Fresnel coefficient obtained in step 4, and the highlight reflection color obtained in step 5 to obtain the final color corresponding to the fragment. In this step, the specific calculation method is:
水面反射颜色×菲涅尔系数+水底折射颜色×(1-菲涅尔系数)+高光反射颜色Water surface reflection color × Fresnel coefficient + underwater refraction color × (1-Fresnel coefficient) + specular reflection color
=该片元对应的最终颜色= The final color corresponding to the fragment
进一步地,片元法线生成模块所需的输入数据、操作步骤与生成的结果如下文所示。首先,该模块所需要的数据为:水面波纹的法线纹理、该片元对应的法线纹理坐标、世界空间中该片元对应的切线向量、世界空间中该片元对应的副切线向量、世界空间中该片元对应的法线向量、时间变量、用户输入的沿纹理X轴方向的采样间隔与沿纹理Y轴方向的采样间隔。接下来,为操作步骤:Furthermore, the input data, operation steps and generated results required by the fragment normal generation module are as follows. First of all, the data required by this module are: the normal texture of the water surface ripple, the normal texture coordinates corresponding to the fragment, the tangent vector corresponding to the fragment in the world space, the subtangent vector corresponding to the fragment in the world space, The normal vector and time variable corresponding to the fragment in the world space, the sampling interval along the X-axis direction of the texture and the sampling interval along the Y-axis direction of the texture input by the user. Next, for the operation steps:
1)用用户输入的沿纹理X轴方向的采样间隔与沿纹理Y轴方向的采样间隔组成二维向量;1) Use the user-input sampling interval along the X-axis direction of the texture and the sampling interval along the Y-axis direction of the texture to form a two-dimensional vector;
2)将步骤1获得的二维向量乘以时间变量,获得采样间隔;2) multiply the two-dimensional vector obtained in
3)将步骤2获得的采样间隔加上该片元对应的法线纹理坐标,获得第一个采样位置;3) Add the sampling interval obtained in step 2 to the normal texture coordinate corresponding to the fragment to obtain the first sampling position;
4)将步骤2获得的采样间隔减该片元对应的法线纹理坐标,获得第二个采样位置;4) Subtract the sampling interval obtained in step 2 from the normal texture coordinate corresponding to the fragment to obtain the second sampling position;
5)用步骤3获得的采样位置对水面波纹的法线纹理进行采样,获得颜色值,然后将该颜色值映射为切线空间中的法线向量。映射原理为公知,可参考《Unity Shader入门精要》7.2.2小节;5) Use the sampling position obtained in step 3 to sample the normal texture of the water surface ripples to obtain a color value, and then map the color value to a normal vector in the tangent space. The mapping principle is well known, please refer to Section 7.2.2 of "Introduction to Unity Shader";
6)用步骤4获得的采样位置对水面波纹的法线纹理进行采样,获得颜色值,然后将该颜色值映射为切线空间中的法线向量。映射原理为公知,可参考《Unity Shader入门精要》7.2.2小节;6) Use the sampling position obtained in step 4 to sample the normal texture of the water surface ripples to obtain a color value, and then map the color value to a normal vector in the tangent space. The mapping principle is well known, please refer to Section 7.2.2 of "Introduction to Unity Shader";
7)将步骤5,6获得的切线空间中的法线向量相加并标准化为单位向量,获得最终切线空间中采样得到的法线向量。标准化过程为公知,请参考线性代数相关资料;7) Add the normal vectors in the tangent space obtained in steps 5 and 6 and normalize them to a unit vector to obtain the normal vector sampled in the final tangent space. The standardization process is well known, please refer to the related information of linear algebra;
8)将世界空间中该片元对应的切线向量、世界空间中该片元对应的副切线向量、世界空间中该片元对应的法线向量组合为矩阵,该矩阵可将切线空间中向量转换到世界空间中。具体组合方式为公知,可参考《Unity Shader入门精要》4.6.2小节;8) Combine the tangent vector corresponding to the fragment in the world space, the subtangent vector corresponding to the fragment in the world space, and the normal vector corresponding to the fragment in the world space into a matrix, which can transform the vector in the tangent space into world space. The specific combination method is well known, please refer to Section 4.6.2 of "Introduction to Unity Shader";
9)将步骤8得到的矩阵乘以步骤7获得的切线空间中法线向量,得到该片元对应的世界空间中的法线向量;9) multiply the matrix obtained in step 8 by the normal vector in the tangent space obtained in
总的来说,该模块最终输出了该片元对应的切线空间中的法线向量以及世界空间中的法线向量。In general, the module finally outputs the normal vector in tangent space and the normal vector in world space corresponding to the fragment.
进一步地,水底颜色生成模块所需的输入数据、操作步骤与生成的结果如下文所示。首先,该模块所需要的数据为:该片元切线空间中的法线向量、扭曲系数(用户自定义得到)、第二个宏观步骤中第2步得到的最终的图像中除水面本身之外的场景图像、当前水面片元在主摄像机的屏幕空间位置、以及除水面本身外的场景图像的像素大小。接下来,为操作步骤:Further, the input data, operation steps and generated results required by the underwater color generation module are as follows. First of all, the data required by this module are: the normal vector in the tangent space of the fragment, the distortion coefficient (obtained by the user), and the final image obtained in the second step of the second macro step except the water surface itself The scene image of , the screen space position of the current water fragment in the main camera, and the pixel size of the scene image except the water itself. Next, for the operation steps:
1)将由该片元切线空间中的法线向量的x和y分量组成的二维向量、扭曲系数(用户自定义得到)、除水面本身外的场景图像的像素大小的x和y分量组成的二维向量对应相乘,得到偏移量向量;1) The two-dimensional vector composed of the x and y components of the normal vector in the tangent space of the fragment, the distortion coefficient (obtained by the user), and the x and y components of the pixel size of the scene image except the water surface itself The two-dimensional vectors are multiplied correspondingly to obtain the offset vector;
2)将步骤1得到的偏移量向量乘以当前水面片元在主摄像机的屏幕空间位置的z分量再加上由当前水面片元在主摄像机的屏幕空间位置对应的x和y分量组成的二维向量得到一个二维向量;2) Multiply the offset vector obtained in
3)将步骤2得到的二维向量除以当前水面片元在主摄像机的屏幕空间位置的w分量,得到一个二维向量;3) divide the two-dimensional vector obtained in step 2 by the w component of the current water surface fragment in the screen space position of the main camera, to obtain a two-dimensional vector;
4)用该二维向量对除水面本身外的场景图像进行取样,得到该片元对应的水下折射颜色;4) Use the two-dimensional vector to sample the scene image except the water surface itself, to obtain the underwater refraction color corresponding to the fragment;
总的来说,该模块最终输出了该片元对应的水下折射颜色。Overall, the module finally outputs the corresponding underwater refraction color for that fragment.
进一步地,水面反射颜色生成模块所需的输入数据、操作步骤与生成的结果如下文所示。首先,该模块所需要的数据为:世界空间下该片元对应法线方向、水面平面的倒影图像、该片元对应的在主摄像机屏幕空间中的位置。接下来,为操作步骤:Further, the input data, operation steps and generated results required by the water surface reflection color generation module are as follows. First, the data required by this module are: the corresponding normal direction of the fragment in the world space, the reflection image of the water plane, and the corresponding position of the fragment in the main camera screen space. Next, for the operation steps:
1)用该片元对应的在主摄像机屏幕空间中的位置加世界空间下该片元对应法线方向,获得一个二维向量;1) Use the position corresponding to the fragment in the screen space of the main camera plus the normal direction corresponding to the fragment in the world space to obtain a two-dimensional vector;
2)用该二维向量对水面平面的倒影图像取样,获得该片元对应的倒影颜色;2) Sampling the reflection image of the water surface plane with the two-dimensional vector to obtain the reflection color corresponding to the fragment;
3)总的来说,该片元最终输出了该片元对应的水面反射颜色。3) In general, the fragment finally outputs the water reflection color corresponding to the fragment.
进一步地,以下为菲涅尔简化公式,生成该片元对应地菲涅尔系数。其中,fλ设置为0,u表示视角方向和当前片元对应的法线向量的点积。Further, the following is a simplified Fresnel formula to generate the Fresnel coefficient corresponding to the fragment. Among them, f λ is set to 0, and u represents the dot product of the view direction and the normal vector corresponding to the current fragment.
Fλ(u)=fλ+(1-fλ)(1-u)5 F λ (u)=f λ +(1-f λ )(1-u) 5
进一步地,以下为Phong高光反射公式,计算该片元对应地高光颜色。其中为光的反射方向,它通过光相对于片元的方向和当前片元对应的法线向量得出;为视角方向;mgloss为光滑度系数,取值为22;mspecular为高光反射颜色;clight为光照颜色。Further, the following is the Phong specular reflection formula, which calculates the specular color corresponding to the fragment. in is the reflection direction of the light, which is obtained by the direction of the light relative to the fragment and the normal vector corresponding to the current fragment; is the viewing angle direction; m gloss is the smoothness coefficient, the value is 22; m specular is the specular reflection color; c light is the light color.
以下代码为在Cg/HLSL中对该公式的实现,以供参考。The following code is the implementation of this formula in Cg/HLSL for reference.
fixed3 specular=_LightColor0.rgb*_Specular.rgb*pow(saturate(dot(myLightReflectDir,myviewDir)),_Gloss);fixed3 specular = _LightColor0.rgb*_Specular.rgb*pow(saturate(dot(myLightReflectDir, myviewDir)), _Gloss);
进一步地,水面颜色混合模块可以生成水面最终的颜色。该模块根据菲涅尔系数混合了反射颜色与折射颜色,生成了该片元对应的初步的水面的颜色。在这一步中,具体的计算方式为:Further, the water surface color mixing module can generate the final color of the water surface. This module mixes the reflection color and refraction color according to the Fresnel coefficient to generate the initial water surface color corresponding to the fragment. In this step, the specific calculation method is:
水面反射颜色×菲涅尔系数+水面折射颜色×(1-菲涅尔系数)+高光反射颜色Water surface reflection color × Fresnel coefficient + water surface refraction color × (1-Fresnel coefficient) + specular reflection color
=该片元对应的最终颜色= The final color corresponding to the fragment
本发明包含的三个算法模块和四个方法或部分依赖关系如图6所示。水面反射颜色生成模块依赖倒影摄像机与片元法线生成模块;水底颜色生成模块、菲涅尔系数生成方法依赖于片元法线生成模块;水面颜色混合方法依赖于水面反射颜色生成模块、水底颜色生成模块和菲涅尔系数生成方法;水面最终颜色混合方法依赖于水面反射颜色生成模块、水底颜色生成模块、菲涅尔系数生成方法以及高光反射颜色生成方法。Three algorithm modules and four methods or partial dependencies included in the present invention are shown in FIG. 6 . The water surface reflection color generation module depends on the reflection camera and the fragment normal generation module; the underwater color generation module and Fresnel coefficient generation method depend on the fragment normal generation module; the water surface color mixing method depends on the water surface reflection color generation module and the bottom color Generation module and Fresnel coefficient generation method; the final color mixing method of the water surface depends on the water surface reflection color generation module, underwater color generation module, Fresnel coefficient generation method and specular reflection color generation method.
与现有技术相比,本发明的有益效果:Compared with prior art, the beneficial effect of the present invention:
1)本发明可以提高实时渲染中水面的真实感,参见图7,8,9,10间的对比。从整体效果来看,本项目水面效果比举例的两个官方效果更好。具体体现在加入了水面高光反射、更明显的波浪效果以及更加明显,可以调节的菲涅尔效应效果。具体分析请参见后文对于相关附图的说明。1) The present invention can improve the realism of the water surface in real-time rendering, see the comparison between FIGS. 7, 8, 9, and 10. From the perspective of the overall effect, the water surface effect of this project is better than the two official effects for example. Specifically reflected in the addition of high-light reflections on the water surface, more obvious wave effects, and more obvious and adjustable Fresnel effects. For specific analysis, please refer to the description of the relevant drawings below.
2)本发明可以流畅运行在当前主流的个人消费级设备上,具体分析请参见后文对于相关附图的说明。2) The present invention can run smoothly on the current mainstream personal consumer devices. For specific analysis, please refer to the description of the related drawings below.
详细的数据解释请参见附图说明后的对于图7-图13的说明。For detailed data explanation, please refer to the description of Figures 7-13 after the description of the figures.
附图说明Description of drawings
图1本发明的总体渲染流程图。Fig. 1 is an overall rendering flow chart of the present invention.
图2本发明的倒影摄像机获取倒影图像流程图。Fig. 2 is a flowchart of acquisition of reflection images by the reflection camera of the present invention.
图3本发明的主摄像机中有关水面的渲染流程图。Fig. 3 is a flow chart of the rendering of the water surface in the main camera of the present invention.
图4本发明的主摄像机中水面平面的片元着色器生成片元的流程图。FIG. 4 is a flow chart of generating fragments by the fragment shader of the water surface plane in the main camera of the present invention.
图5本发明的片元着色器中各模块或方法关系结构图。FIG. 5 is a structural diagram of the relationship between modules or methods in the fragment shader of the present invention.
图6本发明的所有模块或方法关系结构图。Fig. 6 is a structural diagram of all modules or methods of the present invention.
图7 Unity官方第二代水面着色器效果图以及测试结果。Figure 7 Unity's official second-generation water surface shader renderings and test results.
图8本发明的水面仿真方法效果图以及测试结果。Fig. 8 is an effect diagram and test results of the water surface simulation method of the present invention.
图9本发明的水面仿真方法效果图2。Fig. 9 is the effect diagram 2 of the water surface simulation method of the present invention.
图10 Unity官方第四代水面着色器效果图以及测试结果。Figure 10 Unity's official fourth-generation water surface shader renderings and test results.
图11 Unity官方第二代水面在Unity Profiler中的测试结果。Figure 11 The test results of Unity's official second-generation water surface in Unity Profiler.
图12本发明的水面仿真方法在Unity Profiler中的测试结果。Fig. 12 is the test result of the water surface simulation method of the present invention in Unity Profiler.
图13 Unity官方第四代水面在Unity Profiler中的测试结果。Figure 13 The test results of Unity's official fourth-generation water surface in Unity Profiler.
图14一种基于Unity平台的组织结构。Figure 14 is an organizational structure based on the Unity platform.
具体实施方式Detailed ways
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施案例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施案例只用以解释本发明,并不用于限定本发明。In order to make the object, technical solution and advantages of the present invention clearer, the present invention will be further described in detail below in conjunction with the accompanying drawings and examples of implementation. It should be understood that the specific implementation cases described here are only used to explain the present invention, not to limit the present invention.
首先,结合图1,2,3,4及其在发明内容中的解释,本领域工程师应该可以较为清晰的使用各种语言或平台构建出水面效果。在此,为了使实施方式更加清晰,本发明会根据在Unity平台下的实际案例的代码组织结构图来进一步说明本发明的实施方式。First of all, combined with Figures 1, 2, 3, 4 and their explanations in the summary of the invention, engineers in the field should be able to use various languages or platforms to construct water surface effects relatively clearly. Here, in order to make the implementation more clear, the present invention will further illustrate the implementation of the present invention according to the code organization chart of the actual case under the Unity platform.
图14说明了一种基于Unity平台的组织结构。其中,水面平面作为Unity中的一个对象,下会挂载水面特效C#脚本以及水面特效Unity Shader。Figure 14 illustrates an organizational structure based on the Unity platform. Among them, the water surface plane is an object in Unity, and the water surface special effect C# script and the water surface special effect Unity Shader will be mounted.
其中,C#在Unity平台下,主要操控的对象是CPU。C#脚本在这里主要的功能就是通过获取Unity平台提供的资源、水面平面中所包含的部分信息,并控制CPU,计算得到水面平面的倒影图像,传送给水面特效Unity Shader。Among them, under the Unity platform, C# mainly controls the CPU. The main function of the C# script here is to obtain the resources provided by the Unity platform and some information contained in the water plane, and control the CPU to calculate the reflection image of the water plane and send it to the water surface special effect Unity Shader.
对于水面特效Unity Shader来说,它主要操控的对象是GPU。它在这里主要的功能就是通过Unity使用Unity平台提供的各项资源、水面特效C#脚本传来的倒影图像以及水面平面本身包含的信息,控制GPU使得其可以计算得到整个水面平面的最终效果,并传递到屏幕上,形成整个水面的图像。For the water surface effect Unity Shader, its main object is the GPU. Its main function here is to control the GPU so that it can calculate the final effect of the entire water surface through Unity using various resources provided by the Unity platform, the reflection image from the water surface special effect C# script, and the information contained in the water surface itself. Transfer to the screen to form an image of the entire water surface.
下面,将对图7-图13进行详细解释,以支持有益效益所涉及的结论。In the following, Figures 7-13 will be explained in detail to support the conclusions involved in the beneficial effects.
首先是对效果进行的解释。由于仿真所具有的艺术性,所以当我们在对比真实感的时候,往往会掺入主观判断。所以,在这里,我们仅根据水面涉及的仿真的自然现象的数量和质量进行对比。从图7中,我们可以看到反射、折射、水面波纹以及菲涅尔效应。我们可以发现,由于水面波纹会产生大量棕色区域,所以反而显得该水面十分凌乱,而这影响了我们对于菲涅尔效应的观察。从图8,9中,我们可以看到,本发明的水面模拟效果有反射、折射、水面波纹、菲涅尔效应以及高光反射。相比于图7,至少不会显得十分琐碎,并且波浪也比较自然;高光反射也可以让人注意到环境中的太阳光。此外,由于没有凌乱的波浪的影响,菲涅尔效应也更加明显;我们能够较为容易的看到近处的水底,却很难看到远处的水底(这就是菲涅尔效应的模拟)。从图10中,我们看到的是比较平滑的水面,从这个水面上,我们能够看见折射、反射、水面波纹以及菲涅尔效应。但是与本项目对比之后,我们会发现,它的菲涅尔效应较弱。并且很难调节,因为Unity官方水面某个位置的菲涅尔系数大都是根据图片纹理取样得出,而非通过菲涅尔简化公式实时算出。The first is an explanation of the effect. Due to the artistry of simulation, when we compare the realism, we often incorporate subjective judgments. So, here, we only make comparisons based on the quantity and quality of simulated natural phenomena involved in the water surface. From Figure 7, we can see reflection, refraction, water ripples, and Fresnel effects. We can find that because the ripples on the water surface will produce a large number of brown areas, the water surface appears to be very messy, which affects our observation of the Fresnel effect. From Figs. 8 and 9, we can see that the water surface simulation effects of the present invention include reflection, refraction, water surface ripple, Fresnel effect and specular reflection. Compared with Figure 7, at least it will not look very trivial, and the waves are more natural; the high light reflection can also make people notice the sunlight in the environment. In addition, because there is no influence of messy waves, the Fresnel effect is also more obvious; we can see the near bottom of the water more easily, but it is difficult to see the bottom of the distant water (this is the simulation of the Fresnel effect). From Figure 10, what we see is a relatively smooth water surface. From this water surface, we can see refraction, reflection, water surface ripples and Fresnel effects. But after comparing with this project, we will find that its Fresnel effect is weak. And it is difficult to adjust, because the Fresnel coefficient of a certain position on the official water surface of Unity is mostly obtained according to the sampling of the image texture, rather than calculated in real time through the simplified Fresnel formula.
除了效果之外,本项目还将各个水面的性能在同一场景下进行了对比。本测试的测试环境为,CPU:Intel Core i7-8750H、RAM:16.0GB、GPU:NVIDIA GTX1060 3GB Max-Q。具体结果如下:其中,比较重要的三个指标为CPU Usage,GPU Usage与Graphics后面的帧率。其中,一个画面的流畅与否,既由CPU所决定又由GPU所决定。因为CPU负责收集三维或二维的数据,而GPU负责把这些数据渲染成二维的具有立体感的画面。其中,在CPU Usage中的Rendering分量的具体含义即为CPU收集需要渲染的数据和命令的过程占用的时间。这个分量和GPU的各个分量共同决定了渲染速度。此外,在Statistics中的Graphics帧率可以看作是渲染的最终结果,即每秒绘制的图像数量。理论上,对于大部分游戏来说,帧率到达30帧以上,人就会感觉这个游戏是流畅的。In addition to the effect, this project also compared the performance of each water surface in the same scene. The test environment for this test is CPU: Intel Core i7-8750H, RAM: 16.0GB, GPU: NVIDIA GTX1060 3GB Max-Q. The specific results are as follows: Among them, the three more important indicators are CPU Usage, GPU Usage and the frame rate behind Graphics. Among them, the smoothness of a picture is determined by both the CPU and the GPU. Because the CPU is responsible for collecting three-dimensional or two-dimensional data, and the GPU is responsible for rendering these data into two-dimensional images with a three-dimensional effect. Among them, the specific meaning of the Rendering component in the CPU Usage is the time taken by the CPU to collect the data and commands that need to be rendered. This component and the various components of the GPU together determine the rendering speed. In addition, the Graphics frame rate in Statistics can be seen as the final result of rendering, that is, the number of images drawn per second. In theory, for most games, when the frame rate reaches 30 frames or more, people will feel that the game is smooth.
通过对比,我们可以发现,本项目的水面从性能上来说也优于Unity官方给出的两种水面。首先从整体来看,Unity官方第二代水面的帧率始终保持在120帧左右;本项目水面的帧率保持在130帧左右;而Unity官方第四代水面的帧率保持在100帧左右。从CPU的资源分配上来看,Unity官方的水面消耗在垂直同步的性能更多一些。这个功能主要是为了让显示器的刷新和显卡的工作同步起来,以免画面撕裂。而本项目的水面主要是脚本处理和收集所需渲染的信息的过程消耗了CPU资源。此外,在GPU消耗方面,总的来看,这三个特效大同小异。但是本水面让GPU资源主要消耗在了后期处理上,而另外两个水面让GPU资源主要消耗在了其他问题上。Through comparison, we can find that the water surface of this project is also better than the two official water surfaces given by Unity in terms of performance. First of all, from an overall point of view, the frame rate of Unity’s official second-generation water surface is always maintained at around 120 frames; the frame rate of this project’s water surface is maintained at around 130 frames; and the frame rate of Unity’s official fourth-generation water surface is maintained at around 100 frames. From the perspective of CPU resource allocation, Unity's official water consumption is more in the performance of vertical synchronization. This function is mainly to synchronize the refresh of the display with the work of the graphics card to avoid tearing the screen. The water surface of this project is mainly the process of script processing and collecting the information required for rendering that consumes CPU resources. In addition, in terms of GPU consumption, in general, these three special effects are similar. However, this water surface makes GPU resources mainly consumed in post-processing, while the other two water surfaces make GPU resources mainly consumed in other problems.
以上所述,仅为本发明的具体实施方式,但本发明的保护范围不局限于此,任何属于本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。The above is only a specific embodiment of the present invention, but the protection scope of the present invention is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the technical scope disclosed in the present invention are all Should be covered within the protection scope of the present invention.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910442598.2A CN110163945B (en) | 2019-05-25 | 2019-05-25 | Water surface simulation method in real-time rendering |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910442598.2A CN110163945B (en) | 2019-05-25 | 2019-05-25 | Water surface simulation method in real-time rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110163945A CN110163945A (en) | 2019-08-23 |
CN110163945B true CN110163945B (en) | 2022-11-29 |
Family
ID=67632836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910442598.2A Active CN110163945B (en) | 2019-05-25 | 2019-05-25 | Water surface simulation method in real-time rendering |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110163945B (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111429559B (en) * | 2020-03-16 | 2023-08-29 | 深圳震有科技股份有限公司 | GIS system simulation water body data processing method and device based on graphics |
CN112200902B (en) * | 2020-09-30 | 2024-09-06 | 北京达佳互联信息技术有限公司 | Image rendering method and device, electronic equipment and storage medium |
CN112734891A (en) * | 2021-01-08 | 2021-04-30 | 中国船舶重工集团公司第七0七研究所 | Water body rendering implementation system and method based on Unity3D |
CN112860839A (en) * | 2021-04-23 | 2021-05-28 | 成都四方伟业软件股份有限公司 | Water environment quality real-time monitoring method and device based on Unity3D |
CN116206039A (en) * | 2023-01-30 | 2023-06-02 | 广东趣炫网络股份有限公司 | A reflection texture complement method, device, equipment and storage medium |
CN117274465B (en) * | 2023-11-22 | 2024-03-08 | 园测信息科技股份有限公司 | Water rendering method, system, medium and equipment matched with real geographic water area environment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320480A (en) * | 2008-07-04 | 2008-12-10 | 浙江大学 | A real-time dynamic water surface simulation method based on GPU |
CN102722861A (en) * | 2011-05-06 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | CPU-based graphic rendering engine and realization method |
CN103577656A (en) * | 2013-11-25 | 2014-02-12 | 哈尔滨工业大学 | Three-dimensional dynamic simulation method for water outlet process of submarine-launched missiles |
CN107886562A (en) * | 2017-12-05 | 2018-04-06 | 北京像素软件科技股份有限公司 | Water surface rendering intent, device and readable storage medium storing program for executing |
-
2019
- 2019-05-25 CN CN201910442598.2A patent/CN110163945B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320480A (en) * | 2008-07-04 | 2008-12-10 | 浙江大学 | A real-time dynamic water surface simulation method based on GPU |
CN102722861A (en) * | 2011-05-06 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | CPU-based graphic rendering engine and realization method |
CN103577656A (en) * | 2013-11-25 | 2014-02-12 | 哈尔滨工业大学 | Three-dimensional dynamic simulation method for water outlet process of submarine-launched missiles |
CN107886562A (en) * | 2017-12-05 | 2018-04-06 | 北京像素软件科技股份有限公司 | Water surface rendering intent, device and readable storage medium storing program for executing |
Non-Patent Citations (1)
Title |
---|
Realistic,real-time rendering of ocean waves;Yaohua hu 等;《Wiley Oneline Library》;20060213;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110163945A (en) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110163945B (en) | Water surface simulation method in real-time rendering | |
CN102915559B (en) | Real-time transparent object GPU (graphic processing unit) parallel generating method based on three-dimensional point cloud | |
US7212207B2 (en) | Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing | |
US7843463B1 (en) | System and method for bump mapping setup | |
JP2002074388A (en) | Method and device for bump mapping photographed with environment in graphics system | |
US9582929B2 (en) | Dynamic skydome system | |
Luksch et al. | Fast light-map computation with virtual polygon lights | |
CN103700134A (en) | Three-dimensional vector model real-time shadow deferred shading method based on controllable texture baking | |
WO2008014384A2 (en) | Real-time scenery and animation | |
US9905045B1 (en) | Statistical hair scattering model | |
Yan et al. | A non-photorealistic rendering method based on Chinese ink and wash painting style for 3D mountain models | |
US9317967B1 (en) | Deformation of surface objects | |
US20180005432A1 (en) | Shading Using Multiple Texture Maps | |
Haines | An introductory tour of interactive rendering | |
US7710419B2 (en) | Program, information storage medium, and image generation system | |
Cabeleira | Combining rasterization and ray tracing techniques to approximate global illumination in real-time | |
Wang et al. | A method for ink-wash painting rendering for 3D scenes | |
Woxler | Efficient generation and rendering of tube geometry in unreal engine: Utilizing compute shaders for 3d line generation | |
Nordahl | Enhancing the hpc-lab snow simulator with more realistic terrains and other interactive features | |
Tuliniemi | Physically based rendering for embedded systems | |
Gil | Performance Improvement Methods for Hardware Accelerated Graphics Using Vulkan API | |
Kobzev | Improvement of 3D graphics image optimization technology | |
Tao et al. | Real-Time Antialiased Area Lighting Using Multi-Scale Linearly Transformed Cosines. | |
Romanov | ON THE DEVELOPMENT OF SOFTWARE WITH A GRAPHICAL INTERFACE THAT SIMULATES THE ASSEMBLY OF THE CONSTRUCTOR | |
Chochlík | Scalable multi-GPU cloud raytracing with OpenGL |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |