builtin/uniforms/cc-global.chunk
Mục lục
- Nội dung file
- 1. CCGlobal Uniform Block
- 2. CCCamera Uniform Block
- cc_matView (mat4)
- cc_matViewInv (mat4)
- cc_matProj (mat4)
- cc_matProjInv (mat4)
- cc_matViewProj (mat4)
- cc_matViewProjInv (mat4)
- cc_cameraPos (vec4)
- cc_surfaceTransform (vec4)
- cc_screenScale (vec4)
- cc_exposure (vec4)
- cc_mainLitDir (vec4)
- cc_mainLitColor (vec4)
- cc_ambientSky (vec4)
- cc_ambientGround (vec4)
- cc_fogColor (vec4)
- cc_fogBase (vec4)
- cc_fogAdd (vec4)
- cc_nearFar (vec4)
- cc_viewPort (vec4)
Nội dung file
// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
// have to specify precisions explicitly
// if shared among stages with different precisions
#pragma builtin(global)
layout(set = 0, binding = 0) uniform CCGlobal {
highp vec4 cc_time; // x: global time since started in seconds, y: delta time for current frame, z: total frames since started, w: fractinal part of x, better precious, should be used with uv animation
mediump vec4 cc_screenSize; // xy: screen size, zw: inverse screen size
mediump vec4 cc_nativeSize; // xy: shading size, zw: inverse shading size
mediump vec4 cc_probeInfo; // x: reflection probe count
mediump vec4 cc_debug_view_mode; // x: single mode, yzw: composite and misc flags combination value
};
#pragma builtin(global)
layout(set = 0, binding = 1) uniform CCCamera {
highp mat4 cc_matView; // view matrix
highp mat4 cc_matViewInv; // inverse view matrix
highp mat4 cc_matProj; // projection matrix
highp mat4 cc_matProjInv; // inverse projection matrix
highp mat4 cc_matViewProj; // view-projection matrix
highp mat4 cc_matViewProjInv; // inverse view-projection matrix
highp vec4 cc_cameraPos; // xyz: camera position w: flip NDC sign
mediump vec4 cc_surfaceTransform; // x: surface transform y: camera usage zw: skybox rotation angle cos/sin value
mediump vec4 cc_screenScale; // xy: screen scale, zw: inverse screen scale
mediump vec4 cc_exposure; // x: exposure, y: inverse exposure, z: HDR flag, w: inverse standard exposure value
mediump vec4 cc_mainLitDir; // xyz: main direcitonal light direction, w: enable shadow
mediump vec4 cc_mainLitColor; // xyz: main direcitonal light color, w: intensity
mediump vec4 cc_ambientSky; //xyz: sky illumination color, w: intensity
mediump vec4 cc_ambientGround; // xyz: ground albedo color, w: envmap LOD
mediump vec4 cc_fogColor; // xyz: global fog color
mediump vec4 cc_fogBase; // xyz: fogStart, fogEnd, fogDensity
mediump vec4 cc_fogAdd; // xyz: fogTop, fogRange, fogAtten
mediump vec4 cc_nearFar; // xy: frustum near, frustum far z: clipspace minz (vulkan: 0 metal: 0 other: -1)
mediump vec4 cc_viewPort; // xyzw: camera view port, default(0, 0, 1, 1)
};
Ý nghĩa từng biến trong đoạn code trên và vùng giá trị mà chúng có thể nhận.
1. CCGlobal Uniform Block
cc_time
(vec4)
- Ý nghĩa: Biến thời gian, thường dùng để làm các hiệu ứng dựa trên thời gian.
- Vùng giá trị:
x
: Thời gian toàn cục tính từ khi ứng dụng bắt đầu, tính bằng giây. Giá trị tăng dần từ0
đến vô cực (tùy thuộc vào thời gian chạy của ứng dụng).y
: Delta time cho frame hiện tại, thường nằm trong khoảng [0, 1/30] giây hoặc [0, 1/60] giây tùy vào tốc độ khung hình (FPS).z
: Tổng số khung hình đã được render. Giá trị này bắt đầu từ0
và tăng dần theo thời gian.w
: Phần thập phân củax
, giá trị nằm trong khoảng [0, 1].
cc_screenSize
(vec4)
- Ý nghĩa: Kích thước và tỷ lệ màn hình.
- Vùng giá trị:
x
: Chiều rộng màn hình, thường là một số nguyên dương, ví dụ: 1920 cho độ phân giải Full HD.y
: Chiều cao màn hình, ví dụ: 1080 cho độ phân giải Full HD.z
: Nghịch đảo của chiều rộng màn hình, ví dụ: 1 / 1920 (~0.00052).w
: Nghịch đảo của chiều cao màn hình, ví dụ: 1 / 1080 (~0.00093).
cc_nativeSize
(vec4)
- Ý nghĩa: Kích thước và tỷ lệ shading (kích thước dùng để đổ bóng).
- Vùng giá trị:
x
: Chiều rộng khung đổ bóng (có thể khác với kích thước màn hình nếu có sử dụng render target).y
: Chiều cao khung đổ bóng.z
: Nghịch đảo của chiều rộng shading.w
: Nghịch đảo của chiều cao shading.
cc_probeInfo
(vec4)
- Ý nghĩa: Số lượng probe phản chiếu trong cảnh (sử dụng để phản xạ ánh sáng hoặc ảnh hưởng của môi trường).
- Vùng giá trị:
x
: Số lượng reflection probe. Giá trị này thường là một số nguyên không âm.
cc_debug_view_mode
(vec4)
- Ý nghĩa: Các cờ debug giúp hiển thị các chế độ xem đặc biệt.
- Vùng giá trị:
x
: Các giá trị cờ để điều chỉnh chế độ xem đơn.yzw
: Giá trị kết hợp cờ cho các chế độ kết hợp và các cờ khác.
2. CCCamera Uniform Block
cc_matView
(mat4)
- Ý nghĩa: Ma trận View (ma trận nhìn), dùng để biến đổi từ không gian thế giới sang không gian camera.
- Vùng giá trị: Là một ma trận 4x4, có thể chứa các giá trị bất kỳ tùy thuộc vào vị trí và hướng của camera.
cc_matViewInv
(mat4)
- Ý nghĩa: Ma trận nghịch đảo của
cc_matView
, dùng để biến đổi ngược từ không gian camera về không gian thế giới. - Vùng giá trị: Là ma trận 4x4, nghịch đảo của
cc_matView
.
cc_matProj
(mat4)
- Ý nghĩa: Ma trận chiếu (Projection matrix), dùng để biến đổi không gian 3D sang không gian 2D (clip space).
- Vùng giá trị: Ma trận 4x4, tùy thuộc vào kiểu chiếu (perspective hay orthographic).
cc_matProjInv
(mat4)
- Ý nghĩa: Ma trận nghịch đảo của ma trận chiếu.
- Vùng giá trị: Ma trận 4x4, nghịch đảo của
cc_matProj
.
cc_matViewProj
(mat4)
- Ý nghĩa: Ma trận kết hợp giữa View và Projection.
- Vùng giá trị: Ma trận 4x4, kết hợp giữa
cc_matView
vàcc_matProj
.
cc_matViewProjInv
(mat4)
- Ý nghĩa: Ma trận nghịch đảo của View-Projection.
- Vùng giá trị: Ma trận 4x4, nghịch đảo của
cc_matViewProj
.
cc_cameraPos
(vec4)
- Ý nghĩa: Vị trí của camera trong không gian thế giới.
- Vùng giá trị:
xyz
: Tọa độ không gian của camera, có thể là bất kỳ giá trị nào tùy thuộc vào vị trí của camera.w
: Cờ để thay đổi dấu không gian NDC, thường là +1 hoặc -1 (tùy thuộc vào API đồ họa như Vulkan hay Metal).
cc_surfaceTransform
(vec4)
- Ý nghĩa: Biến đổi bề mặt và góc quay của skybox.
- Vùng giá trị:
x
: Giá trị chuyển đổi bề mặt (như xoay, lật).y
: Sử dụng camera (ví dụ: chính hoặc phụ).z
,w
: Giá trị cosine và sine để xoay skybox, thường nằm trong khoảng [-1, 1].
cc_screenScale
(vec4)
- Ý nghĩa: Tỷ lệ màn hình và nghịch đảo tỷ lệ màn hình.
- Vùng giá trị:
xy
: Tỷ lệ màn hình (có thể là giá trị từ0
đến1
).zw
: Nghịch đảo của tỷ lệ màn hình.
cc_exposure
(vec4)
- Ý nghĩa: Mức độ phơi sáng và các giá trị liên quan đến HDR.
- Vùng giá trị:
x
: Mức phơi sáng, thường nằm trong khoảng [0, 10] hoặc cao hơn tùy thuộc vào HDR.y
: Nghịch đảo của phơi sáng.z
: Cờ HDR, thường là 0 (tắt) hoặc 1 (bật).w
: Nghịch đảo của phơi sáng chuẩn.
cc_mainLitDir
(vec4)
- Ý nghĩa: Hướng của nguồn sáng chính trong không gian.
- Vùng giá trị:
xyz
: Hướng của ánh sáng chính, thường là một vector đơn vị (giá trị trong khoảng [-1, 1]).w
: Cờ để kích hoạt bóng đổ, thường là 0 (tắt) hoặc 1 (bật).
cc_mainLitColor
(vec4)
- Ý nghĩa: Màu sắc và cường độ của ánh sáng chính.
- Vùng giá trị:
xyz
: Màu sắc của ánh sáng chính, giá trị màu nằm trong khoảng [0, 1].w
: Cường độ ánh sáng, có thể là bất kỳ giá trị nào (ví dụ: từ 0 đến 100 hoặc cao hơn).
cc_ambientSky
(vec4)
- Ý nghĩa: Màu sắc ánh sáng môi trường từ bầu trời.
- Vùng giá trị:
xyz
: Màu sắc ánh sáng bầu trời, nằm trong khoảng [0, 1].w
: Cường độ chiếu sáng từ bầu trời.
cc_ambientGround
(vec4)
- Ý nghĩa: Màu sắc ánh sáng từ mặt đất.
- Vùng giá trị:
xyz
: Màu sắc phản xạ từ mặt đất.w
: LOD (Level of Detail) cho bản đồ môi trường (environment map).
cc_fogColor
(vec4)
- Ý nghĩa: Màu sắc của sương mù.
- Vùng giá trị:
xyz
: Màu sương mù, giá trị nằm trong khoảng [0, 1].
cc_fogBase
(vec4)
- Ý nghĩa: Các giá trị liên quan đến bắt đầu, kết thúc và mật độ sương mù.
- Vùng giá trị:
x
: Fog start: khoảng cách từ camera mà sương mù bắt đầu xuất hiện.y
: Fog end: khoảng cách mà sương mù đạt cường độ tối đa.z
: Fog density: mật độ sương mù, giá trị nằm trong khoảng [0, 1].
cc_fogAdd
(vec4)
-
Ý nghĩa: Các thông số bổ sung cho sương
mù.
- Vùng giá trị:
x
: Fog top: thông số bổ sung cho độ cao của sương mù.y
: Fog range: phạm vi tác động của sương mù.z
: Fog attenuation: độ suy giảm của sương mù.
cc_nearFar
(vec4)
- Ý nghĩa: Khoảng cách gần và xa của frustum camera.
- Vùng giá trị:
x
: Frustum near: khoảng cách gần nhất, thường là một số dương nhỏ (ví dụ 0.1).y
: Frustum far: khoảng cách xa nhất, thường là một số lớn (ví dụ 1000).z
: Clipspace min z: giá trịz
tối thiểu, phụ thuộc vào API đồ họa:- Vulkan/Metal: 0.
- OpenGL/DirectX: -1.
cc_viewPort
(vec4)
- Ý nghĩa: Kích thước của viewport (cửa sổ hiển thị của camera).
- Vùng giá trị:
xyzw
: Các giá trị nằm trong khoảng [0, 1], chỉ định tỷ lệ viewport so với kích thước màn hình.
Bình luận gần đây