Giới thiệu

Physically-Based Rendering hay PBR là 1 tập hợp các phương thức/thủ thuật để những vật thể 3d render từ máy tính xách tay thật rộng nhờ vấn đề áp dụng những quy tắc đồ dùng lý tương tự như ở trái đất thực. Nhờ vào PBR nhưng ngày nay bạn cũng có thể thấy được những kĩ xảo trong game chú ý không không giống là bao so với thực tế. Bài trước của bản thân mình có một đoạn so sánh giữa PBR cùng với thuật toán sơn màu cổ điển (Blinn-Phong) về những ưu nhược điểm, giờ đồng hồ thì bắt tay vào tò mò cách PBR chuyển động thôi!

*

Các làm từ chất liệu + bề mặt khác biệt được áp dụng lên và một khối cầu

Ai chỉ suy nghĩ code shader với mã nguồn project rất có thể đọc đến phần kế cuối mình sẽ tổng thích hợp lại toàn bộ.

Bạn đang xem: Vật liệu pbr là gì

Lý thuyết

Toàn bộ triết lý về PBR một cách dễ nắm bắt nhất (bằng tiếng Anh) hoàn toàn có thể được xem qua bài thuyết trình này: https://www.youtube.com/watch?v=j-A0mws
JRmk của Naty Hoffman. Tất nhiên slide và chú ý chi tiết: Slide Note

Bạn nào hy vọng xem giải thích của bản thân mình thì thường xuyên đọc nhé. Warning: Physics và Math incoming. Các hình ảnh dưới đây phần nhiều đều lấy nguồn trường đoản cú slide của Hoffman.

Microfacet

Tất cả các cài đặt và đo lường và thống kê của PBR được dựa trên định hướng về các mặt siêu nhỏ tuổi (microfacet) trên mặt phẳng của một trang bị bất kì. Hãy xem xét bề mặt một thứ ở lever siêu nhỏ, chúng ta xem bề mặt này "nhẵn" hoặc "nhám" dựa vào việc những microfacet được chuẩn bị xếp như vậy nào. Những microfacet này hệt như là một mặt phẳng con của bề mặt ban đầu, và xử xử "gần như" một lớp gương. Họ đều biết gương vẫn phản chiếu ánh nắng nó nhận thấy thành một tia phản xạ với góc phản xạ bằng góc cho tới (Vật lý 7). Khi mặt phẳng nhám, các mặt gương phía theo các góc láo lếu loạn sẽ khiến cho ánh sáng sủa bị khuếch tán vô cùng mạnh, nếu tất cả phản chiếu thì hình ảnh tạo bởi mặt phẳng này vô cùng mờ. Ngược lại với mặt phẳng nhẵn, ánh sáng gần như được bức xạ theo cùng một hướng vì vậy ta thấy nó "bóng" rộng (do ánh sáng triệu tập "bay" vào mắt được nhiều hơn).

*

Kim loại và non-kim loại

Tất nhiên không phải mọi bề mặt đều làm phản xạ toàn bộ ánh sáng phản vào nó. Họ không thể chờ mong một miếng nhựa làm phản chiếu ánh sáng bằng với một tờ kính được. Và áp dụng định lý bảo toàn năng lượng, cố định phần năng lượng mất đi đó cần trở thành một dạng gì đó. Đó đó là phần tia nắng không được phản xạ và được bề mặt vật hấp thụ. Phần kia sẽ chuyển đổi tuỳ theo đặc thù bề mặt!

*

Bởi ánh nắng nhìn thấy thực tế là một loại sóng điện từ, do đó đối với kim loại, kết cấu phân tử của chúng khiến cho chúng hấp thụ tổng thể phần ánh sáng này. Khác với kim loại, các bề mặt không phải kim loại sẽ hấp thụ một phần của ánh nắng đó, tích tích điện và trả nó ra (Vì sao? do nó không phải kim loại những phân tử của bọn chúng thường đã bão hoà điện tích, cho nên vì thế nó không hề muốn duy trì thêm nhiều năng lượng nữa). Đó là vì sao khi ta chiếu ánh sáng vào trong 1 mảnh nhựa, phần không được chiếu sáng trực tiếp vẫn sáng nhẹ lên.

*

Dựa vào đó, ta có thể thấy phần ánh sáng diffuse (khuếch tán), giúp ta thấy có màu sắc mặt phẳng và phần specular (bóng), giúp ta thấy màu sắc nguồn sáng là hai phần bổ trợ cho nhau. Nghĩa là tổng năng lượng ánh sáng ban đầu sẽ được phân bóc tách thành 2 thành phần thiết yếu này.

k
S = calculate
Specular
Fraction(...); // Tính tỉ lệ tia nắng phản xạk
D = 1 - k
S; // Tính tỉ lệ thành phần phần tia nắng bị hấp thụ

Halfway vector + yếu tắc sáng phản nghịch xạ

Lại một có mang nữa mình lần khần dịch thành tiếng Việt như thế nào. Họ hãy nhìn lại hình mặt phẳng sau đây, chỉ xét cùng với vector chỉ hướng quan sát của ta (camera) là vvv với vector ánh nắng từ nguồn sáng là lll, trong các rất không ít microfacet hướng tới đủ góc, chỉ số đông microfacet gồm vector pháp đường là hhh (màu đỏ) mới góp phần ánh sáng bức xạ vào đồ ta thấy. Nghĩa là tia nắng có phản bội chiếu ở các microfacet khác, mặc dù ta chỉ xét đến các microfacet góp ta chú ý thấy ánh nắng trên mặt phẳng mà thôi.

*

Vector h này điện thoại tư vấn là halfway vector. Nó được tính bằng (l+v)/length(l+v). Kết hợp cùng với tham số roughness, ta hoàn toàn có thể tuỳ ý biến thiên mặt phẳng vật thể theo cách mình muốn. Bằng cách sử dụng phương pháp BRDF (bidirectional reflective distribution function - một hàm tính ra mức độ bội nghịch chiếu tia nắng trên bề mặt), bạn cũng có thể ước lượng gần đúng mực ánh sáng phản xạ từ trang bị thể khi nó nhận ánh sáng chiếu vào. Hàm này được định nghĩa như sau:

f(l,v)=F(l,h)G(l,v,h)D(h)4(n⋅l)(n⋅v)f(l,v) = fracF(l,h)G(l,v,h)D(h)4(n cdot l)(n cdot v) f(l,v)=4(n⋅l)(n⋅v)F(l,h)G(l,v,h)D(h)​

Hơi kinh sợ nhỉ? bọn họ hãy mổ xẻ nó ra từng phần để làm rõ nó hơn.

Phản xạ Fresnel

f(l,v)=F(l,h)G(l,v,h)D(h)4(n⋅l)(n⋅v)f(l,v) = fracoxed F(l,h) G(l,v,h)D(h)4(n cdot l)(n cdot v) f(l,v)=4(n⋅l)(n⋅v)F(l,h)​G(l,v,h)D(h)​

Lượng ánh nắng phản chiếu bởi bề mặt vật thể sẽ biến đổi khi góc tạo bởi vì tia quan sát và vector pháp tuyến tại bề mặt thay đổi. Tại 90°90degree90°, mặt phẳng vật thể đang phản chiếu 100% ánh sáng chiếu vào nó. Chúng ta cũng có thể nhìn thấy phần sự phản xạ này qua hình minh hoạ bên dưới:

*

Chúng ta thường thấy phần rìa của quả ước (dù bóng xuất xắc nhám) sáng sủa nhất vị ở đó góc tạo vì chưng tia chú ý và pháp tuyến bề mặt là về tối đa. Tuỳ vào gia công bằng chất liệu mà lượng ánh nắng được làm phản chiếu cũng không giống nhau, nhưng nó đã đạt rất tiểu lúc góc nhỏ và đạt buổi tối đa khi góc = 90°90degree90°. Gồm nhiều cách để ước lượng thành phần bức xạ này, nhưng cách làm của Schlick phổ biến chính vì tính đúng mực và tiết kiệm chi phí tài nguyên (tính toán của GPU) của nó. Theo đó thành phần này được xem như sau

