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ừ0và 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_matViewvà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ịztố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