HLSL语义
顶点着色器(Vertex Shader)语义
输入 | 描述 | 类型 |
---|---|---|
BINORMAL[n] | 次法线 | float4 |
BLENDINDICES[n] | 混合指数 | uint |
BLENDWEIGHT[n] | 混合权重 | float |
COLOR[n] | 固有色与高光色 | float4 |
NORMAL[n] | 法向量 | float4 |
POSITION[n] | 模型空间中顶点坐标 | float4 |
POSITIONT | 顶点坐标转置 | float4 |
PSIZE[n] | 点大小 | float |
TANGENT[n] | 切线 | float4 |
TEXCOORD[n] | 纹理坐标 | float4 |
输入 | 描述 | 类型 |
---|---|---|
COLOR[n] | 固有色与高光色 | float4 |
FOG | 顶点雾化值 | float |
POSITION[n] | 齐次空间顶点坐标,将(x,y,z)除以w即可得到屏幕坐标空间,每个顶点Shader必须有该语义输出。 | float4 |
PSIZE | 点大小 | float |
TESSFACTOR[n] | 曲面细分因子 | float |
TEXCOORD[n] | 纹理坐标 | float4 |
像素着色器(Pixel Shader)语义
输入 | 描述 | 类型 |
---|---|---|
COLOR[n] | 固有色与高光色 | float4 |
TEXCOORD[n] | 纹理坐标 | float4 |
VFACE | 用于标记一个背面图元的浮点标量值,负值表示面向背面,正值表示面向相机,该语义仅在Direct3D 9的Shader Model 3.0中可用,Direct3D 10以后使用SV_IsFrontFace替代 | float |
VPOS | 屏幕空间像素位置(x,y). 该语义用于Direct3D 9,之后版本请使用SV_Position | float2 |
输入 | 描述 | 类型 |
---|---|---|
COLOR[n] | 输出颜色 | float4 |
DEPTH[n] | 输出深度 | float |
语义变化
Direct3D 10语义 | Direct3D 9等价语义 | |
---|---|---|
SV_Depth | DEPTH | |
SV_Position | POSITION | |
SV_Target | COLOR |
com.unity.render-pipelines.universal
Core.hlsl
名称 | 说明 |
---|---|
GetVertexPositionInputs(float3 positionOS) | 获取输入顶点坐标信息 |
GetVertexNormalInputs(float3 normalOS) | 获取输入顶点法线信息 |
GetVertexNormalInputs(float3 normalOS, float4 tangentOS) | 获取输入顶点法线信息(重载) |
GetScaledScreenParams() | 获取屏幕缩放参数信息 |
NormalizeNormalPerVertex(real3 normalWS) | 逐顶点法线正交 |
NormalizeNormalPerPixel(real3 normalWS) | 逐像素法线正交 |
ComputeScreenPos(float4 positionCS) | 计算屏幕坐标信息 |
(real)ComputeFogFactor(float z) | 计算雾参数 |
(real)ComputeFogIntensity(real fogFactor) | 计算雾强度 |
(half3)MixFogColor(real3 fragColor, real3 fogColor, real fogFactor) | 混合雾颜色 |
(half3)MixFog(real3 fragColor, real fogFactor) | 混合雾 |
Lighting.hlsl
名称 | 说明 | |
---|---|---|
DistanceAttenuation(float distanceSqr, half2 distanceAttenuation) | 距离衰减 | |
AngleAttenuation(half3 spotDirection, half3 lightDirection, half2 spotAttenuation) | 角度衰减 | |
GetMainLight()/GetMainLight(float4 shadowCoord) | 获取主光源 | |
GetPerObjectLightIndex(int index) | 获取每个对象灯光Index | |
GetAdditionalLightsCount() | 获取额外灯光数量 | |
ReflectivitySpecular(half3 specular) | 高光反射率 | |
OneMinusReflectivityMetallic(half metallic) | OneMinus金属反射率 | |
InitializeBRDFData(half3 albedo, half metallic, half3 specular, half smoothness, half alpha, out BRDFData outBRDFData) | 初始化BRDF | |
EnvironmentBRDF(BRDFData brdfData, half3 indirectDiffuse, half3 indirectSpecular, half fresnelTerm) | 环境BRDF | |
DirectBDRF(BRDFData brdfData, half3 normalWS, half3 lightDirectionWS, half3 viewDirectionWS) | BRDF | |
SampleLightmap(float2 lightmapUV, half3 normalWS) | 光照贴图 | |
GlossyEnvironmentReflection(half3 reflectVector, half perceptualRoughness, half occlusion) | 环境光泽反射 | |
GlobalIllumination(BRDFData brdfData, half3 bakedGI, half occlusion, half3 normalWS, half3 viewDirectionWS) | 全局光照 | |
MixRealtimeAndBakedGI(inout Light light, half3 normalWS, inout half3 bakedGI, half4 shadowMask) | 实时烘培混合 | |
LightingLambert(half3 lightColor, half3 lightDir, half3 normal) | 兰伯特模型 | |
LightingSpecular(half3 lightColor, half3 lightDir, half3 normal, half3 viewDir, half4 specular, half smoothness) | 高光 | |
LightingPhysicallyBased(BRDFData brdfData, half3 lightColor, half3 lightDirectionWS, half lightAttenuation, half3 normalWS, half3 viewDirectionWS)/LightingPhysicallyBased | (BRDFData brdfData, Light light, half3 normalWS, half3 viewDirectionWS) | 基于物理的光照模型 |
VertexLighting(float3 positionWS, half3 normalWS) | 顶点光照颜色 | |
LightweightFragmentPBR(InputData inputData, half3 albedo, half metallic, half3 specular,half smoothness, half occlusion, half3 emission, half alpha) | 轻量级片元PBR | |
LightweightFragmentBlinnPhong(InputData inputData, half3 diffuse, half4 specularGloss, half smoothness, half3 emission, half alpha) | 轻量级片元布林·冯 |
Shadows.hlsl
名称 | 说明 |
---|---|
GetMainLightShadowStrength() | 获取主光源阴影强度 |
GetAdditionalLightShadowStrenth(int lightIndex) | 获取额外光源阴影强度 |
SampleScreenSpaceShadowmap(float4 shadowCoord) | 屏幕空间阴影贴图 |
SampleShadowmap(float4 shadowCoord, TEXTURE2D_SHADOW_PARAM(ShadowMap, sampler_ShadowMap), ShadowSamplingData samplingData, half shadowStrength, bool isPerspectiveProjection = true) | 阴影贴图 |
TransformWorldToShadowCoord(float3 positionWS) | 把顶点的世界坐标转换到阴影坐标 |
MainLightRealtimeShadow(float4 shadowCoord) | 主光源实时阴影 |
AdditionalLightRealtimeShadow(int lightIndex, float3 positionWS) | 额外光源实时阴影 |
GetShadowCoord(VertexPositionInputs vertexInput) | 获取阴影坐标信息 |
ApplyShadowBias(float3 positionWS, float3 normalWS, float3 lightDirection) | 应用阴影偏移 |
com.unity.render-pipelines.core
SpaceTransforms.hlsl 变换矩阵:
名称 | 说明 |
---|---|
TransformObjectToWorld(float3 positionOS) | 当前模型空间转世界空间矩阵,通常用于把顶点/方向矢量从模型空间转到世界空间 |
TransformWorldToObject(float3 positionWS) | 当前世界空间转模型空间矩阵,通常用于把顶点/方向矢量从世界空间转到模型空间 |
TransformWorldToView(float3 positionWS) | 当前世界空间转相机空间矩阵,通常用于把顶点/方向矢量从世界空间转到相机空间 |
TransformObjectToHClip(float3 positionOS) | 当前模型空间转裁剪空间矩阵,通常用于把顶点/方向矢量从模型空间转到裁剪空间 |
TransformWorldToHClip(float3 positionWS) | 当前世界空间转裁剪空间矩阵,通常用于把顶点/方向矢量从世界空间转到裁剪空间 |
TransformWViewToHClip(float3 positionVS) | 当前相机空间转裁剪空间矩阵,通常用于把顶点/方向矢量从相机空间转到裁剪空间 |
TransformObjectToWorldDir(real3 dirOS) | 把方向矢量从模型空间转换到世界空间中 |
TransformWorldToObjectDir(real3 dirWS) | 把方向矢量从世界空间转换到模型空间中 |
TransformWorldToViewDir(real3 dirWS) | 把方向矢量从世界空间转换到相机空间中 |
TransformWorldToHClipDir(real3 directionWS) | 把方向矢量从世界空间转换到裁剪空间中 |
TransformObjectToWorldNormal(float3 normalOS) | 把法线从模型空间转换到世界空间中 |
CreateTangentToWorld(real3 normal, real3 tangent, real flipSign) | 创建一个切线空间转为世界空间的3x3矩阵 |
TransformTangentToWorld(real3 dirTS, real3x3 tangentToWorld) | 当前切线空间转世界空间矩阵,通常用于把顶点/方向矢量从切线空间转到世界空间 |
TransformWorldToTangent(real3 dirWS, real3x3 tangentToWorld) | 当前世界空间转切线空间矩阵,通常用于把顶点/方向矢量从世界空间转到切线空间 |
TransformTangentToObject(real3 dirTS, real3x3 tangentToWorld) | 当前切线空间转模型空间矩阵,通常用于把顶点/方向矢量从切线空间转到模型空间 |