F(l,n)=Fo+(1−Fo)(1−(l⋅n))5F(l, n) = F_o + (1 - F_o )(1 - (l cdot n))^5F(l,n)=Fo​+(1−Fo​)(1−(l⋅n))5

nnn ở đây chính là vector halfway mà họ đề cập ở trên.FoF_oFo​ là đại lượng đặc thù cho làm từ chất liệu bề mặt. Với sắt kẽm kim loại thì cực hiếm thực của đại lượng này tương đối cao, đại lượng này sút khi tính phi-kim nhiều loại tăng dần.

Bề mặt vật dụng thể

f(l,v)=F(l,h)G(l,v,h)D(h)4(n⋅l)(n⋅v)f(l,v) = fracF(l,h) oxed G(l,v,h) D(h)4(n cdot l)(n cdot v) f(l,v)=4(n⋅l)(n⋅v)F(l,h)G(l,v,h)​D(h)​

Đây là nhân tố GGG trong bí quyết BRDF. Mang đến ta biết phần trăm tại điểm ta đã xét liệu mặt phẳng microfacet có bị một khối nào đó bít khuất xuất xắc không. Hàm này thừa nhận tham số là roughness của chất liệu. Kết hợp hai ước lượng GGX với Schlick-Beckman, ta gồm một hàm ước lượng yếu tố này như sau:

G(n,v,k)=n⋅v(n⋅v)(1−k)+k
G(n, v, k) = fracn cdot v(n cdot v)(1 - k) + kG(n,v,k)=(n⋅v)(1−k)+kn⋅v​

Với k là 1 trong đại lượng tính từ bỏ roughness của trang bị liệu. Tuỳ vào mức ta tính làm phản chiếu ánh nắng trực tiếp (từ mối cung cấp sáng) xuất xắc từ môi trường (IBL - image based lightning - giám sát ánh sáng từ 1 "ảnh 360 độ" từ môi trường cho trước) nhưng mà k rất có thể tính không giống nhau

kdirect=(α+1)28k_direct = frac(alpha + 1)^28kdirect​=8(α+1)2​

k
IBL=α22k_IBL = fracalpha^22k
IBL​=2α2​

Trong kia αalphaα sẽ tiến hành quy đổi trực tiếp tự roughness.

*

Thành phần diffuse sẽ tiến hành tính theo công thức

Ld=kd∗cπL_d = k_d * fraccpiLd​=kd​∗πc​

Trong kia c là color của thiết bị thể cùng k
D là tỉ lệ của yếu tắc diffuse.

Khi có mức giá trị của cả hai thành phần, việc họ cần có tác dụng là cộng bọn chúng lại cùng với nhau để có được color cuối cùng.

Cài đặt

Chuẩn bị

Model 3D: khẩu pháo lục được thiết kế kèm với material map (bao gồm những tham số ta đã nói phía bên trên - roughness, metallic...) với normal map và ambient occlusion maps (cho biết vùng làm sao trên khẩu pháo nhận được nhiều ánh sáng sủa nhất)

*

Một LUT (Look-up texture) đã đo lường sẵn đến hàm BRDF để bớt thiểu đo lường và thống kê cho GPU.

*

Lòng kiên định debug

*

Vertex shader

Cái này ngay gần như tương tự như nhau cho phần đông shader. Ở vertex shader bọn họ sẽ đọc những thông tin về đỉnh của model. Bao gồm:

Vị trí trong không gian (Model Space)Toạ độ màu lấy từ texture (Texture Coordinate)3 vector Normal, Tangent và Bitangent để tính được vector pháp tuyến

// tệp tin pbr.vertattribute vec4 a_position;attribute vec3 a_normal;attribute vec3 a_tangent;attribute vec3 a_binormal;attribute vec2 a_tex
Coord;varying vec3 v_normal;varying vec2 v_uv;varying vec4 v_world_position;varying vec3 v_tangent;varying vec3 v_binormal;void main() gl_Position = CC_MVPMatrix * a_position; v_world_position = CC_MVMatrix * a_position; v_normal = normalize(CC_Normal
Matrix * a_normal); v_uv = a_tex
Coord; v_uv.y = (1.0 - v_uv.y); v_tangent = normalize(CC_Normal
Matrix * a_tangent); v_binormal = normalize(CC_Normal
Matrix * a_binormal);gl_Position là vị trí nhưng mà cocos vẫn vẽ đỉnh kia lên màn hình, bởi đó bọn họ cần đưa từ Model
Space -> World
Space (View Space) -> Presentation
Space bằng phương pháp nhân cùng với ma trận MVP Matrix (được cocos hỗ trợ sẵn)Còn lại các varying chúng ta sẽ truyền bọn chúng sang fragment shader nhằm tính toán.

Fragment shader

Phần giám sát nhiều nhất. Trước tiên bọn họ cần khai báo một số biến nguồn vào để chuẩn bị cho quá trình tính toán.

// tệp tin pbr.frag// Khai báo độ đúng chuẩn của hình dáng float. Giả dụ cần thực hiện cho smartphone thì vị trí này cần phải có. Bởi GL_ES trên mobile chỉ xử lý cho đến độ đúng là mediump đến kiểu float// Nếu thực hiện cho PC thì cần sử dụng highp để unique hình ảnh cao hơn (do thực hiện số đúng mực hơn)#ifdef GL_ESprecision mediump float;#endif// các varying truyền từ vertex shadervarying vec3 v_normal;varying vec2 v_uv;varying vec4 v_world_position;varying vec3 v_tangent;varying vec3 v_binormal;// u_color là uniform của cocosuniform vec4 u_color;// địa điểm camerauniform vec3 u_cam_pos;// 5 point lights// Vị trí những nguồn sánguniform vec3 u_point_light<6>;// các texture mô tả bề mặt của thiết bị thểuniform sampler2D u_albedo_map;uniform sampler2D u_ao_map; uniform sampler2D u_metallic_map; uniform sampler2D u_roughness_map; uniform sampler2D u_normal_map; // Tuỳ ở trong vào materialuniform sampler2D u_opacity_map; // Tuỳ nằm trong vào material. Đôi lúc có một trong những material nên cái này, rất có thể bỏ điuniform sampler2D u_brdf; // cubemap để tính phản xạ môi trường cho những vật thể bóng bẩyuniform sampler
Cube u_hdr_map_0;// cubemap nhằm tính tia nắng khuếch tán tự môi trườnguniform sampler
Cube u_env_map;const float PI = 3.14159265359;Bắt tay vào sẵn sàng các quý giá được cung cấp sẵn nhằm tính toán, chúng ta sử dụng hàm texture2D để đọc dữ liệu từ texture và chuẩn chỉnh hoá vài quý giá varying:

void main() float metallic = texture2D(u_metallic_map, v_uv).r; vec3 normal = calc
Normal(); float roughness = texture2D(u_roughness_map, v_uv).r; float ao = texture2D(u_ao_map, v_uv).r; vec3 albedo = texture2D(u_albedo_map, v_uv).rgb; albedo = pow(albedo, vec3(2.2)); //...// Tính vector normal (nếu mã sản phẩm có hỗ trợ)vec3 calc
Normal() vec3 normal = texture2D(u_normal_map, v_uv).rgb; normal = normal * 2.0 - 1.0; normal = normal.r * v_tangent + normal.g * v_binormal + normal.b * v_normal; return normal;Chúng ta cần sử dụng câu lệnh pow(albedo, vec3(2.2)); để tăng khoảng màu của albedo lên. Làm việc này có cách gọi khác là gamma expansion, ở cách cuối bọn họ sẽ triển khai thêm một làm việc gamma compression nhằm nén màu quay trở về khoảng (0.0, 1.0).

Tiếp tục đo lường và thống kê các quý hiếm tại điểm:

vec3 world_pos = v_world_position.xyz; vec3 N = normal; vec3 V = normalize(u_cam_pos - world_pos); vec3 r = reflect(-V, N); float Ndot
V = max(dot(N, V), 0.0001); vec3 F0 = vec3(0.04); F0 = mix(F0, albedo, metallic); vec3 Lo = vec3(0.0);Ở đây họ tính toán sẵn những vector vị trí, vector tia nhìn V, vector sự phản xạ r. F0 là vector để tính yếu tố fresnel đã đề cập phía trên, nếu trọn vẹn là phi-kim loại sẽ có giá trị 0.04, trái lại sẽ mang color của vật dụng thể (albedo). Lo là tổng giá trị ánh sáng sủa tại điểm vẫn xét, khởi tạo bởi 0.

