当前您所在的位置:首页>材质、贴图设计软件>

Simul trueSKY

Simul trueSKY – 实时渲染真实的天空

trueSKY是一款软件开发工具包,可以在各种平台上实时渲染真实的天空,云彩和大气效果。

TrueSKY是多年研发的结果。它基于光散射和吸收的物理原理,并对速度进行了高度优化。我们相信这是表现真实的实时天空和云彩最好的系统。

SDK是在主“Simul”目录下的一组库。这些可以静态或动态链接,具体取决于平台。 在静态库中,二进制文件在“Simul / lib”目录下;若是dll,则在“Simul / exe”中。 源文件可在组成库的子目录中找到。

在 exe 和 lib,有以下结构:

Win32
VC11
调试
发布
静态调试
静态发布
v140
...
x64
...
{控制台平台}
...
已编译的Windows库有两个运行时版本,_MD和_MT。 运行时是Microsoft提供的一组库,提供基本的系统功能。您通常应该通过一个项目一直使用相同的运行时,尽管不同的运行时可以用于DLL,因为它们是独立的。

 

对于Windows,调试和发布配置是作为DLL链接到动态MD运行时提供的。 静态调试和静态释放配置是作为与静态MT运行时间链接的静态库提供的。

 

Unity

要使用trueSKY Unity插件,请将相应的trueSkyUnityPlugin.unitypackage安装到Unity项目中。

Unreal Engine 4

trueSKY虚幻引擎4插件作为GitHub上的UE4引擎的一个分支,也作为UE4二进制分发的单独安装程序。

trueSKY SDK

trueSKY SDK可以通过两种不同的方式与游戏/模拟集成。首先,我们可以像使用Unity和Unreal一样动态链接到trueSkyPluginRender库和API。 第二种选择是直接链接trueSKY库,并直接访问低级类别。

所有Simul的默认渲染器都使用右手坐标系统,x指向东,y指北和z向上。所有单位的距离是米或公里。如果未指定为公里,则距离以米为单位。角度单位是弧度,除非指定为度数。 温度以开尔文为单位,除非指定为摄氏度。

天气处理这样完成 ::clouds::BaseWeatherRenderer BaseWeatherRenderer\endlink。

Weather Renderer拥有并管理天空,云彩,大气和其他效果的渲染器。 所以Weather Renderer是你的程序和trueSKY之间的主要接口。

 

以下描述渲染器中实现的天空元素:

特征元素

宇宙背景

星辰

行星

体积云

二维云

混合分辨率渲染

大气

体积光

降水

雨条纹

 

宇宙背景

首先绘制宇宙背景贴图,其方向与银河系的平面相对应-即

::sky::SkyKeyframer::SetBackgroundBrightness BackgroundBrightness\endlink。

它使用一个plate-carree投影,与银河地平线对齐。给定矢量“视角”,这是银河系坐标的方向,计算是:
float az       =atan2(view.y,-view.x);
vec2 texcoord  =vec2((ang/(pi*2.0)),0.5-asin(view.z)/pi);

 
即x坐标与方位角成比例,并且y坐标与仰角成比例。

由于投影的简并性,您可能会在图像的顶部和底部看到一些拉伸,所以最好让贴图在顶部和底部边缘渐变为黑色。

星辰

星星被画成点状精灵,沿着与太阳相同的方向绕着地球的旋转轴旋转。星星通常被拖到最高分辨率的缓冲区(即帧缓冲区或最终缓冲区)。如

::sky::SkyKeyframer::SetStarBrightness StarBrightness ::sky::SkyKeyframer::SetMaxStarMagnitude MaxStarMagnitude\endlink。

太阳

太阳画在星星之后。

行星

行星(例如月亮)由BaseSkyRenderer绘制。需要提供行星贴图位置图,着色器将太阳方向作为参数 - 用于点亮行星(例如月亮的相位)。像恒星一样,行星通常被绘制到最高分辨率的缓冲区,以确保它们具有清晰的轮廓。

天空、大气效果

天空和大气被绘制成一个体积贴图,其中x和y轴是屏幕坐标,z轴是距离。最后的合成步骤将天空,大气和云带到当前的rendertarget。

云彩

云通常被绘制到一对较低分辨率的缓冲区。 :: clouds :: BaseCloudRenderer BaseCloudRenderer绘制的云卷贴图是最新的,并以卷为单位绘制云。

性能

渲染性能主要取决于绘制像素的数量以及光线投影步骤(或云切片)的数量。 计算性能(主要是云闪)在很大程度上取决于网格大小 - 网格越大,点亮云关键帧点的时间就越多。

降低天空渲染的云彩部分很平常,通过以下控制:

 ::clouds::CloudRenderingOptions::MaximumCubemapResolution MaximumCubemapResolution the ::clouds::CloudRenderingOptions CloudRenderingOptions\endlink。

雨和雪

::clouds::CloudKeyframe::precipitation precipitation用于控制一定时间内的降雨量或降雪量,而::clouds::CloudKeyframer PrecipitationThresholdKm用于设置降雨所需的云的厚度(将其设置为0允许即使最小的云产生雨)。在雪和雨之间切换使用::clouds::CloudKeyframe rain_to_snow\endlink (0是雨,1是雪)。

每个云关键帧都有一个::clouds::PrecipitationRegion PrecipitationRegion\endlink, 它定义了降水的局部区域,如果它不是关键帧的全球范围。用于降水的颗粒的数量可以通过::clouds::BasePrecipitationRenderer MaxParticles来改变。

由 simul::clouds::BasePrecipitationRenderer生成的类别是用来画雨或雪的颗粒的,而 ::clouds::PrecipitationRegion是云渲染器绘制的雨纹效果。这一类别有一个属性 “UseSimulationTime”, 这决定了雨雪速度是基于模拟的天的时间,或者是以秒为单位的实时。

着色器

着色器在平台目录的着色器子目录中作为源文件提供。

 

Plugin Rendering Interface

将trueSKY连接到游戏或模拟引擎的一种方法是使用Plugin Rendering Interface。动态链接库或称为PluginRenderInterface.dll(或类似)的DLL从游戏引擎中动态加载。导出的函数用于为每个视图执行每帧的天空渲染。

Sky Sequencer

Sky Sequencer是艺术家,技术人员,关卡设计师和任务计划人员的工具。它还可以帮助程序员了解True Sky的天空,云彩和时间系统的运作情况。

要启动Sky Sequencer,请转到Start Menu/All Programs/Simul/Sky Sequencer/Sky Sequencer。

北京哲想软件有限公司