← Back to Portal Hub

로블록스 커스텀 라이팅: 퓨처 라이팅 그림자, 볼륨 클라우드, 포스트FX 및 모바일 최적화

By DopaBrain 테크니컬 아트 그룹 • 2026-09-30 • Technical Guide

조명과 환경 대기(Atmosphere)는 로블록스 경험에서 플레이어의 시각적 몰입도, 시각적 계층 구조, 감정적 분위기를 좌우하는 핵심 요소입니다. 최신 Future 라이팅 기술의 보편화로 개발자는 물리적으로 정확한 포인트/서피스 라이트 그림자, 고역광 HDR 블룸, 볼류메트릭 클라우드를 구현할 수 있게 되었습니다. 그러나 제약 없이 배치된 동적 라이트와 섀도우 맵은 중저사양 모바일 기기에서 프레임 드랍과 발열을 초래합니다.

본 테크니컬 아트 및 렌더링 최적화 가이드에서는 로블록스 라이팅 파이프라인의 내부 구조를 분석합니다. 동적 시간대(Time-of-Day) 전환, 데스크톱 Future 라이팅과 모바일 ShadowMap/Voxel 간 적응형 퀄리티 스케일링, 세밀한 ColorCorrection 및 피사계 심도(DepthOfField) 조절 Luau 시스템을 제공합니다.

1. 로블록스 라이팅 파이프라인: Compatibility vs Voxel vs ShadowMap vs Future

로블록스 스튜디오는 Lighting 서비스 하에 4가지 렌더링 기술을 제공합니다. 각 기술의 광원 계산 및 섀도우 프러스텀 처리 방식을 이해하는 것이 크로스 플랫폼 최적화의 첫걸음입니다:

2. 적응형 라이팅 퀄리티 스케일러 구현 코드

아래는 플레이어의 하드웨어 프레임레이트를 실시간 모니터링하여 원거리 로컬 광원의 그림자를 자동 컬링하고 포스트 프로세싱을 조절하는 클라이언트 Luau 모듈입니다:

AdaptiveLightingManager.luau (클라이언트 환경 컨트롤러)
--!strict
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local AdaptiveLighting = {}
AdaptiveLighting.__index = AdaptiveLighting

local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local camera = workspace.CurrentCamera

local function ConfigureBaselineSettings()
    Lighting.Technology = Enum.Technology.Future
    Lighting.GlobalShadows = true
    Lighting.GeographicLatitude = 41.5
    
    local atmosphere = Lighting:FindFirstChildOfClass("Atmosphere")
    if not atmosphere then
        atmosphere = Instance.new("Atmosphere")
        atmosphere.Density = 0.35
        atmosphere.Offset = 0.25
        atmosphere.Haze = 1.2
        atmosphere.Color = Color3.fromRGB(199, 199, 215)
        atmosphere.Decay = Color3.fromRGB(106, 112, 125)
        atmosphere.Parent = Lighting
    end
end

local trackedLights: { Light } = {}

function AdaptiveLighting.RegisterLight(light: Light)
    table.insert(trackedLights, light)
end

local frameSamples = {}
local sampleIndex = 1
local maxSamples = 60

local function GetAverageFPS(): number
    local sum = 0
    for _, dt in ipairs(frameSamples) do sum += dt end
    if #frameSamples == 0 then return 60 end
    return #frameSamples / sum
end

local updateTimer = 0
RunService.RenderStepped:Connect(function(dt: number)
    frameSamples[sampleIndex] = dt
    sampleIndex = (sampleIndex % maxSamples) + 1

    updateTimer += dt
    if updateTimer < 0.5 then return end
    updateTimer = 0

    local avgFps = GetAverageFPS()
    local camPos = camera.CFrame.Position
    local shadowDistanceThreshold = (avgFps < 45 or isMobile) and 40 or 100

    for _, light in ipairs(trackedLights) do
        local parentPart = light.Parent
        if parentPart and parentPart:IsA("BasePart") then
            local dist = (parentPart.Position - camPos).Magnitude
            if dist > shadowDistanceThreshold then
                light.Shadows = false
            else
                light.Shadows = true
            end
        end
    end
end)

ConfigureBaselineSettings()
return AdaptiveLighting

3. 애트모스피어, 볼류메트릭 클라우드 및 대기 산란

대기 효과는 단조로운 블록 환경을 한 편의 영화 같은 예술적 공간으로 바꿉니다. 로블록스의 Atmosphere와 Clouds 인스턴스는 레일리 산란과 고도별 구름을 모사합니다:

4. ColorCorrection 및 포스트FX 인체공학

포스트 프로세싱은 화면에 픽셀이 출력되기 직전의 최종 보정 파이프라인입니다. 과도한 포스트FX는 시각 피로를 부르고 전투 판정 시각성을 떨어뜨립니다:

5. 상용 배포 검증 및 최적화 체크리스트

데스크톱, 콘솔, 모바일 전반에서 고품질 라이팅을 안정적으로 유지하기 위한 필수 검증 단계입니다:

Frequently Asked Questions

ShadowMap과 Future 라이팅 기술의 가장 큰 차이점은 무엇인가요?

ShadowMap은 오직 태양/달의 지향성 빛에 대해서만 그림자를 만듭니다. 반면 Future 기술은 맵 곳곳에 배치된 전등, 횃불 등 모든 로컬 포인트/스팟 라이트에서 실시간 픽셀 그림자를 렌더링합니다.

모바일 기기에서 로컬 조명의 그림자가 보이지 않는 이유는 무엇인가요?

로블록스 모바일 클라이언트는 낮은 그래픽 품질 설정(1~3단계)에서 GPU 성능을 보호하기 위해 Future 기술을 ShadowMap이나 Voxel 모드로 자동 다운그레이드하기 때문입니다.

원활한 60 FPS를 유지하려면 몇 개의 동적 그림자 조명을 사용할 수 있나요?

화면 내에 동시에 보이는 그림자 지원 조명은 8~12개 이하로 제한하는 것이 좋습니다. 보조 간접광이나 잔잔한 조명은 Shadows 속성을 끄는 것이 권장됩니다.

Atmosphere와 Clouds가 프레임레이트에 큰 영향을 미치나요?

Atmosphere는 매우 가벼운 뎁스 패스로 프레임 영향이 거의 없습니다. 볼류메트릭 구름(Clouds)은 GPU 필레이트를 약간 소모하므로 Cover와 Density 값을 적절히 조절하는 것이 좋습니다.

Explore More Interactive Tests & Guides

Discover personalized cognitive assessments, stress evaluations, and game psychology tools on DopaBrain.

Go to Portal Hub