欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 環(huán)境

環(huán)境Env是一種特殊的組件,其一般被代理到元素XREnv上使用。環(huán)境用于描述當(dāng)前場(chǎng)景的環(huán)境貼圖和光照信息,其一般和相機(jī)材質(zhì)協(xié)作,實(shí)現(xiàn)豐富真實(shí)的渲染效果。

環(huán)境數(shù)據(jù)可以使用xr-frame-toolkit來生成。

# 創(chuàng)建環(huán)境組件

環(huán)境組件一般由xml創(chuàng)建,不建議使用代碼創(chuàng)建:

<xr-env env-data="env1" sky-map="video-vt" is-sky2d="false" rotation="30" diffuse-exp="1" specular-exp="1" />

以上幾個(gè)參數(shù)中,env-data指定的是環(huán)境數(shù)據(jù)資源,下面會(huì)說到;sky-mapis-sky-2d均和天空盒相關(guān),后面會(huì)說道;剩下這幾個(gè)均和環(huán)境數(shù)據(jù)相關(guān),統(tǒng)一在那個(gè)章節(jié)說道。

多個(gè)環(huán)境組件,后面的會(huì)覆蓋前面的。

# 環(huán)境數(shù)據(jù)

環(huán)境數(shù)據(jù)EnvData是一種資源,對(duì)其加載使用標(biāo)準(zhǔn)的加載流程:

<xr-asset-load type="env-data" asset-id="env1" src="/assets/env1.json" />
<xr-asset-load type="env-data" asset-id="env1-bin" src="/assets/env1.bin" />

可見其是一個(gè)json文件或者一個(gè)二進(jìn)制bin文件,其實(shí)它們都是一樣的,只不過出于優(yōu)化考慮,我們提供了將所有一個(gè)環(huán)境數(shù)據(jù)以來的所有資源大包圍單二進(jìn)制文件的形式。

環(huán)境數(shù)據(jù)一般由xr-frame-toolkit生成,詳見環(huán)境數(shù)據(jù)生成,這里只描述一下它的數(shù)據(jù)構(gòu)成,讓我們來看看一個(gè)典型的環(huán)境數(shù)據(jù)資源的內(nèi)容:

{
  "skybox": {
    "type": "2D",
    "map": "skybox.jpg"
  },
  "specular": {
    "type": "2D",
    "rgbd": true,
    "mipmaps": true,
    "mipmapCount": 8,
    "map": "specular.png"
  },
  "diffuse": {
    "coefficients": [
      [0.8094857154560582, 1.072061074418383, 1.381670726058194],
      [0.4531993330022066, 0.6206639008366144, 0.8139572443587766],
      [-0.004551401381201801, -0.0042687508887899826, -0.0036411318023787],
      [-0.020985594814968922, -0.01687724945396023, -0.021128338350731538],
      [0.1256484901729441, 0.18119453030438287, 0.24183004841815578],
      [-0.0023734980925293335, -0.005654419816258108, -0.008260709190512553],
      [0.032220320622268775, 0.01634986420924315, -0.002981050574747357],
      [-0.010824356719832657, -0.004307541280643478, 0.003995962041610451],
      [-0.019970535027080884, -0.025649669665237452, -0.03417036444009303]
    ]
  }
}

可見其主要指定了三個(gè)部分:

  1. skybox:天空盒部分,主要是一張?zhí)炜蘸屑y理,目前全部為2D全景紋理。
  2. specualr:高光反射部分,通過一張1:1的烘焙好的、包括所有mipmaps的高光貼圖實(shí)現(xiàn),目前全部采用rgbd編碼來控制體積。
  3. diffuse:漫反射部分,通過球諧系數(shù)SH9實(shí)現(xiàn)。

# 天空盒

在相機(jī)的章節(jié)里我們提到過天空盒,當(dāng)camera.background設(shè)置為skybox,將使用環(huán)境組件所定義的天空盒紋理,其由兩個(gè)屬性定義:

  1. sky-map:天空盒紋理,默認(rèn)由環(huán)境數(shù)據(jù)提供,但也可以接受用戶使用此屬性覆蓋??梢允褂萌魏渭y理,包括視頻紋理。
  2. is-sky2d:天空盒渲染模式是否為2D,開啟時(shí)會(huì)渲染一個(gè)平鋪?zhàn)赃m應(yīng)的2D背景,此時(shí)紋理應(yīng)當(dāng)是一張2D圖。

# uniforms和宏

和渲染相關(guān)的環(huán)境數(shù)據(jù)均已全局uniform和全局宏的方式傳入著色器,它們是:

類型 說明
開啟環(huán)境漫反射 WX_USE_IBL_DIFFUSE bool
開啟環(huán)境高光反射 WX_USE_IBL_SPECULAR bool
高光反射mipmaps數(shù)量 WX_USE_SPECULAR_MIPMAPS int
高光反射使用RGBD WX_USE_SPECULAR_RGBD bool
類型 uniforms 說明
漫反射系數(shù) u_diffuseSH vec3[9]
漫反射曝光值 u_diffuseExp texture2d
高光反射紋理 u_specularEnvMap texture2d
高光反射曝光值 u_specularExp v
環(huán)境和天空盒旋轉(zhuǎn) u_envRotation float