Tiếp theo họ sẽ tính cực hiếm Lo này so với từng mối cung cấp sáng

// POINT LIGHTS // Loop từ là một - 2 for(int i=1;i3;i++) // địa điểm của mối cung cấp sáng trong World
Space vec3 light = u_point_light; // Vector L = (nguồn sáng) - (vị trí điểm) vec3 L = normalize(light - world_pos); // Vector Halfway = V + L (V và L phần lớn đã chuẩn hoá) vec3 H = normalize(V + L); // khoảng cách đến nguồn sáng, phân chia 100.0 là nhằm scale đơn vị chức năng tính trong shader cùng với thực tế. Ví dụ so với mình 1 unit = 1cm => 100 unit = 1m vì thế cần phân chia 100.0 // bao gồm thể biến đổi để tăng ảnh hưởng của mối cung cấp sáng với thứ float dist = length(light - world_pos)/100.0; float attenuation = 1.0/(dist*dist); // Sự hao hụt năng lượng ánh sáng sủa được xấp xỉ bằng cách lấy nghịch đảo bình phương khoảng cách = Càng xa càng mờ/tối vec3 radiance = vec3(1.0,1.0,1.0) * attenuation; float Ndot
L = max(dot(N, L), 0.0); // Cosine góc tới của ánh sáng với pháp tuyến tại điểm float NDF = Distribution
GGX(N, H, roughness); // Hàm trưng bày float G = Geometry
Smith(Ndot
V, Ndot
L, roughness); // yếu tố geometry mặt phẳng của thiết bị vec3 F = Fresnel
Schlick(max(dot(H, V), 0.0), F0); // phản xạ Fresnel // Tỉ lệ giữa Diffuse và Specular (k
S + k
D = 1.0) vec3 k
S = F; vec3 k
D = vec3(1.0) - k
S; k
D *= 1.0 - metallic; // sự phản xạ Specular = (NDF * G * F) / (4.0 * Ndot
V * Ndot
L) vec3 num = NDF * G * F; float denom = 4.0 * Ndot
V * Ndot
L; vec3 specular = num / max(denom, 0.0001); // Ánh sáng cuối cùng = Specular + Diffuse // Diffuse = tỉ trọng diffuse * màu thứ thể / PI Lo += (k
D * albedo / PI + specular) * radiance * Ndot
L; Mình thực hiện nguồn sáng sủa từ 1-2 cho nên vì vậy lặp vòng for 2 lần. Quý hiếm ánh sáng sẽ được cộng vào ở cuối vòng lặp cho mỗi nguồn, nghĩa là vấn đề càng nhận ra ánh sáng từ không ít nguồn thì càng sáng rộng (hợp lý phết).

Các hàm được sử dụng ở phần code trên:

vec3 Fresnel
Schlick(float cos
Theta, vec3 F0) return F0 + (1.0 - F0) * pow(1.0 - cos
Theta, 5.0);float Distribution
GGX(vec3 N, vec3 H, float roughness) float a = roughness * roughness; float a2 = a*a; float Ndot
H = max(dot(N, H), 0.0); float Ndot
H2 = Ndot
H*Ndot
H; float num = a2; float denom = (Ndot
H2 * (a2 - 1.0) + 1.0); denom = PI * denom * denom; return num/denom;float Geometry
Schlick
GGX(float Ndot
V, float roughness) float r = (roughness + 1.0); float k = (r*r)/8.0; float num = Ndot
V; float denom = Ndot
V * (1.0-k) + k; return num/denom;float Geometry
Smith(float Ndot
V, float Ndot
L, float roughness) float ggx2 = Geometry
Schlick
GGX(Ndot
V, roughness); float ggx1 = Geometry
Schlick
GGX(Ndot
L, roughness); return ggx1 * ggx2;Các thống kê giám sát này đã làm được đề cập bên trên nên mình đã không lý giải lại nữa nhá. Giờ bọn họ sẽ xử phần phản xạ môi trường xung quanh.

vec3 F = Fresnel
Schlick
Roughness(Ndot
V, F0, roughness); vec3 k
S = F; vec3 k
D = 1.0 - k
S; k
D *= 1.0 - metallic; vec3 irradiance = texture
Cube(u_env_map, N).rgb; // Ánh sáng khuếch tán từ môi trường thiên nhiên vec3 diffuse = irradiance * albedo; // nhân tố Diffuse bọn họ cũng tính k
S và KD như sống trên. Dẫu vậy tính F chúng ta cần xét cho tới tính "nhám" của vật thể, tinh chỉnh hàm Fresnel
Schlick 1 tí.

vec3 Fresnel
Schlick
Roughness(float cos
Theta, vec3 F0, float roughness) // return F0 + (1.0 - F0) * pow(1.0 - cos
Theta, 5.0); return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(1.0 - cos
Theta, 5.0);Thành phần Specular sẽ tiến hành tính như sau.

const float MAX_LOD = 3.0; vec3 prefiltered
Color = texture
Cube
Lod(r, roughness * MAX_LOD).rgb; vec2 brdf = texture2D(u_brdf, vec2(Ndot
V, roughness)).rg; vec3 specular = prefiltered
Color * (F * brdf.x + brdf.y);Với LOD là độ chi tiết của texture khi chúng ta "phản chiếu" nó lên bề mặt. Họ sẽ tận dụng cubemap "mờ" để tạo nên các mức chi tiết khác nhau. Đoạn này đúng ra bọn họ phải sử dụng các mipmap level không giống nhau của texture cubemap. Tuy nhiên phiên bạn dạng Open
GL được áp dụng bởi cocos2dx không cung ứng hàm texture(sampler, vector, mip
Level) yêu cầu mình phải áp dụng một cách cồng kềnh hơn. Kết quả đạt được với các scene mình demo thử khá tốt, và performance không thật tệ.

vec4 texture
Cube
Lod(vec3 uvw, float lod) if(lod 1.0) return texture
Cube(u_hdr_map_0, uvw); else if(lod 2.0) return mix(texture
Cube(u_hdr_map_0, uvw), texture
Cube(u_env_map, uvw), vec4(fract(lod))); else return texture
Cube(u_env_map, uvw); Hàm vẫn nội suy quý giá giữa 2 cubemap để tạo thành các hình hình ảnh với độ mờ khác nhau tuỳ theo lod.

Sau lúc tính toán chấm dứt thành phần diffuse với specular, việc sau cuối cần có tác dụng là cộng chúng lại với kết hợp với ánh sáng sủa từ nguồn sáng (Lo) ta đã có.

// ... Vec3 ambient = (k
D * diffuse + specular)* ao; vec3 màu sắc = ambient + Lo; // Gamma Compression nhằm nén màu hình ảnh về khoảng chừng (0,1); màu sắc = color/(color + vec3(1.0)); color = pow(color, vec3(1.0/2.2)); gl_Frag
Color = vec4(color, 1.0) * u_color;

Cocos2dx

Vì mục tiêu chính là thiết lập shader để tô màu, phần này mình vẫn chỉ cài đặt công việc tối thiểu nhằm thêm một đối tượng người tiêu dùng 3D và thực hiện shader lên nó. Các bước râu rìa (cài để camera, điều khiển) sẽ không còn được đề cập, mặc dù nhiên rất có thể dễ dàng tìm kiếm thấy không ít hướng dẫn bên trên mạng cho cocos. Chúng ta nào chạm mặt khó khăn gì lúc cài đặt có thể tương tác với mình.

init
Sphere: function() // Đặt tên hơi gàn do lúc đầu mình chỉ định và hướng dẫn vẽ 1 quả ước thôi :) let sphere = new jsb.Sprite3D(res.gun); sphere.set
Rotation3D(cc.math.vec3(-90, 0, 0)); sphere.set
Position3D(cc.math.vec3(14, 125, 0)); this.add
Child(sphere); this._sphere = sphere;,Khởi chế tạo ra một đối tượng người sử dụng Sprite3D và cho vô trong scene. Không có gì quánh biệt. Vị trí với góc luân phiên là tuỳ ý, à và nhớ thiết đặt camera để nhìn thấy được nhé. Setup camera có tại đoạn cuối bài viết trước của mình.

