Featured image of post S 프로젝트 자동사양결정.

S 프로젝트 자동사양결정.

현재 최소사양의 fillrate는 1800메가픽셀/초 입니다.
현재 권장사양의 fillrate는 9000메가픽셀/초 입니다 (9 Billion pixel/s)

그리고 레퍼런스 메뉴얼에 따르면 SystemInfo.graphicsPixelFillrate 는

static var graphicsPixelFillrate : int

Description

Approximate pixel fill-rate of the graphics device (Read Only).

Returns pixel fill-rate in megapixels/second, or -1 if fillrate of the device is not known.
그래픽 디바이스의 픽셀 필 레이트를 리턴합니다. (읽기 전용)
픽셀 필레이트는 메가픽셀/초  이며, 필레이트를 못읽을 때에는 -1 을 리턴합니다.

즉 최소사양은 자동설정공식의
fillneed = (float)((resx*resy + 400*300) * (30.0 / 1000000.0));

에서, res는 1024*768이라고 가정하면  (1024*768+400*300)*(30/1000000) = 27.19296
그리고 이것이 1800 이라는 fillrate 에 적합하기 위해서 필요한 상수는
27.19296 * [68] = 1849

이므로 최저사양의 levelmult 는 일단 68 이하에서부터 시작한다는 것을 알 수 있습니다.

권장사양은 1280*1024로 계산해 보도록 하겠습니다.
(1280*1024+400*300)*(30/1000000) = 42.9216
42.9216 * [200] = 8584.32

그러므로 권장사양이 시작되는 levelmult는 200부터 시작한다는 것을 알 수 있습니다

이 두 가지의 levelmult 값을 토대로 각 옵션별 값을 예상해서 배열로 만들어 보면

 new float [] {5.0f, 68.0f, 134.0f, 200.0f, 320.0f}; 가 될 수 있을겁니다.
5.068.0 최소
68.0
134.0 소
134.0200.0 중
200.0 ~ 320.0 상
320
            최상

물론 중간숫자는 예상수치이므로 나중에 변할 수도 있을겁니다.
편하게 밖으로 빼주셔도 감사.

그리고 if문도 좀 수정이 필요한데
이 기준대로라면

if (fillrate < 0)
{
//if (shaderLevel < 10)
// fillrate = 1000;    // 쉐이더 1.0 이하를 왜 신경쓰는데
else if (shaderLevel < 20)
//fillrate = 1300; —–> 실행불가로 해주세요. 우린 최소가 쉐이더 2.0 입니다.
else if (shaderLevel < 30)
fillrate = 2000;
else
fillrate = 3000;
if (cpus >= 6)
fillrate *= 3;
else if (cpus >= 3)
fillrate *= 2;
if (vram >= 512)
fillrate *= 2;
else if (vram <= 128)
fillrate /= 2;
}
… 나머지는 놔둬도 되겠네요 .

일단 이렇게 하고 보겠습니다. 기준이 미약한 관계로 추후 계속 수정하도록 하겠습니다.

Hugo로 만듦
JimmyStack 테마 사용 중