|
|
发表于 2015-1-17 00:39:50
|
显示全部楼层
隨機數的話曾經看到一個可用在圖像渲染中的隨機數生成方法,代碼是這樣的:
float random( vec2 p )
{
// We need irrationals for pseudo randomness.
// Most (all?) known transcendental numbers will (generally) work.
const vec2 r = vec2(
23.1406926327792690, // e^pi (Gelfond's constant)
2.6651441426902251); // 2^sqrt(2) (Gelfond–Schneider constant)
return fract( cos( mod( 123456789., 1e-7 + 256. * dot(p,r) ) ) );
} // (p的取值是(0,0)至(1,1))
簡單來說就是把一個大數除以超越數的乘積,然後取餘數,然後餘下的餘數就應該很隨機了
不過,這個方法是渲染那邊的人不想用隨機材質生成在屏幕各點隨機的數值想出來的,不知道在傳統代碼裡的可行性(
|
|