Sau đó họ tạo ra một đối tượng lưu state của shader và áp nó lên Sprite3D.

init
Shader: function() // Đường dẫn đến shader const shader = new cc.GLProgram("res/shader/pbr.vert", "res/shader/pbr.frag"); shader.retain(); const state = cc.GLProgram
State.create(shader); this._sphere.set
GLProgram
State(state); this._state = state; this._program = shader; // các texture truyền vào state.set
Uniform
Texture("u_brdf", cc.texture
Cache.add
Image(res.brdf_lut)); state.set
Uniform
Texture("u_albedo_map", cc.texture
Cache.add
Image(res.gun_albedo)); state.set
Uniform
Texture("u_metallic_map", cc.texture
Cache.add
Image(res.gun_metallic)); state.set
Uniform
Texture("u_ao_map", cc.texture
Cache.add
Image(res.gun_ao)); state.set
Uniform
Texture("u_roughness_map", cc.texture
Cache.add
Image(res.gun_roughness)); state.set
Uniform
Texture("u_normal_map", cc.texture
Cache.add
Image(res.gun_normal)); let p
Point
Lights = <0,0,0, 0,0,-50, 0,100,50>; p
Point
Lights = new Float32Array(p
Point
Lights); var program = shader.get
Program(); var loc = gl.get
Uniform
Location(program, "u_point_light"); gl.uniform3fv(loc, 3, p
Point
Lights); // Cubemap ánh nắng khuếch tán const path = "res/cubemaps/icelake_env/"; const env_map = jsb.Texture
Cube.create(path + "px.png", path + "nx.png", path + "py.png", path + "ny.png", path + "pz.png", path + "nz.png"); env_map.set
Tex
Parameters(gl.LINEAR, gl.LINEAR, gl.MIRRORED_REPEAT, gl.MIRRORED_REPEAT); state.set
Uniform
Texture("u_env_map", env_map); // những texture cube không được retain khi truyền vào shader, nên cần phải có một skybox ảo để giữ lại nó. Chúng ta sẽ cấm đoán hiển thị skybox này (vì nó mờ) let dummyskybox = jsb.Skybox.create(); dummyskybox.set
Texture(env_map); this.add
Child(dummyskybox); dummyskybox.set
Visible(false); // Cubemap cụ thể const path_hdr = "res/cubemaps/icelake_hdr_1/"; const hdr_map = jsb.Texture
Cube.create(path_hdr + "px.png", path_hdr + "nx.png", path_hdr + "py.png", path_hdr + "ny.png", path_hdr + "pz.png", path_hdr + "nz.png"); hdr_map.set
Tex
Parameters(gl.LINEAR, gl.LINEAR, gl.MIRRORED_REPEAT, gl.MIRRORED_REPEAT); state.set
Uniform
Texture("u_hdr_map_0", hdr_map); // Hiển thị để xem mọi thứ sinh động hơn (là một cái nền đen thui) let dummyskybox = jsb.Skybox.create(); dummyskybox.set
Texture(hdr_map); this.add
Child(dummyskybox); ,Sau đó nhớ setup thêm cả hàm truyền địa chỉ camera khi thay đổi góc con quay nữa nhé. Các bạn hãy tìm phương pháp để gọi hàm này mỗi khi camera chuyển đổi góc máy, vị trí.

on
Camera
Change: function(position) if(this._state) this._state.set
Uniform
Vec3("u_cam_pos", position); ,

Thành phẩm

Đây là bài xích dịch từ nội dung bài viết của Wes Mcdermott (Allegorithmic) về bài bác hướng dẫn 2 phần “PBR Guide”. Đây là một nội dung bài viết rất hay và khá bỏ ra tiết, tất tần tật về nghệ thuật texturing PBR. Do mong ước mọi người làm rõ về PBR cũng giống như học tập thêm đề xuất tôi quyết định dịch bài xích này, trong bài tôi sẽ thay giữ lối hành văn theo tác giả, nhưng chắc chắn rằng sẽ có một số trong những từ đã dịch không đúng chuẩn nếu tất cả phần như thế nào dịch chưa theo sát hoặc sai phiền chúng ta hãy bình luận ở bên dưới.

Xem lại phần 1

HƯỚNG DẪN PBR BỞ
I ALLEGORITHMIC – Phần 2

Hướng dẫn thực hành để tạo hóa học lệu PBR(PBR Textures)Mục lục

– PBR là gì? tác dụng là gì? Nó có chân thành và ý nghĩa gì so với người nghệ sĩ?– quá trình Metal/Roughness:

Điện môi F0(Dielectric F0)Màu cơ sở(Base Color)Tính kim loại(Metallic)Độ gồ ghề(Roughness)Ưu cùng nhược điểm của độ sắc nét và tỷ lệ texel(texture pixel)

– các bước Specular/Glossiness:

Khuếch tán(Diffuse)Phản quang(Specular)Độ trơn loáng(Glossiness)Ưu cùng nhược điểm của độ sắc nét và tỷ lệ texel(texture pixel)

– Các bản đồ chung cho tất cả 2 quy trình:

Ambient Occlusion
Độ cao(Height)Normal

– app Substance PBR(danh sách mục)– Phụ lục – Biểu đồ dùng là mặt phẳng kim loại?

Giá trị làm phản xạ
So sánh thiết yếu xác
So sánh không thiết yếu xácHướng dẫn thực hành thực tế để tạo chất lệu PBR(PBR Textures)

Trong Phần 1, họ đã quan niệm PBR từ ý kiến kỹ thuật và lý thuyết. Vào Phần 2, bọn họ sẽ bàn bạc về ứng dụng thực tiễn của việc tạo nên các kết cấu PBR và cung cấp một bộ những nguyên tắc dựa trên các nền tảng được thiết lập trong Phần 1.

Chúng ta sẽ bước đầu bằng cách khẳng định lại PBR từ góc nhìn nghệ thuật. Trường đoản cú đó, bọn họ sẽ giải quyết các bề ngoài của tiến trình metal/roughness. Sau đó, bọn họ sẽ theo dõi các bước specular/glossiness và thảo luận về sự khác hoàn toàn trong các phương thức này. Tốt nhất có thể là phát âm qua cả nhì quy trình quá trình để có ý tưởng tương đối đầy đủ về các nguyên tắc tổng thể và toàn diện cho vấn đề soạn thảo các kết cấu PBR.

Trong lí giải này, họ sẽ trao đổi quy trình làm việc bằng bộ mức sử dụng Substance, nhưng những nguyên tắc được luận bàn để tạo bạn dạng đồ áp dụng cho bất kỳ phần mềm nào được áp dụng để tạo ra các kết cấu và vật tư dựa trên trang bị lý.

Kết xuất thứ họa dựa vào tính thứ lý (PBR) là một phương pháp hơn là 1 trong những tiêu chuẩn. Có các nguyên tắc và vẻ ngoài cụ thể, nhưng không tồn tại quy tắc thực sự nào, tức là có thể có những triển khai khác nhau. Những loại phiên bản đồ và quy trình thao tác làm việc được sử dụng có thể khác nhau. GGX BRDF thường được áp dụng nhưng rất có thể có sự chuyển đổi về các thuật ngữ. Quanh đó ra, một số khối hệ thống xử lý thay đổi tên bản đồ, mặc dù việc thực hiện cơ bạn dạng của chúng vẫn giữ nguyên.

Trong phần này, shop chúng tôi sẽ đàm luận về hai quy trình các bước phổ trở nên nhất, đó là metal/roughness và specular/glossiness (Hình 16). Bộ hình thức Substance tạo bạn dạng đồ PBR, bao hàm Substance Designer, Substance Painter với Substance B2M, cung cấp cả luồng công việc. Trình đổ láng Substance PBR(shader) chất cần sử dụng cho metal/roughness và specular/glossiness thực hiện GGX BRDF cùng không sử dụng bất kỳ sự tái sinh sản giá trị nào mang đến roughness/glossiness. Tuy nhiên, nếu rất cần được có bạn dạng chỉnh sửa tùy chỉnh, điều này có thể dễ dàng được triển khai trong Substance.

