2012-01-25 34 views
5

Tôi đang cố gắng tạo các đám mây nhiễu Perlin siêu đơn giản trong trình đổ bóng phân đoạn, sử dụng chức năng Noise tìm thấy here.Làm mịn tiếng ồn pert quãng tám thấp

Ở quãng tám thấp, đầu ra của tôi là, vì muốn có từ tốt hơn, 'blobby'. Tôi chỉ đơn giản là muốn mịn ra những khu vực blobby và có tiếng ồn trơn tru nhưng có nó chi tiết hơn một chút so với chỉ một quãng tám.

Fragment Shader:

#ifdef GL_ES 
precision mediump float; 
#endif 

uniform float time; 
uniform vec2 resolution; 

// Noise related functions go here .. 

float surface3 (vec3 coord) { 
     float frequency = 4.0; 
     float n = 0.0; 

     n += 1.0 * abs(cnoise(coord * frequency)); 
     n += 0.5 * abs(cnoise(coord * frequency * 2.0)); 
     n += 0.25 * abs(cnoise(coord * frequency * 4.0)); 

     return n; 
} 

void main(void) { 
     vec2 position = gl_FragCoord.xy/resolution.xy; 

     float n = surface3(vec3(position, time * 0.1)); 

     gl_FragColor = vec4(n, n, n, 1.0); 
} 

Sống dụ:
http://glsl.heroku.com/e#1413.0

trái là những gì tôi có vào lúc này. Làm cách nào để tôi có thể đạt được nội dung nào đó phù hợp hơn với hình ảnh phù hợp?

Trả lời

4

Cách dễ nhất là lấy ra hai trong số các cuộc gọi tiếng ồn trong chức năng bề mặt. Chỉ để lại những dòng gọi tiếng ồn đầu tiên và bạn sẽ có được cái gì đó trông giống như cái đầu tiên:

http://glsl.heroku.com/e#1450.0

Các đường nét trong tiếng ồn đa quãng tám đến từ việc sử dụng abs(), loại bỏ các abs() và thay thế nó với bình phương giá trị tiếng ồn hoặc làm một cái gì đó như 0.5 * (1.0 + cnoise()) (nếu đầu ra cnoise là giữa -1..1).

Dưới đây là kết quả của một số không quan trọng http://glsl.heroku.com/e#1450.1

+0

Cảm ơn Ilmari. Tôi đã xem xét giải pháp của bạn và chỉ sử dụng một quãng tám tiếng ồn, nhưng kết quả vẫn dường như xuất hiện khá blobby. Tôi cũng không thích sự tương phản cao hơn giữa khu vực màu đen và trắng. Sự hiểu biết của tôi là bổ sung thêm quãng tám tiếng ồn thêm chi tiết nhưng cũng làm giảm độ tương phản trong kết quả (dựa trên http://libnoise.sourceforge.net/tutorials/tutorial4.html#octaves) mà chính xác là những gì tôi theo sau. Tôi có hợp lý không? –

+0

Ahh, được rồi, tôi hiểu ý bạn là gì. Đã chỉnh sửa câu trả lời. –

+0

Đáng yêu, điều đó đã thực hiện mẹo - cảm ơn! –

Các vấn đề liên quan