日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PBRT笔记(11)——光源

發(fā)布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PBRT笔记(11)——光源 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

自發(fā)光燈光

至今為止,人們發(fā)明了很多光源,現(xiàn)在被廣泛使用的有:

  • 白熾燈的鎢絲很小。電流通過燈絲時,使得燈絲升溫,從而使燈絲發(fā)出電磁波,其波長的分布取決于燈絲的溫度。但大部分能量都被轉(zhuǎn)化為熱能而不是光能。
  • 鹵素?zé)?#xff0c;在燈中充入惰性氣體,使得燈的壽命增加,與白熾燈一樣使用鎢絲。
  • LED燈
  • 發(fā)光效率是衡量光源將能量轉(zhuǎn)化為可見光的效率。對人眼來說,非可見光波長的輻射幾乎沒有價值,有趣的是,它是光度量(發(fā)出的光通量)與輻射量(它所使用的總功率或它發(fā)出的總波長的總功率(以光通量計算)之比:

    \(\frac{\int \Phi_e(\lambda)V(\lambda)d\lambda}{\int \Phi_i(\lambda)d\lambda}\)

    其中V(λ)為光譜響應(yīng)曲線。
    發(fā)光效率的單位是流明/瓦特,如果i是光源消耗的功率(而不是發(fā)射的功率),那么發(fā)光效率也包含了光源將功率轉(zhuǎn)換成電磁輻射的有效程度的度量。發(fā)光效率也可以定義為表面某一特定方向上的某一點上的發(fā)光強度與輻照度的比值(輻射強度的光度當(dāng)量),也可以定義為表面某一特定方向上的某一點上的發(fā)光強度與輻照度的比值。

    黑體發(fā)射器

    黑體,是一個理想化了的物體,它能有效地將能量轉(zhuǎn)化為電磁輻射。雖然真正的黑體在物理上是不可實現(xiàn)的,但一些發(fā)射器表現(xiàn)出接近黑體的行為。黑體也有一個有用的封閉形式的表達(dá)式,作為溫度和波長的函數(shù),這是對于黑體發(fā)射器來說非常有用的建模。

    黑體之所以如此命名,是因為它們吸收了所有的入射能量,并且沒有反射。因此,一個真正的黑體看起來是完全黑色的。它能夠吸收外來的全部電磁輻射,并且不會有任何的反射與透射。換句話說,黑體對于任何波長的電磁波的吸收系數(shù)為1,透射系數(shù)為0。

    普朗克定律給發(fā)出一個用于測量黑體發(fā)出的輻射的函數(shù),其形參為波長λ和溫度T(單位:開爾文)
    \(L_e(\lambda,T)=\frac{2hc^2}{\lambda^5 (e^{hc/\lambda k_b T}-1)}\)

    其中c為光速,h為普朗克常量,kb為波爾茲曼常數(shù),k為開爾文溫度

    這里我們需要將波長單位從納米轉(zhuǎn)化成米。

    void Blackbody(const Float *lambda, int n, Float T, Float *Le) {if (T <= 0) {for (int i = 0; i < n; ++i) Le[i] = 0.f;return;}const Float c = 299792458;const Float h = 6.62606957e-34;const Float kb = 1.3806488e-23;for (int i = 0; i < n; ++i) {// Compute emitted radiance for blackbody at wavelength _lambda[i]_Float l = lambda[i] * 1e-9;Float lambda5 = (l * l) * (l * l) * l;Le[i] = (2 * h * c * c) /(lambda5 * (std::exp((h * c) / (l * kb * T)) - 1));CHECK(!std::isnan(Le[i]));} }

    斯蒂芬-玻爾茲曼定律給出了黑體發(fā)射體在點p處的發(fā)射輻射度。
    \(M(p)=\sigma T^4\) 其中σ是斯蒂芬玻爾茲曼常數(shù),5.67032 × 10^?8 Wm^?2 K^?4 。請注意,所有頻率上的總發(fā)射以t^4的速度快速增長。因此,如何將黑體發(fā)射器的溫度加倍,那么總能量就會增加16倍。

    標(biāo)準(zhǔn)光源

    另一種有用的燈光發(fā)射分布類型是一個
    由CIE(國際照明委員會)制定的“標(biāo)準(zhǔn)光源”標(biāo)準(zhǔn)。

    燈光類接口

    類名為Light,位于core/light.h與core/light.cpp中。

    所有的燈光類型都有4個公共參數(shù):

  • flags:基本光源類型標(biāo)記。例如,
    燈光是否用delta分布來描述。(這類燈的例子包括點光源,它從一個點發(fā)出照明,以及方向燈,所有的光都來自相同的方向。)蒙特卡羅算法對來自光源的光照進(jìn)行采樣,需要知道哪些光線是由delta分布描述的。
  • transformation:控制坐標(biāo)與旋轉(zhuǎn)用的
  • MediumInterface:介質(zhì)接口。
  • nSamples:采樣數(shù)
  • LightFlags

    類型flags枚舉與對應(yīng)方法

    enum class LightFlags : int { DeltaPosition = 1, DeltaDirection = 2, Area = 4, Infinite = 8 };inline bool IsDeltaLight(int flags) { return flags & (int)LightFlags::DeltaPosition || flags & (int)LightFlags::DeltaDirection; }
    Sample_Li

    Light類必須實現(xiàn)一個關(guān)鍵方法Sample_Li()。調(diào)用者通過一個Interaction對象提供在場景中與時間關(guān)聯(lián)的世界空間的參考點以及此時燈光往該位置發(fā)射的輻射度。(在假設(shè)中間沒有阻擋物的情況下)

    virtual Spectrum Sample_Li(const Interaction &ref, const Point2f &u,Vector3f *wi, Float *pdf, VisibilityTester *vis) const = 0;

    Light類同時還負(fù)責(zé)初始化的入射方向光源ωi與VisibilityTester對象初始化。VisibilityTester保存著必須通過追蹤得到的Shadow Ray的信息,以驗證光線和參考點之間沒有遮擋對象。

    對于某些類型的燈光,光線可以從許多方向到達(dá)參考點。不像點光源那樣只有一個方向。對于這些類型的光源,就需要使用Sample_Li()方法對光源表面進(jìn)行采樣。之后再用蒙特卡洛方法求積分來得到對應(yīng)位置的分布。

    所有類型的Light類都必須能夠返回總發(fā)射功率。這個變量對光線傳輸算法很有用,因為光線傳輸算法想要盡可能得將計算資源用在對場景貢獻(xiàn)最大的燈光上。

    virtual Spectrum Power() const = 0;
    Preprocess

    Light類在被渲染前會調(diào)用接口Preprocess()。它將場景作為參數(shù),使得光源在開始渲染前就能確定場景特征。

    可見性測試

    VisibilityTester是一個封閉的對象,它封裝了少量的數(shù)據(jù)和一些尚未完成的計算。它允許光在參考點和光源相互可見的情況下下返回一個輻射值。

    積分器可以在追蹤陰影射線之前判斷來自入射方向的照明是否相關(guān)。例如,在非半透明表面背面入射的光對于來自另一側(cè)的反射沒有任何貢獻(xiàn)。

    VisibilityTesters由兩個Interaction對象來創(chuàng)建。為用于光線追蹤的陰影射線的兩個端點。因為一個Interaction對象已經(jīng)被使用,因此不需要特殊情況來計算表面參考點與參與介質(zhì)中的參考點之間的可見性。

    Light提供了兩種方法來確定這兩個點之間的可見性。一種是Unoccluded():它跟蹤兩者之間的陰影射線并返回布爾值。
    因為它只返回一個布爾值,Unoccluded()也會忽略光線通過的任何散射介質(zhì)對其所攜帶的亮度的影響。

    bool VisibilityTester::Unoccluded(const Scene &scene) const { return !scene.IntersectP(p0.SpawnRayTo(p1)); }

    因為它只返回一個布爾值,Unoccluded()也會忽略光線通過的任何散射介質(zhì)對其所攜帶的亮度的影響。積分器需要考慮到這種情況,所以他們使用Tr()方法。

    Spectrum VisibilityTester::Tr(const Scene &scene, Sampler &sampler) const {Ray ray(p0.SpawnRayTo(p1));Spectrum Tr(1.f);while (true) {SurfaceInteraction isect;bool hitSurface = scene.Intersect(ray, &isect);// Handle opaque surface along ray's pathif (hitSurface && isect.primitive->GetMaterial() != nullptr)return Spectrum(0.0f);// Update transmittance for current ray segmentif (ray.medium) Tr *= ray.medium->Tr(ray, sampler);// Generate next ray segment or return final transmittanceif (!hitSurface) break;ray = isect.SpawnRayTo(p1);}return Tr; }

    如果在射線段上發(fā)現(xiàn)一個交點,且入射面是不透明的,則射線被阻擋,透射率為零。

    點光源

    點光源是各向同性的,各個方向發(fā)射出的能量都是一樣的。類名為PointLight,位于lights/point.h與lights/point.cpp中。

    在構(gòu)造函數(shù)中,PointLight存儲了世界空間與本地空間相互轉(zhuǎn)換的矩陣,以及光源的強度,單位是功率/立面角。又因為是各項同性光源,所以點光源的光源強度是個常數(shù)。因為點光源表示只從一個位置發(fā)出光的奇點,所以light::flags字段被初始化為LightFlags::DeltaPosition。

    嚴(yán)格地來說,用亮度單位來描述點光源是不正確,輻射強度才是更為合適的描述點發(fā)射源的單位。所以在這里,我們將使用Sample_Li這個通用接口來計算到達(dá)某點的輻射照度,用輻射強度除以距離的平方獲得。

    Spectrum PointLight::Sample_Li(const Interaction &ref, const Point2f &u,Vector3f *wi, Float *pdf,VisibilityTester *vis) const {ProfilePhase _(Prof::LightSample);*wi = Normalize(pLight - ref.p);*pdf = 1.f;*vis =VisibilityTester(ref, Interaction(pLight, ref.time, mediumInterface));return I / DistanceSquared(pLight, ref.p); }

    功率計算參考輻射照度公式

    Spectrum PointLight::Power() const { return 4 * Pi * I; }

    聚光燈

    類名為SpotLight,位于lights/spot.h與lights/spot.cpp中。聚光燈是從點光源衍生過來的一種光源類型,它在所在的位置發(fā)出一個方向錐狀的光。其構(gòu)造函數(shù)接受錐體角寬度與衰減開始距離兩個值,之后分別計算并儲存兩者的余弦值。兩個變量的定義具體詳見圖12.8。

    SpotLight::Sample_Li()幾乎與PointLight::Sample_Li()相同。不同之處在于SpotLight調(diào)用了Falloff()方法,該方法計算聚光燈錐的光分布。

    為了計算點p接受到的聚光燈輻射強度,第一步就是計算從聚光燈原點到p的向量與沿聚光燈圓錐中心向量之間夾角余弦值。然后將這個余弦值和衰減開始角度余弦值與錐體角寬度余弦值進(jìn)行比較,以確定該點在聚光燈錐體坐標(biāo)系的相對位置。我們可以很容易地確定,余弦值大于衰減開始角度余弦值的點在錐內(nèi),接收到完整的光照,而余弦值小于錐體角寬度余弦值的點則完全在錐外。

    Float SpotLight::Falloff(const Vector3f &w) const {Vector3f wl = Normalize(WorldToLight(w));Float cosTheta = wl.z;if (cosTheta < cosTotalWidth) return 0;if (cosTheta >= cosFalloffStart) return 1;// Compute falloff inside spotlight coneFloat delta =(cosTheta - cosTotalWidth) / (cosFalloffStart - cosTotalWidth);return (delta * delta) * (delta * delta); }Spectrum SpotLight::Power() const {return I * 2 * Pi * (1 - .5f * (cosFalloffStart + cosTotalWidth)); }

    貼圖透射燈

    類名為ProjectionLight,定義在lights/projection.cpp與lights/projection.h。它將一個貼圖映射并投影到場景中。ProjectionLight類使用投影轉(zhuǎn)換,根據(jù)構(gòu)造函數(shù)的fov參數(shù),將場景中的點投影到光線的投影平面上。

    然而,擁有精確表現(xiàn)的投影函數(shù),就好比使用具有MIPMap的圖片一樣,能夠使用蒙特卡羅技術(shù)進(jìn)行采樣對精確表現(xiàn)投影分布非常有用。

    ProjectionLight::ProjectionLight(const Transform &LightToWorld,const MediumInterface &mediumInterface,const Spectrum &I, const std::string &texname,Float fov): Light((int)LightFlags::DeltaPosition, LightToWorld, mediumInterface),pLight(LightToWorld(Point3f(0, 0, 0))),I(I) {// Create _ProjectionLight_ MIP mapPoint2i resolution;std::unique_ptr<RGBSpectrum[]> texels = ReadImage(texname, &resolution);if (texels)projectionMap.reset(new MIPMap<RGBSpectrum>(resolution, texels.get()));// Initialize _ProjectionLight_ projection matrixFloat aspect =projectionMap ? (Float(resolution.x) / Float(resolution.y)) : 1;if (aspect > 1)screenBounds = Bounds2f(Point2f(-aspect, -1), Point2f(aspect, 1));elsescreenBounds =Bounds2f(Point2f(-1, -1 / aspect), Point2f(1, 1 / aspect));hither = 1e-3f;yon = 1e30f;lightProjection = Perspective(fov, hither, yon);Transform screenToLight = Inverse(lightProjection);Point3f pCorner(screenBounds.pMax.x, screenBounds.pMax.y, 0);Vector3f wCorner = Normalize(Vector3f(screenToLight(pCorner)));cosTotalWidth = wCorner.z; }

    與Spotlight類似,ProjectionLight::Sample_Li()調(diào)用了Projection(),用以計算對應(yīng)方向的投影結(jié)果。因為投影變換具有將投影中心后面的點投影到它前面的性質(zhì)。所以去掉z值為負(fù)的點是很重要的。如果不進(jìn)行這種檢查,就不可能知道投影點原來是在燈后面(因為沒有被照亮)還是在燈前面。

    Spectrum ProjectionLight::Sample_Li(const Interaction &ref, const Point2f &u,Vector3f *wi, Float *pdf,VisibilityTester *vis) const {ProfilePhase _(Prof::LightSample);*wi = Normalize(pLight - ref.p);*pdf = 1;*vis =VisibilityTester(ref, Interaction(pLight, ref.time, mediumInterface));return I * Projection(-*wi) / DistanceSquared(pLight, ref.p); }Spectrum ProjectionLight::Projection(const Vector3f &w) const {Vector3f wl = WorldToLight(w);// Discard directions behind projection lightif (wl.z < hither) return 0;// Project point onto projection plane and compute lightPoint3f p = lightProjection(Point3f(wl.x, wl.y, wl.z));//投影到投影平面后,丟棄屏幕窗口外坐標(biāo)值的點。if (!Inside(Point2f(p.x, p.y), screenBounds)) return 0.f;if (!projectionMap) return 1;//取得轉(zhuǎn)換完的坐標(biāo)Point2f st = Point2f(screenBounds.Offset(Point2f(p.x, p.y)));return Spectrum(projectionMap->Lookup(st), SpectrumType::Illuminant); }

    這種燈的功率與聚光燈近似。

    Spectrum ProjectionLight::Power() const { return (projectionMap ? Spectrum(projectionMap->Lookup(Point2f(.5f, .5f), .5f), SpectrumType::Illuminant) : Spectrum(1.f)) * I * 2 * Pi * (1.f - cosTotalWidth); }

    方向光

    類名為DistantLight,定義于lights/distant.cpp與lights/distant.cpp中。注意,DistantLight構(gòu)造函數(shù)不接受mediluminterface參數(shù);對于遙遠(yuǎn)的光來說,唯一合理的介質(zhì)是真空。如果它本身在介質(zhì)中,那么它所有的輻射都會被介質(zhì)吸收,因為它是無限遠(yuǎn)的。

    一些距離光的方法需要知道場景的邊界。因為燈光是在場景幾何體之前創(chuàng)建的,所以當(dāng)DistantLight構(gòu)造函數(shù)運行時,這些邊界是不可用的。因此,DistantLight實現(xiàn)了可選的Preprocess()方法來獲取界限。(該方法在場景構(gòu)造函數(shù)的末尾調(diào)用。)

    DistantLight::Sample_Li()的實現(xiàn)都較為簡單,唯一有趣的是:VisibilityTester的初始化:陰影光線的第二個點設(shè)置在沿著遠(yuǎn)光源入射方向距離為場景邊界球半徑的兩倍的位置,這樣就保證了第二個點在場景邊界之外。

    Spectrum DistantLight::Sample_Le(const Point2f &u1, const Point2f &u2,Float time, Ray *ray, Normal3f *nLight,Float *pdfPos, Float *pdfDir) const {ProfilePhase _(Prof::LightSample);// Choose point on disk oriented toward infinite light directionVector3f v1, v2;CoordinateSystem(wLight, &v1, &v2);Point2f cd = ConcentricSampleDisk(u1);Point3f pDisk = worldCenter + worldRadius * (cd.x * v1 + cd.y * v2);// Set ray origin and direction for infinite light ray*ray = Ray(pDisk + worldRadius * wLight, -wLight, Infinity, time);*nLight = (Normal3f)ray->d;*pdfPos = 1 / (Pi * worldRadius * worldRadius);*pdfDir = 1;return L; }

    方向光與別的類型燈光不同,它的發(fā)射功率與場景空間范圍有關(guān)。事實上,它與接收光線的場景面積成正比。為了理解為什么會這樣,考慮一個面積為A的圓盤,被輻射亮度為L的方向光以圓盤法線方向照亮。到達(dá)圓盤的總功率為\(\Phi=AL\),與接收面的面積成正比。

    但是為了計算表面積而去計算對光源可見物體總的表面積是不切實際的,所以我們將用一個圓盤來進(jìn)行近似計算。

    Spectrum DistantLight::Power() const {return L * Pi * worldRadius * worldRadius; }

    面光源

    面光源是由一個或多個形狀的光源組成的,這些形狀從其表面發(fā)射光輻射,在表面的每個點上有一定的方向分布的輻射。一般來說,計算與面積光有關(guān)的輻射量需要計算光表面的積分,而這些積分通常不能以閉合形式計算。類名為AreaLight,定義于core/light.h與core/light.cpp中。

    AreaLight添加了新的方法L(),實現(xiàn)了對給定與表面相交的位置,估算在給定方向上光源發(fā)射輻射量L。為了方便起見,在SurfaceInteraction類中有Le(),它可以輕松計算射線相交的表面點的輻射亮度。

    Spectrum SurfaceInteraction::Le(const Vector3f &w) const {const AreaLight *area = primitive->GetAreaLight();return area ? area->L(*this, w) : Spectrum(0.f); }

    DiffuseAreaLight類實現(xiàn)了一個基礎(chǔ)面光源,具有均勻的空間和方向輻射分布。它發(fā)射輻射由形狀決定,默認(rèn)情況下,只有法線正方向的那個面發(fā)光,當(dāng)然可以設(shè)置Shape::reverseOrientation為true,通過反轉(zhuǎn)法線的方式來切換發(fā)光方向。定于與light/diffuse.h與light/diffuse.cpp中。

    因為這中面光源只從形狀表面的一側(cè)發(fā)出光,所以它的L()方法只是確保出射的方向與法線位于同一個半球。

    Spectrum L(const Interaction &intr, const Vector3f &w) const {return Dot(intr.n, w) > 0.f ? Lemit : Spectrum(0.f); }

    DiffuseAreaLight::Sample_Li()方法不像之前描述的光源那樣簡單了。具體地說,在場景中的每個點,區(qū)域光的輻射可以從多個方向入射,而不像其他光那樣只從一個方向入射。這就需要使用到蒙特羅卡方法了,在之后的章節(jié)會解釋。因為表面發(fā)出的輻射是均勻的,所以輻射功率可以這么計算:

    Spectrum DiffuseAreaLight::Power() const {return Lemit * area * Pi; }

    無窮大的面光源(環(huán)境球)

    無窮大的面光源是另一種有用的光源。可以把這種光源當(dāng)成一個向各個方向投射光線的巨大球體(它包圍了整個場景)。它的主要用途場景照明。因為是無窮大的,所以其介質(zhì)指針為空。類名為:InfiniteAreaLight,定義于lights/infinite.h與lights/infinite.cpp中。

    InfiniteAreaLight類具有一個變換矩陣成員變量,用于定位圖像映射。先使用球坐標(biāo)方程講球體映射到(θ,φ)方向,之后再轉(zhuǎn)換到(u,v)坐標(biāo)。

    因為InfiniteAreaLight的光線會向各個方向射出,所以它必須使用蒙特卡洛方法進(jìn)行采樣。

    與定向光一樣,InfiniteAreaLight的總功率與場景的表面積有關(guān)。這里依然使用近似計算。

    Spectrum InfiniteAreaLight::Power() const {return Pi * worldRadius * worldRadius * Spectrum(Lmap->Lookup(Point2f(.5f, .5f), .5f), SpectrumType::Illuminant); }

    pbrt為這個類實現(xiàn)了Le()接口,為這個場景提供環(huán)境光照,而其他光源中在這個接口中返回0。

    轉(zhuǎn)載于:https://www.cnblogs.com/blueroses/p/10563274.html

    總結(jié)

    以上是生活随笔為你收集整理的PBRT笔记(11)——光源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕一区二区人妻电影 | 日日夜夜操操操 | www激情 | 激情视频网址 | 在线观看黄av | 外国一级片 | 无套爆插| 色综合久久久无码中文字幕波多 | 日韩免费专区 | 国产资源久久 | www一级片 | 美女扒开腿让男人操 | 四虎精品永久在线 | 少妇性xxxxxxxxx色武功 | 国产视频不卡一区 | 青娱乐在线视频免费观看 | 精品国产一二 | 天天干夜夜骑 | 午夜精品国产 | 日韩精品无码一区二区三区久久久 | 国产一区二区在线免费观看 | 天天舔天天摸 | 久久久精品欧美 | 麻豆传媒在线观看 | 欧美xxx在线观看 | 深夜视频在线免费 | 黑人巨大精品欧美一区二区免费 | 男女在线观看 | 69久久夜色精品国产69 | 在线步兵区 | 成人理论片 | 国产精品一区二区av白丝下载 | 成人性生交视频免费观看 | 中文字幕日韩精品亚洲一区小树林 | 色婷婷久久一区二区三区麻豆 | 久久综合色婷婷 | 一区在线不卡 | 人人玩人人弄 | 欧美激情一区在线 | 狠狠操人人干 | 伊人国产在线观看 | 老司机在线观看视频 | 日本毛片在线观看 | 国产乱子伦视频一区二区三区 | 欧美妞干网 | 黄色性生活一级片 | 影音先锋每日资源 | 一级片黑人 | 亚洲日本一区二区 | www.jizzjizz.com| 密臀av一区二区 | 五月天男人天堂 | 日本不卡不卡 | 四虎永久免费影院 | 台湾色综合 | 色多多污污 | 中国黄色录像一级片 | 放荡的美妇在线播放 | 欧美亚洲精品一区二区 | 波多野结衣一区在线 | 色婷婷婷婷 | 性中国古装videossex | 中文在线观看免费 | 成人免费在线观看网站 | 国产在线网址 | 欧日韩不卡在线视频 | 精品国产乱码久久久久久婷婷 | 国产日日夜夜 | 西西44rtwww国产精品 | 大乳村妇的性需求 | 一区二区三区视频观看 | www精品视频 | 黄色aa级片 | 色欧洲 | 四虎精品在永久在线观看 | 亚洲av无码国产精品色午夜 | 亚洲AV无码精品国产 | 黄色xxxxx| www.x日本 | 中文字幕在线观看网站 | 欧美在线看片 | 国产精品免费一区二区三区都可以 | 欧美日本二区 | 双女主黄文 | a视频免费看 | 亚洲高清无码久久久 | 国产精品极品白嫩 | 久久久精品区 | 日本一区二区人妻 | 一亲二脱三插 | 日韩欧美精品免费 | 亚洲一区二区高清视频 | 日韩福利视频导航 | 日日操夜夜爽 | 亚洲成人伊人 | 中文字幕永久 | 成人黄色电影在线 | 四季av一区二区三区免费观看 | 日韩免费网站 |