*

Hình 16 – các bước Metallic/Roughness cùng Specular/Glossiness

Hơn nữa, trình sơn bóng thiết lập cấu hình được hỗ trợ trong bộ khí cụ Substance, gồm nghĩa là bạn có thể thích ứng Substance với ngẫu nhiên phương pháp thiết lập cấu hình nào.

Trong lúc cả nhì quy trình thao tác làm việc này đều phải sở hữu ưu và nhược điểm vào việc triển khai của chúng, không tồn tại cái như thế nào hơn chiếc nào. Đó là những khái niệm và lý lẽ cơ phiên bản sẽ có tác dụng cho bạn dạng đồ PBR bạn tạo ra sự chính xác, chứ không phải chính bản thân quy trình thao tác đó. Những quy trình làm việc đại diện cho và một dữ liệu, mà lại chúng thực hiện nó theo vô số cách thức khác nhau.

PBR là gì?

Kết xuất vật họa dựa vào vật lý (PBR) là một phương thức tô bóng cùng kết xuất cung cấp một đại diện đúng đắn hơn về phong thái ánh sáng địa chỉ với những bề mặt. Nó được ám chỉ nên kết xuất trang bị họa dựa vào vật lý (PBR) hoặc đánh bóng dựa vào vật lý (PBS). Tùy thuộc vào chi tiết nào của phương pháp đang được thảo luận, PBS thường sệt trưng cho những khái niệm sơn bóng với PBR đặc thù cho vấn đề hiển thị cùng ánh sáng. Tuy nhiên, cả nhị thuật ngữ biểu thị quá trình thay mặt đại diện cho gia sản từ một ý kiến vật lý thiết yếu xác.

Lợi ích của PBR là gì?

Là nghệ sĩ, bạn cũng có thể xem công dụng của PBR từ tứ duy hiệu quả về nghệ thuật và thẩm mỹ và sản xuất:

1. PBR loại bỏ các bỏng đoán của các thuộc tính mặt phẳng thực thi, chẳng hạn như sự lóng lánh, vì phương pháp và thuật toán của chính nó được dựa trên các công thức vật dụng lý chủ yếu xác. Bởi đó, dễ dãi hơn để tạo nên các thành phầm làm sẵn(assets) thực tế.

2. Các sản phẩm làm sẵn(assets) sẽ trông đúng đắn trong mọi đk ánh sáng.

3. PBR cung cấp quy trình làm việc để tạo thành các tác phẩm thẩm mỹ và nghệ thuật nhất quán, ngay cả giữa những nghệ sĩ khác nhau.

Nó có ý nghĩa sâu sắc gì so với người nghệ sĩ?

Là nghệ sĩ, bọn họ cần suy xét một cách khác biệt về các phiên bản đồ tế bào tả những thuộc tính của một mặt phẳng như những hiện đại trong phần cứng máy tính và kết xuất hình ảnh cho phép chúng ta mô phỏng gần cận hơn về tính vật lý của ánh sáng.

Xem thêm: Mách bạn cách tính vật liệu xây nhà cấp 4 100m2, bảng giá chi tiết cho việc xây nhà cấp 4

Chúng ta cần phải đưa ra những khái niệm về các bạn dạng đồ khuếch tán(diffuse maps) và lóng lánh(specular maps) từ những quy trình kết xuất hình hình ảnh truyền thống vì các bản đồ này chỉ giao hàng như các giải pháp thay thế hệ trọng ánh sáng sủa với các vật liệu.

Trong PBR, trình đổ bóng(shader) xử lý những phần đặc trưng trong chính sách của đồ dùng lý thông qua bảo tồn tích điện và BRDF. Trong khi, với tư phương pháp là nghệ sĩ, shop chúng tôi tạo ra các bản đồ được lí giải bởi những nguyên tắc thiết bị lý. Các khía cạnh công nghệ của PBR đưa ra bỏng đoán từ những giá trị vật hóa học và cho phép họ dành nhiều thời gian hơn vào các khía cạnh sáng chế của hóa học liệu(texture). Tuy vậy điều đặc biệt là phải tuân thủ nguyên tắc và bạn dạng đồ thực hiện một cách thiết yếu xác, điều này không tồn tại nghĩa là họ phải làm lơ trực giác nghệ thuật của mình. Đó là quan lại điểm nghệ thuật thực sự đưa về tính bí quyết cho một đồ vật liệu, tiết lộ câu chuyện của chính mình thông qua các chi tiết và các biểu hiện được sản xuất cẩn thận. Tính trang bị lý của quá trình không đề nghị là mối niềm nở chính của nghệ sĩ. Chỉ vì chúng ta đang làm việc trong một môi trường xung quanh vật lý đúng chuẩn hơn không tồn tại nghĩa là chúng ta không thể tạo thành nghệ thuật cách điệu(stylized art). Ví dụ, mô hình phản xạ dựa vào tính vật lý của Disney có phong cách thiết kế để trở thành phương pháp tiếp cận nguyên tắc. Đó là, nó được hướng nhiều hơn nữa theo hướng thẩm mỹ hơn là một quy mô vật lý nghiêm khắc. Điều quan trọng đặc biệt là yêu cầu biết những nguyên tắc với sử dụng những hướng dẫn mà lại không bị phụ thuộc với chúng.

** Là nghệ sĩ, họ cần phải quan tâm đến khác nhau về các bản đồ tế bào tả các thuộc tính của một bề mặt. Có các loại phiên bản đồ mới với những quy tắc và qui định để tuân theo. **

Quy trình Metal/Roughness

Quy trình metal/roughness được xác minh thông qua 1 tập hợp những kênh, được đưa vào trong 1 bộ lấy mẫu trong trình đổ láng PBR(PBR shader) dưới dạng họa tiết hóa học tiệu(texture). Các bản đồ ví dụ cho các bước metal/roughness là màu cơ bản(Base/albedo color), kim loại(metallic) với độ nhám(roughness) (Hình 17). Bọn họ sẽ đàm luận về từng loại phiên bản đồ, phổ biến cho tất cả hai quá trình công việc. Trình đổ láng PBR(PBR shader) cũng sẽ sử dụng ambient occlusion, bản đồ pháp tuyến(normal) và có thể là chiều cao(height) cho việc lập phiên bản đồ thị sai(parallax) hoặc phiên bản đồ dời hình(displacement) (Hình 18)

*

Hình 17 – tiến trình metal/roughness

*

Hình 18 – tiến trình Metallic/Roughness với Specular/Glossiness

Quy trình Metal/Roughness

Trong quy trình metal/roughness, giá trị phản xạ cho kim loại được để trong bạn dạng đồ color cơ bản(base color) cùng với màu bội phản chiếu của các đối tượng người dùng điện môi(dielectric). Sự phản xạ ở góc cạnh lướt qua được xử lý vị BRDF. Phiên bản đồ kim vùng loại(metallic map) được sử dụng, vận động giống như khía cạnh nạ(mask) để sáng tỏ dữ liệu sắt kẽm kim loại và điện môi được tra cứu thấy trong bản đồ color cơ bản(base color). Các giá trị F0 điện môi không được thực thi bằng tay thủ công như trình đổ bóng(shader) giải pháp xử lý chúng. Khi trình đổ bóng(shader) thấy màu đen trong bản đồ vùng kim loại(metallic map), nó xử lý các khu vực tương ứng trong bản đồ màu sắc cơ bản(base color) như điện môi và áp dụng một giá trị sự phản xạ 4% (0,04) (Hình 19).

*

Hình 19 – color đen biểu hiện phản xạ phi kim loại và 0,04 (4%) được sử dụng

Như họ đã đàm luận trong Phần 1, quý giá 4% bao gồm hầu hết các vật liệu năng lượng điện môi(dielectric) phổ biến. Điều đặc trưng cần chú ý là toàn bộ các giá chỉ trị, ví dụ như điện môi F0, độ phản xạ kim loại và phạm vi khả năng chiếu sáng cho color albedo, được mang từ dữ liệu đo thực tế. Khi bọn họ xem xét từng loại bản đồ, bọn họ sẽ nói về các nguyên tắc dựa trên dữ liệu đo được.

