이 쉐이더 를 실제로 오래된 iDevice와 결국 Android에서 실행 하려고합니다 .
조각 당 코드를 2 개의 사인 함수로 줄이더라도 셰이더는 약 20fps로 실행됩니다.
나는 오래된 쉐이딩 기술에 대한 책에서 잎을 가져 와서 미리 정의 된 많은 삼각 값을 보유하고 어쨌든 쉐이더를 근사화하는 데 사용하는 배열을 만드는 것을 고려했습니다.
위에 링크 된 셰이더에서 나는 삼각 함수에 전송 된 값을 반올림하여 마우스 왼쪽으로 더 내려간 상태에서 셰이더의 품질이 떨어지는 것을 이미 시뮬레이션하고 있습니다. 실제로 왼쪽에 가깝기 때문에 실제로는 매우 시원합니다. 완전히 다른 멋진 셰이더처럼 보입니다.
어쨌든 나는 두 가지 딜레마가 있습니다.
- GLSL 셰이더에서 상수 또는 균일 한 360 값의 배열을 갖는 가장 효율적인 방법은 무엇입니까?
0에서 360 사이의 각도를 원한다면 보통 같은 범위에 숫자를 넣는 방법을 알 수 없습니다 (예 GPU는 라디안을 사용한다는 것을 알고 있습니다).
func range(float angle) { float temp = angle while (temp > 360) {temp -= 360;} while (temp < 0) {temp += 360;} return temp; }
그러나 GLSL은 while 루프 나 재귀 함수를 허용하지 않습니다.
mod
기능 이 원하는 것입니다. 당신은 쓸 것 mod(angle, 360.0)
입니다.