UUSL数据结构
Data Fields资料栏位#
Data has the following fields (values in world space has _w postfix): Data具有以下字段(世界空间中的值具有_w后缀):
struct Data {
float depth;
float3 position;
float3 view;
float3 normal;
float3 reflection;
// world space values
float3 view_w;
float3 normal_w;
float3 reflection_w;
float3 sky_reflect;
float2 screen_coord;
float dotNV;
float dielectric;
float gloss;
};
Data FunctionsData功能#
Data dataDefault ( ) #
Default constructor for Data structure. It creates an instance with default (not null) values. Data结构的默认构造函数。它使用默认值(非null)创建一个实例。返回值
Data structure with default (not null) values. Data结构,具有默认值(非null)。void dataSetPosition ( inout Data Data, float3 pos ) #
Calculates position, depth and view values for given Data struct.为给定的Data结构计算位置,深度和视图值。参数
- inout Data Data - Data structure to fill.要填充的Data结构。
- float3 pos - Position vector.位置向量。
void dataCalculateWorldSpace ( Data Data ) #
Calculates world view, normal, reflection in world space by using corresponding values of given Data struct.通过使用给定的Data结构的相应值来计算世界空间中的世界观,法线和反射。参数
- Data Data - Data structure to fill.要填充的Data结构。
void dataSetGbuffer ( inout Data Data, GBuffer gbuffer ) #
Sets Data's structure normal, dielectric and gloss values by using corresponding values of given GBuffer instance.通过使用给定GBuffer实例的相应值来设置数据的结构正常,介电和光泽度值。参数
- inout Data Data - Data structure. Data结构。
- GBuffer gbuffer - GBuffer instance with necessary values to be set. GBuffer实例,需要设置必要的值。
void dataCalculateAll ( inout Data data, GBuffer gbuffer, float3 pos, float2 screen_coord ) #
Calculates all values for Data struct.计算数据结构的所有值。参数
- inout Data data - Data structure to be filled with calculated values. Data结构要填充计算所得的值。
- GBuffer gbuffer - GBuffer struct. GBuffer结构。
- float3 pos - Position vector.位置向量。
- float2 screen_coord - Screen coordinates.屏幕坐标。
Usage Example使用范例#
To use Data structure in your shader's code, you should define and initialize the Data structure and fill it.要在着色器代码中使用Data结构,应定义并初始化Data结构并填充它。
The following example shows the way of creating Data structure and calculating its values.以下示例显示了创建数据结构和计算其值的方法。
/* ... */
// input structure for fragment shader
STRUCT(FRAGMENT_IN)
INIT_POSITION
INIT_IN(float4,0)
INIT_IN(float3,1)
INIT_IN(float3x3,2)
#ifdef USE_ALPHA_FADE && ALPHA_FADE
INIT_IN(float,9)
#endif
END
/* ... */
// in the main function of fragment shader
// GBuffer
GBuffer gbuffer;
/* fill the GBuffer struct */
Data data;
dataCalculateAll(data,gbuffer,IN_DATA(1),IN_POSITION.xy);
/* ... */
最新更新:
2020-11-24
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)