Trong Phần 1, chúng ta đã đàm đạo khái niệm về bảo đảm năng lượng, nơi ánh nắng phản chiếu trên mặt phẳng sẽ không khi nào mãnh liệt hơn trước lúc nó va vào bề mặt. Về phương diện triển khai, trình đổ bóng(shader) thường cách xử lý việc điều hành và kiểm soát bảo tồn năng lượng. Đây là trường phù hợp với Substance. Với quy trình metal/roughness, quan trọng phá đổ vỡ luật bảo tồn năng lượng. Sự cân đối khuếch tán(diffuse) (màu phản xạ) với lóng lánh(specular) được tinh chỉnh qua phương diện nạ kim loại(metallic mask), và cho nên vì thế không thể tạo nên một tình huống mà khuếch tán(diffuse) với lóng lánh(specular) có thể kết hợp để phản xạ/khúc xạ nhiều ánh nắng hơn thuở đầu nhận được.

Giá trị sự phản xạ cho sắt kẽm kim loại được đặt trong bản đồ màu cơ sở(base color) cùng với màu phản chiếu cho các vật điện môi(dielectric).

Điện môi F0(Dielectric F0)

F0 cho vật liệu điện môi phổ cập thường được thiết lập 0.04% (tuyến tính) 4% bức xạ . Trong tiến trình metal/roughness, quý hiếm này được mã hóa trực tiếp trong trình đổ bóng(shader).

Một số hệ thống xử lý metal/roughness, ví dụ điển hình bộ giải pháp Substance với Unreal Engine 4, tất cả một thanh tinh chỉnh độ lóng lánh(Specular), được cho phép nghệ sĩ chuyển đổi giá trị F0 thường xuyên cho các phần năng lượng điện môi(dielectric). Trong Substance, cổng output này được dán nhãn là ‘‘ specular
Level ’’ cùng được cung ứng bởi một cỗ lấy mẫu gia công bằng chất liệu trong bộ đổ trơn PBR(the metal/roughness PBR shader). Nó thay mặt cho phạm vi của 0.0-0.08, như trong Hình 20. Phạm vi này được đặt lại trong bộ đổ bóng(shader) đến 0.0-1.0 trong những số đó 0.5 thay mặt cho phản xạ 4%.

*

Hình 20 – Đầu ra thang độ lóng lánh(Specular) thay mặt cho phạm vi 0.0-0.08 trong bộ độ bóng(shader) cho điện môi F0

Nếu bạn phải đặt F0 theo cách thủ công bằng tay cho một vùng điện môi(dielectric), bạn có thể làm như vậy bằng cách sử dụng đầu ra output specular
Level vào biểu thứ Substance vào Substance Designer hoặc kênh specular
Level trong Substance Painter như trong hình 21. Họ sẽ đàm luận F0 mang đến vùng điện môi(dielectric) theo chiều sâu trong quy trình specular/glossiness, vì các bạn có toàn quyền kiểm soát điều hành F0 trong quy trình công việc đó.

*

Hình 21 – Đặt tùy chỉnh điện môi F0 bằng cách sử dụng kênh specular level

*

Hình 22 – màu cơ sở(Base color) chứa màu khuếch tán bức xạ và giá trị sự phản xạ cho kim loại

Màu cơ sở(Base Color) RGB – s
RGB

Bản đồ gia dụng màu cơ sở(Base Color) là một phiên bản đồ RGB hoàn toàn có thể chứa 2 nhiều loại dữ liệu: màu sự phản xạ khuếch tán cho những giá trị điện môi(dielectric) và giá trị sự phản xạ cho kim loại, như trong Hình 22. Màu đại diện cho vùng điện môi(dielectric) diễn tả bước sóng bội phản xạ, như được trao đổi trong Phần 1. Các giá trị phản nghịch xạ có mặt nếu một khu vực được ký kết hiệu là kim loại trong bạn dạng đồ kim loại(metalic map)(các giá trị màu trắng).

Hướng dẫn bí quyết tạo

Bản thứ màu cơ sở(base màu sắc map) rất có thể được xem như là cái gì đó hơi phẳng vào âm điệu. Đó là, độ tương phản của chính nó thấp hơn so với bạn dạng đồ khuếch tán(Diffuse map) truyền thống. Không tồn tại giá trị quá sáng hoặc vượt tối. Đối tượng có xu hướng sáng hơn những so với bọn chúng ở không tính đời khi họ nhớ. Bạn cũng có thể hình dung phạm vi này về mặt đồ dùng chất về tối nhất là than đá với tuyết trắng là sáng nhất. Than đá thì tối, tuy vậy nó không hẳn là 0.0 màu sắc đen. Những giá trị màu mà chúng ta chọn rất cần được nằm trong phạm vi độ sáng.

Liên quan mang lại phạm vi độ sáng, bọn họ chủ yếu kể đến màu sắc phản xạ điện môi(dielectric). Vào Hình 23, bạn cũng có thể thấy một ví dụ trong các số đó giá trị không sạch đã giảm đi dưới phạm vi độ sáng đúng. Đối với các giá trị tối, bạn tránh việc để dưới 30-50 s
RGB. Phạm vi cho những giá trị tối hoàn toàn có thể chịu được rộng ở 30 s
RGB và chặt chẽ hơn ở tại mức 50 s
RGB. Đối với những màu sáng, bạn không nên có bất kỳ giá trị nào cao hơn nữa 240 s
RGB (Hình 23).

*

Hình 23 – Phạm vi quý hiếm màu cơ sở(base color) cho vật tư điện môi(dielectric) (màu bội phản xạ)

Chúng ta vẫn nói rằng màu sắc cơ sở(base color) chứa dữ liệu cho ánh nắng phản chiếu về vật tư điện môi(dielectric), và vì vậy nó không có thông tin tia nắng như AO(ambient occlusion). Hoàn toàn có thể có ngoại lệ cho câu hỏi thêm micro-occlusion(AO đưa ra tiết) vào trường thích hợp trình đổ bóng(shader) không thể đại diện thay mặt cho mức chi tiết này chỉ với một kênh AO(ambient occlusion), như được hiển thị trong Hình 24. Mặc dù nhiên, nếu việc thêm micro-occlusion(AO đưa ra tiết) đạt thêm vào phiên bản đồ thì vẫn cần được điều chỉnh bởi các phạm vi độ sáng. Những giá trị trong phiên bản đồ cho biết giá trị sự phản xạ cho sắt kẽm kim loại phải được rước từ những giá trị đo được trong quả đât thực. Hầu hết giá trị này sẽ sở hữu khoảng 70-100% lóng lánh(specular), mà bạn có thể ánh xạ tới phạm vi s
RGB 180-255.

*

Hình 24 – ngoại lệ đối với việc bao hàm thông tin ánh sáng trong màu sắc cơ sở(base color) là AO đưa ra tiết

Trong phần tiện ích Substance PBR, họ sẽ luận bàn về các công cụ hỗ trợ các quý hiếm F0 được đặt trước cho các vật liệu phổ biến. Các bảng xếp thứ hạng metal/roughness vì chưng Sébastien Lagarde hỗ trợ cũng là đa số nguồn tài nguyên hoàn hảo (Lagarde 2014).

Các giá bán trị cho biết thêm giá trị làm phản xạ đối với kim loại đề nghị thu được từ những giá trị đo trong thế giới thực.

Màu đại diện thay mặt cho albedo cho vật tư phi kim loại và các giá trị sự phản xạ cho kim loại.Màu cơ sở(base color) nên không tồn tại thông tin chiếu sáng kế bên micro-occlusion(Ao bỏ ra tiết).Các giá chỉ trị buổi tối không được thấp hơn 30 s
RGB (phạm vi đến phép) mang đến 50 s
RGB (phạm vi bao gồm xác).Giá trị sáng ko được cao hơn 240 s
RGB.Giá trị phản xạ cho sắt kẽm kim loại thô sẽ cao, trong phạm vi 70-100% lóng lánh(specular), mà chúng ta cũng có thể ánh xạ tới 180-255 s
RGB.

