2016-06-30 14 views
5

Tôi là người mới hoàn thành khi nói đến OpenGL và GLSL. Điều đó nói rằng, khi sử dụng ShaderToy Tôi thường thấy những người sử dụng một cái gì đó như:Tại sao mọi người sử dụng sqrt (dấu chấm (distanceVector, distanceVector)) trên chức năng khoảng cách của OpenGL?

vec2 uv = fragCoord/iResolution; 
vec2 centerPoint = vec2(0.5); 

vec2 distanceVector = uv - centerPoint; 
float dist = sqrt(dot(distanceVector, distanceVector)); 

qua distance chức năng OpenGL của:

vec2 uv = fragCoord/iResolution; 
vec2 centerPoint = vec2(0.5); 

float dist = distance(uv, centerPoint); 

Tôi chỉ tò mò tại sao điều này là (tôi đoán là nó có cái gì đó để làm với tốc độ hoặc hỗ trợ cho distance).

Tôi hiểu một cách lỏng lẻo rằng nếu các đối số giống nhau, căn bậc hai của một sản phẩm dấu chấm bằng chiều dài của vectơ: khoảng cách đó?

Trả lời

5

Làm cơ bản giống nhau, mọi người thường chọn tùy chọn sqrt vì một trong hai lý do: 1. Họ không biết/nhớ hàm khoảng cách 2. Họ tin tưởng bản thân và toán học của riêng họ để chứng minh rằng không phải là vấn đề gây ra lỗi (tránh các sự cố OpenGL)

+0

hoạt động cho tôi. cảm ơn. – bradleygriffith

+0

Có nhanh hơn không? hoặc bạn có thể so sánh hai chu kỳ chức năng? –

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