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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[MetalKit]14-Ray-tracing-in-a-Swift-playground5射线追踪5

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [MetalKit]14-Ray-tracing-in-a-Swift-playground5射线追踪5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本系列文章是對 metalkit.org 上面MetalKit內容的全面翻譯和學習.

MetalKit系統文章目錄


讓我們繼續上周的工作完成ray tracer射線追蹤器.現在我們知道如何生成不同材料的球體,也知道了如何從不同角度來觀察它們,讓我們再看看如何生成更多的球體.

在pixel.swift中創建一個random_scene() 方法:

func random_scene() -> Hitable_list {var objects = [Hitable]()objects.append(Sphere(c: float3(0, -1000, 0), r: 1000, m: Lambertian(albedo: float3(0.5, 0.5, 0.5))))for a in -2..<3 {for b in -2..<3 {let materialChoice = drand48()let center = float3(Float(a) + 0.9 * Float(drand48()), 0.2, Float(b) + 0.9 * Float(drand48()))if length(center - float3(4, 0.2, 0)) > 0.9 {if materialChoice < 0.8 { // diffuselet albedo = float3(Float(drand48()) * Float(drand48()), Float(drand48()) * Float(drand48()), Float(drand48()) * Float(drand48()))objects.append(Sphere(c: center, r: 0.2, m: Lambertian(albedo: albedo)))} else if materialChoice < 0.95 { // metallet albedo = float3(0.5 * (1 + Float(drand48())), 0.5 * (1 + Float(drand48())), 0.5 * (1 + Float(drand48())))objects.append(Sphere(c: center, r: 0.2, m: Metal(albedo: albedo, fuzz: Float(0.5 * drand48()))))} else { // glassobjects.append(Sphere(c: center, r: 0.2, m: Dielectric()))}}}}objects.append(Sphere(c: float3(0, 0.7, 0), r: 0.7, m: Dielectric()))objects.append(Sphere(c: float3(-3, 0.7, 0), r: 0.7, m: Lambertian(albedo: float3(0.4, 0.2, 0.1))))objects.append(Sphere(c: float3(3, 0.7, 0), r: 0.7, m: Metal(albedo: float3(0.7, 0.6, 0.5), fuzz: 0.0)))return Hitable_list(list: objects) } 復制代碼

這個方法生成了25個小球體,并用隨機值給它們賦上不同材料,lambertian, metal 或glass.然后把這些球體添加到一個列表里,作為返回值.我們還添加一個大球體,還有我們初始的3個小球體.

然后在imageFromPixels() 方法里,我們將以前添加球體的代碼:

var objects = [Hitable]() var object = Sphere(c: float3(0, -100.5, -1), r: 100, m: Lambertian(albedo: float3(0.7, 0.23, 0.12))) objects.append(object) object = Sphere(c: float3(1, 0, -1), r: 0.5, m: Metal(albedo: float3(0.8, 0.6, 0.2), fuzz: 0.1)) objects.append(object) object = Sphere(c: float3(-1, 0, -1), r: 0.5, m: Dielectric()) objects.append(object) object = Sphere(c: float3(-1, 0, -1), r: -0.49, m: Dielectric()) objects.append(object) object = Sphere(c: float3(0, 0, -1), r: 0.5, m: Lambertian(albedo: float3(0.24, 0.5, 0.15))) objects.append(object) let world = Hitable_list(list: objects) 復制代碼

替換為一行,創建隨機場景:

let world = random_scene() 復制代碼

一般情況下,現在我會告訴你可以渲染場景了,但是我從?hyperjeff那里學到了一點加速的方法,可以讓我們更快得到更好的質量的圖片.還是在imageFromPixels() 方法里,將外層循環的第一行:

for i in 0..<width { 復制代碼

替換為下面的代碼:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) dispatch_apply(width, queue) { i in 復制代碼

通過使用GCD多線程,渲染速度提高了3倍!在playground主頁面中,看看新生成的圖像:

這張圖片創建參數是:ns=50,球體產生器范圍 -7..<7,圖片分辨率800 x 400.整個渲染花費752秒,如果你想要快一些,5秒渲染的話,我建議使用參數:ns=10,球體產生器范圍 -2..<3,圖片分辨率400 x 200. 源代碼source code?已發布在Github上.

下次見!

總結

以上是生活随笔為你收集整理的[MetalKit]14-Ray-tracing-in-a-Swift-playground5射线追踪5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品入口久久 | 人妻精品一区 | 在线成人福利 | 91精品国产综合久久国产大片 | www.久色| 污污的视频在线免费观看 | 一区二区在线视频 | av永久网站 | 9.1成人看片 | 免费观看理伦片在线播放视频软件 | 久99精品| 丁香七月婷婷 | 日韩色图一区 | 蜜臀久久99精品久久久无需会员 | 国产综合色视频 | 亚洲免费一二三区 | 日韩 国产 一区 | 国产欧美一区二区三区视频在线观看 | 国内自拍在线 | 狠狠v欧美v日韩v亚洲ⅴ | 精品国产一区二区三区性色av | 日韩av大全| 9i看片成人免费看片 | 黄色动漫软件 | 人操人视频 | 精品久久久视频 | 亚洲性在线 | 婷婷色九月| 精品少妇一区二区三区免费观看 | 中文字幕在线免费播放 | 成人精品免费在线观看 | 日本三级网站在线观看 | 欧美激情性生活 | 在线亚洲精品 | 一道本一区二区 | 天天爽视频 | 国产另类自拍 | 黄频在线看| 欧美一区二区视频在线 | 成年人网站在线 | 91成人免费在线视频 | 色人阁五月天 | 中文字幕色站 | 69色堂| 国产精品一二三级 | 黄色a级网站 | 亚洲天堂伊人网 | 超碰caoporen| 久久久伦理片 | 特级毛片a | 欧美涩涩涩 | 美国三级a三级18 | 日本熟女毛茸茸 | 毛片官网 | 蜜臀久久99精品久久久画质超高清 | 夜夜春很很躁夜夜躁 | 91国在线啪 | 黄网站在线免费看 | 狠狠91| 欧美色xxx| 成人国产片 | 国产18在线 | 欧美第九页 | 亚洲国产aaa| 国产xxxx做受性欧美88 | 久久精品欧美日韩 | 五月天久久婷婷 | 精品精品 | 97视频精品 | a级淫片| 欧美一区2区三区4区公司 | 寂寞d奶大胸少妇 | 男生舔女生的屁股 | 日韩av资源网 | 亚洲成a人 | 九色婷婷 | 97色资源| 免费啪啪网 | 嫩草私人影院 | 男人的天堂一区 | 人妻丰满熟妇av无码区hd | 麻豆精品网站 | 中文字幕精品一区久久久久 | 在线观看视频中文字幕 | 麻豆视频网页 | 青青在线视频观看 | 亚洲精品国产精品国自产观看浪潮 | 成年人免费毛片 | 欧美日韩精品久久久免费观看 | 亚洲天堂视频在线播放 | 色乱码一区二区三区在线男奴 | 国产三极片| 欧美成人中文字幕 | h视频免费在线 | 乳揉みま痴汉4在线播放 | 狠狠爱亚洲| 超碰在线免费观看97 | 91影院在线观看 | 51国产偷自视频区视频 |