Như bạn sẽ đọc vào phần kim loại(Metallic) mặt dưới, màu cơ sở(base color) cũng có thể chứa các giá trị bức xạ kim loại. Nếu bụi bẩn hoặc quy trình oxy hóa được cung ứng màu cơ sở(base color), điều đó sẽ khiến cho giá trị sự phản xạ kim loại giảm đi mức không thể xem là kim nhiều loại thô.

Bản đồ dùng kim loại(Metallic) cũng cần tính đến việc bổ sung chất dơ hoặc quá trình oxy hóa, và cực hiếm của nó yêu cầu được hạ xuống làm việc những khoanh vùng này để cho thấy thêm rằng nó không còn được coi là kim một số loại thô nữa. Trong hình 25 chúng ta có thể thấy sắt kẽm kim loại rỉ sét được giải pháp xử lý như chất biện pháp điện/điện môi và được đặt thành màu đen trong phiên bản đồ kim loại(Metallic). Lớp đất cũng được tính trong bản đồ kim loại(Metallic) với những giá trị nối tiếp màu xám. Phiên bản đồ kim loại(Metallic) có thể không yêu cầu lúc nào thì cũng là nhị phân có nghĩa là 0,0 (đen) hoặc 1,0 (trắng) khi có một lớp mỏng tanh của vật tư điện môi(dielectric) như vết mờ do bụi bẩn.

Bản thứ kim loại(Metallic) vận động theo cách tương tự như như khía cạnh nạ(mask), vày nó nói đến trình đổ bóng(shader) biện pháp diễn giải tài liệu được tra cứu thấy trong màu sắc cơ sở(base color).

*

Hình 25 – bài toán thêm bụi bẩn và/hoặc quá trình oxy hóa cũng phải được tính trong bạn dạng đồ kim loại(Metallic)

