#if SHADERPASS != SHADERPASS_FORWARD_UNLIT #error SHADERPASS_is_not_correctly_define #endif #include "VertMesh.hlsl" PackedVaryingsType Vert(AttributesMesh inputMesh) { VaryingsType varyingsType; varyingsType.vmesh = VertMesh(inputMesh); return PackVaryingsType(varyingsType); } #ifdef TESSELLATION_ON PackedVaryingsToPS VertTesselation(VaryingsToDS input) { VaryingsToPS output; output.vmesh = VertMeshTesselation(input.vmesh); return PackVaryingsToPS(output); } #include "TessellationShare.hlsl" #endif // TESSELLATION_ON float4 Frag(PackedVaryingsToPS packedInput) : SV_Target { FragInputs input = UnpackVaryingsMeshToFragInputs(packedInput.vmesh); // input.unPositionSS is SV_Position PositionInputs posInput = GetPositionInput(input.unPositionSS.xy, _ScreenSize.zw); UpdatePositionInput(input.unPositionSS.z, input.unPositionSS.w, input.positionWS, posInput); float3 V = GetWorldSpaceNormalizeViewDir(input.positionWS); SurfaceData surfaceData; BuiltinData builtinData; GetSurfaceAndBuiltinData(input, V, posInput, surfaceData, builtinData); // Not lit here (but emissive is allowed) BSDFData bsdfData = ConvertSurfaceDataToBSDFData(surfaceData); // TODO: we must not access bsdfData here, it break the genericity of the code! return float4(bsdfData.color + builtinData.emissiveColor, builtinData.opacity); }