44 lines
968 B
HLSL
44 lines
968 B
HLSL
#include "bindless_structs.hlsli"
|
|
|
|
struct FS_Input
|
|
{
|
|
float4 inPosition : POSITION;
|
|
float4 inColor : COLOR0;
|
|
float2 inUV : TEXCOORD0;
|
|
};
|
|
|
|
struct FS_Output
|
|
{
|
|
float4 outColor : SV_Target0;
|
|
};
|
|
|
|
float4 ArrayToVector(float arr[4])
|
|
{
|
|
return float4(arr[0], arr[1], arr[2], arr[3]);
|
|
}
|
|
|
|
float4 ArrayToVector(float4 arr)
|
|
{
|
|
return arr;
|
|
}
|
|
|
|
float4 GetAlbedo(uint materialBufferId, int materialId, float2 uv)
|
|
{
|
|
uint albedoTexId = materialsBuffer[materialBufferId][materialId].m_AlbedoTex;
|
|
if (albedoTexId == INVALID_HANDLE)
|
|
{
|
|
return (float4) materialsBuffer[materialBufferId][materialId].m_AlbedoFactor;
|
|
}
|
|
else
|
|
{
|
|
return textures[albedoTexId].Sample(immutableSamplers[albedoTexId], uv);
|
|
}
|
|
}
|
|
|
|
FS_Output main(FS_Input stage_input)
|
|
{
|
|
FS_Output output;
|
|
output.outColor = pcb.m_MaterialIdx < 0 ? stage_input.inColor : GetAlbedo(pcb.materialBufferHandle, pcb.m_MaterialIdx, stage_input.inUV);
|
|
return output;
|
|
}
|