Kim loại(xám(grayscale) – tuyến đường tính(Linear)

Bản đồ gia dụng kim loại(Metallic) được sử dụng để khẳng định các khu vực của vật liệu biểu thị kim các loại thô. Là một bản đồ thang độ xám, nó vận động theo cách tựa như như khía cạnh nạ(mask), bởi vì nó nói cho trình đổ bóng(shader) cách nó nên giải thích dữ liệu được tìm thấy trong màu cơ sở(base color).

*

Hình 26 – phiên bản đồ color cơ sở(base color) chứa các giá trị sự phản xạ cho sắt kẽm kim loại thô như được chỉ ra rằng bởi phiên bản đồ kim loại(Metallic)

Dữ liệu trong phiên bản đồ kim loại(Metallic) ko chứa dữ liệu trong thế giới thực được thực hiện trực tiếp làm giá trị thứ chất. Nó chỉ đơn giản và dễ dàng mô tả mang đến trình đổ bóng(shader) nơi mà các khoanh vùng trong màu sắc cơ sở(base color) được đọc là màu bội phản chiếu (điện môi(dielectric)) và các khu vực biểu thị các giá trị sự phản xạ kim loại. Trong bản đồ kim loại, 0,0 (đen – 0 s
RGB) thay mặt cho phi sắt kẽm kim loại và 1,0 (trắng – 255 s
RGB) đại diện cho sắt kẽm kim loại thô. Trong việc xác định kim loại thô với phi kim loại, bản đồ kim loại này hay là nhị phân: đen hoặc trắng, kim loại hoặc phi kim loại. Vào thực tế, khi trình đổ bóng(shader) nhìn vào bản đồ kim loại và thấy color trắng, nó sẽ chất vấn các khoanh vùng tương ứng trong phiên bản đồ màu cơ sở(base color) để đưa các giá chỉ trị sự phản xạ cho sắt kẽm kim loại như trong Hình 26.

Hướng dẫn phương pháp tạo

Bề mặt kim loại có hai khía cạnh quan trọng đặc biệt liên quan mang lại tạo hóa học liệu(texturing): đầu tiên, giá trị phản xạ của bọn chúng sẽ cao vào phạm vi 70-100% độ lóng lánh(specular); máy hai, một số kim loại rất có thể bị ăn mòn. Chúng ta sẽ xem xét hai tinh vi này một phương pháp riêng lẻ khi chúng ta bàn luận các phía dẫn phương pháp tạo.

Các vùng kim loại nằm vào phạm vi này sẽ rất cần phải có một dải phản xạ từ 70-100% phản bội xạ.

Kim nhiều loại thô

Bản thứ kim loại(Metallic) được hướng dẫn và chỉ định là 0 hoặc 1, sắt kẽm kim loại hay không, với được áp dụng để xác minh trạng thái kim loại thô, được tiến công bóng. Theo hướng dẫn chung, phạm vi màu xám cho kim loại thô sẽ tiến hành định rõ là 235-255 s
RGB
trong bản đồ kim loại(Metallic). Những vùng kim loại nằm vào phạm vi này sẽ cần phải có một vùng sự phản xạ từ 70-100% sự phản xạ trong phiên bản đồ màu cơ sở(base color), mà bạn cũng có thể ánh xạ tới 180-255 s
RGB
như trong Hình 27. Một đợt nữa, những giá trị này dựa vào dữ liệu đo thực tế.

*

Hình 27 – kim loại cơ bạn dạng sẽ được định rõ ≥ 235 s
RGB trong phiên bản đồ kim loại(Metallic)

Lớp làm mòn hoặc lớp điện môi(dielectric)

Khi bạn phong hóa một bề mặt, bạn có thể cần nên xem xét rằng sắt kẽm kim loại bị oxy hóa, hoặc nhằm bù đắp cho các khía cạnh môi trường xung quanh khác như bụi và bẩn. Trong số những trường hợp này, kim loại cần phải được coi như chất điện môi(dielectric). Điều này cũng như với kim loại phủ sơn. Nếu như bạn nhìn vào kim loại phủ sơn nơi phần sơn đã bị trầy xước hoặc bị sứt mẻ, sắt kẽm kim loại tiếp xúc là “thô” (màu trắng trong bạn dạng đồ kim loại(Metallic)) và sơn là 1 lớp chất điện môi(dielectric) (màu black trong phiên bản đồ kim loại), như bộc lộ trong Hình 28.

*

Hình 28 – kim loại phủ sơn được xem như như chất điện môi(dielectric)

Bản thứ kim loại(Metallic) có thể biểu diễn trạng thái xáo trộn giữa sắt kẽm kim loại và phi sắt kẽm kim loại được trình diễn bằng các giá trị sự chuyển tiếp giữa màu xám trong bản đồ. Nếu bản đồ kim loại(Metallic) có quý hiếm màu xám thấp rộng 235 s
RGB
, các bạn cần giảm ngay trị làm phản xạ sắt kẽm kim loại “thô” sinh hoạt màu cơ sở(base color). Hãy nghĩ cho một lớp bụi bẩn che khuất 1 phần kim một số loại thô như vào Hình 29. Bụi bặm là lớp điện môi(dielectric). Nếu khách hàng để bản đồ kim loại(Metallic) màu trắng hoàn toàn, nó đã xử lý đông đảo vùng bụi bẩn này trong màu cơ sở(base color) như giá bán trị sự phản xạ của kim loại. Cực hiếm màu bụi bẩn thấp hơn những so với cái giá trị cần thiết để biểu thị độ phản xạ 70-100% so với kim nhiều loại được đánh bóng. Bởi cách tiết kiệm chi phí với chính sách giảm giá trị phiên bản đồ kim loại(Metallic) ở các khoanh vùng được màn trình diễn bằng vết mờ do bụi bẩn, bạn tạo nên sự pha trộn tương thích giữa các giá trị bức xạ điện môi(dielectric) và kim loại.

*

Hình 29 – Vùng color xám cho kim loại sẽ tiến hành định rõ ≤ 235 s
RGB trong bạn dạng đồ kim loại(Metallic)

Độ mờ đục của lớp bụi bặm bụi bờ có thể cho thấy mức độ giảm giá trị phản xạ trong màu sắc cơ sở(base color). Không có quy tắc thắt chặt và cố định ở đây. Bạn đa số đang dịch rời từ một bề mặt phản xạ cao (dẫn điện) cho một mặt phẳng phản xạ thấp hơn (cách điện/điện môi). Mặc dù nhiên, nút độ nhưng quá trình chuyển đổi này diễn ra có thể thay đổi.

Bộ quy định Substance cho phép sử dụng dễ dàng các cảm giác phong hóa, tương tự như kiểm rà cách các hiệu ứng này đang truyền đến các kênh thông qua hỗ trợ đa kênh(multi-channel support). Substance Designer với Substance Painter cho phép bạn biến hóa các thông số trên một bộ tạo hiệu ứng Substance(Substance effect generator), nó sẽ tự động điều chỉnh các kênh được điều khiển bởi cảm giác Substance.

Ví dụ, vào Substance Designer, chúng ta cũng có thể sử dụng nút Material color Blend để áp dụng hiệu ứng như bụi bờ trên nhiều kênh. Bên trên Material Blend màu, chúng ta cũng có thể điều khiển cảm giác của lớp bụi bặm trên kim loại bằng phương pháp điều chỉnh thanh trượt cực hiếm kim loại(Metallic), như vào Hình 30.

Kim các loại bị oxy hóa cần phải được giải pháp xử lý như lớp điện môi(dielectric) hoặc sắt kẽm kim loại rỉ sét. Điều này cũng giống với kim loại phủ sơn

*

Hình 30 – vật liệu pha trộn màu sắc. Giá trị sắt kẽm kim loại thấp hơn biểu hiện một lớp bụi bờ mỏng (trạng thái sự chuyển tiếp giữa giữa bụi bẩn và kim loại)

Màu đen (0.0) là phi sắt kẽm kim loại và white color (1.0) là kim loại. Rất có thể có những giá trị chuyến qua thang độ xám để đo lường và tính toán quá trình oxy hóa hoặc lớp bụi bẩn.Nếu bạn dạng đồ kim loại(Metallic) có giá trị thấp hơn 235 s
RGB, thì giá trị phản xạ cần phải được hạ xuống trong bạn dạng đồ màu sắc cơ sở(base color)Độ gồ ghề(xám(grayscale) – con đường tính(Linear))

Bản vật dụng gồ ghề(Roughness) mô tả những bất thường mặt phẳng gây ra sự khuếch tán ánh sáng, như vào Hình 31. Như đã đàm đạo trong Phần 1, hướng sự phản xạ sẽ đổi khác ngẫu nhiên dựa trên độ nhám bề mặt. Điều này thay đổi hướng ánh sáng, nhưng lại cường độ tia nắng vẫn ko đổi. Mặt phẳng gồ ghề đang có điểm nhấn lớn hơn cùng mờ hơn. Các bề mặt trơn nhẵn hơn sẽ lưu lại cho những phản xạ gương được tập trung, có thể trông trông sáng rộng hoặc mạnh mẽ hơn tuy vậy tổng lượng tia nắng được phản bội xạ.

*

Hình 31 – bản đồ gồ ghề(Roughness) mô tả các bất thường bề mặt gây ra sự khuếch tán ánh sáng

Trong bản đồ này, màu đen (0.0) miêu tả một bề mặt nhẵn và white color (1.0) trình bày một mặt phẳng nhám. Bản đồ gồ ghề(Roughness) là bản đồ sáng tạo nhất do nó cho phép nghệ sĩ tư tưởng trực quan đặc thù của bề mặt. Nó có thể chấp nhận được bạn sáng chế kể một mẩu truyện về triệu chứng của một bề mặt. Môi trường xung quanh của nó là gì? Nó đã làm được đối đãi cảnh giác hay bị vứt mặc? Nó đã được tiếp xúc với những yếu tố? Điều kiện của một bề mặt tiết lộ nhiều về môi trường xung quanh của nó và vì thế liên quan lại đến xây dựng tổng thể của các tài nguyên(assets) và quả đât mà chúng ta đang cố gắng tạo ra.

Độ gồ ghề(Roughness) là một khu vực tưởng tượng cao. Bạn, nghệ sĩ, đang sẵn có toàn quyền kiểm soát và điều hành sự sáng sủa tạo. Một nơi tốt để bước đầu với gồ ghề(Roughness) là phiên bản đồ pháp tuyến(Normal). Bản đồ phiên bản đồ pháp tuyến(Normal) thường vẫn chứa những chi tiết bề mặt chính nên cũng rất được thể hiện trong bản đồ gồ ghề(Roughness).

Hướng dẫn cách tạo

Hãy sáng chế và đề cập một mẩu truyện trực quan tiền về bề mặt.

Độ phân giải và tỷ lệ Texel

*Texel: Điểm hình ảnh trên phiên bản đồ hóa học liệu.

Một thành phầm phụ của câu hỏi sử dụng quá trình Metal/Roughness là nó có thể tạo ra một cạnh viền giả tạo nên màu trắng, như vào Hình 32. Sự việc này cũng xảy ra trong các bước Specular/Glossiness. Tuy nhiên, vào trường hợp đó, nó gần như không thấy được được do hiệu ứng bị đảo ngược: có một viền black thay do màu trắng, như trong Hình 33.

*

Hình 32 – Một sản phẩm phụ của việc sử dụng quá trình Metal/Roughness là nó rất có thể tạo ra một cạnh viền giả tạo màu trắng

*

Hình 33 – Một sản phẩm phụ của câu hỏi sử dụng tiến trình Specular/Glossiness là nó hoàn toàn có thể tạo ra một cạnh viền giả tạo nên màu đen

Đường viền này là do nội suy kết cấu, và ví dụ trong các vùng chuyến qua giữa những vật liệu bao gồm độ tương phản nhan sắc nét giữa vật liệu điện môi(dielectric) và một sắt kẽm kim loại rất sáng. Điều này được biểu lộ trong hình 34. Với tiến trình Metal/Roughness, color cơ sở(base color) cất giá trị sáng hơn mang lại phản xạ kim loại được nội suy với màu sắc khuếch tán phi kim loại, tạo ra cạnh màu sắc trắng. Với tiến trình Specular/Glossiness, phiên bản đồ khuếch tán(Diffuse) cất màu đen vì sắt kẽm kim loại thô không có màu khuếch tán. Quý hiếm màu black được nội suy với màu khuếch tán phi kim loại, vì đó tạo ra một viền đen.

*

Hình 34 – Đương viền cụ thể trong các khu vực chuyển tiếp giữa những vật liệu

Độ phân giải của tư liệu và mật độ texel có ảnh hưởng trực tiếp đến khả năng hiển thị của các cạnh viền trả tạo. Ví dụ, nếu như khách hàng sử dụng rửa viền cứng để tạo ra vùng nối tiếp giữa sắt kẽm kim loại và phi kim loại, độ sắc nét của tài liệu tốt sẽ vẫn làm mềm cạnh và cho nên vì vậy làm nặng thêm phần giả tạo. Vấn đề độ phân giải thấp này cũng tạo ra bởi những UV ko được tỷ lệ(scaled) để hỗ trợ mật độ texel phù hợp dựa trên độ sắc nét của tài liệu. Việc cung cấp mật độ texel giỏi cho các UV là phương thức tốt nhất để bớt thiểu ngẫu nhiên hiện cạnh viền giả tạo nên nào, như trong Hình 35.

*

Hình 35 – cung ứng một mật độ texel giỏi cho UV là phương thức tốt duy nhất để bớt thiểu bất kỳ hiện cạnh viền giả chế tạo ra nào

Trong Hình 35, cả hai bộ làm từ chất liệu sử dụng cùng độ sắc nét 2048 pixel. Tuy nhiên, hình hình ảnh bên phải cho thấy thêm bố cục UV hèn với mật độ thấp của texel.

Độ phân giải tài liệu và tỷ lệ texel có tác động trực tiếp nối khả năng hiển thị của những cạnh viền giả tạo.

Hướng dẫn cách tạo

Mật độ và độ phân giải của Texel tác động ảnh hưởng lên cạnh màu sắc trắng có thể xuất hiện nay trong các bước Metal/Roughness. Để giảm thiểu đưa tạo, hãy bảo đảm an toàn rằng những UV của chúng ta cung cấp cho mật độ rất đầy đủ để tương xứng với độ sắc nét của tài liệu.

Ưu điểm với nhược điểm của tiến trình Metal/Roughness

Ưu điểm

Có thể d