ฟังก์ชันคณิตศาสตร์เวกเตอร์ของ RenderScript

ภาพรวม

ฟังก์ชันเหล่านี้จะตีความอาร์กิวเมนต์อินพุตเป็นการนำเสนอเวกเตอร์ในปริภูมิ n มิติ

ความแม่นยำของการดำเนินการทางคณิตศาสตร์กับตัวเลขทศนิยม 32 บิตจะได้รับผลกระทบจากพรอมต์ rs_fp_relaxed และ rs_fp_full ดูรายละเอียดได้ที่ค่าคงที่และฟังก์ชันทางคณิตศาสตร์

คุณสามารถปรับสมดุลความแม่นยำ/ความเร็วได้โดยใช้ตัวแปรของฟังก์ชันคณิตศาสตร์ทั่วไป ฟังก์ชันที่มีชื่อขึ้นต้นด้วย

  • native_: อาจมีการนําฮาร์ดแวร์ที่กำหนดเองมาใช้ซึ่งมีความแม่นยำน้อยกว่า นอกจากนี้ ระบบอาจปัดค่าที่ต่ำกว่าปกติเป็น 0, ใช้การปัดทศนิยมลง และอาจจัดการอินพุต NaN และอินพุต Infinity อย่างไม่ถูกต้อง
  • fast_: อาจทําการคํานวณภายในโดยใช้ตัวเลขทศนิยม 16 บิต นอกจากนี้ ระบบอาจปัดค่าที่ต่ำกว่าปกติเป็น 0 และอาจปัดเศษให้ใกล้กับ 0

สรุป

ฟังก์ชัน
cross ผลคูณไขว้ของ 2 เวกเตอร์
distance ระยะทางระหว่าง 2 จุด
dot ผลคูณเวกเตอร์ของ 2 เวกเตอร์
fast_distance ระยะทางโดยประมาณระหว่าง 2 จุด
fast_length ความยาวโดยประมาณของเวกเตอร์
fast_normalize เวกเตอร์ที่ปรับให้เป็นมาตรฐานโดยประมาณ
length ความยาวของเวกเตอร์
native_distance ระยะทางโดยประมาณระหว่าง 2 จุด
native_length ความยาวโดยประมาณของเวกเตอร์
native_normalize ทำให้เวกเตอร์เป็นปกติโดยประมาณ
normalize ปรับเวกเตอร์ให้เป็นมาตรฐาน

ฟังก์ชัน

cross : ผลคูณไขว้ของ 2 เวกเตอร์

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
half3 cross(half3 left_vector, half3 right_vector); เพิ่มใน API ระดับ 24
half4 cross(half4 left_vector, half4 right_vector); เพิ่มใน API ระดับ 24

คำนวณผลคูณไขว้ของ 2 เวกเตอร์

distance : ระยะทางระหว่าง 2 จุด

float distance(float left_vector, float right_vector);
float distance(float2 left_vector, float2 right_vector);
float distance(float3 left_vector, float3 right_vector);
float distance(float4 left_vector, float4 right_vector);
half distance(half left_vector, half right_vector); เพิ่มใน API ระดับ 24
half distance(half2 left_vector, half2 right_vector); เพิ่มใน API ระดับ 24
half distance(half3 left_vector, half3 right_vector); เพิ่มใน API ระดับ 24
half distance(half4 left_vector, half4 right_vector); เพิ่มใน API ระดับ 24

คำนวณระยะทางระหว่าง 2 จุด

ดูข้อมูลเพิ่มเติมได้ที่ fast_distance(), native_distance()

dot : ผลคูณจุดของเวกเตอร์ 2 รายการ

float dot(float left_vector, float right_vector);
float dot(float2 left_vector, float2 right_vector);
float dot(float3 left_vector, float3 right_vector);
float dot(float4 left_vector, float4 right_vector);
half dot(half left_vector, half right_vector); เพิ่มใน API ระดับ 24
half dot(half2 left_vector, half2 right_vector); เพิ่มใน API ระดับ 24
half dot(half3 left_vector, half3 right_vector); เพิ่มใน API ระดับ 24
half dot(half4 left_vector, half4 right_vector); เพิ่มใน API ระดับ 24

คำนวณผลคูณเวกเตอร์ของ 2 เวกเตอร์

fast_distance : ระยะทางโดยประมาณระหว่าง 2 จุด

float fast_distance(float left_vector, float right_vector); เพิ่มใน API ระดับ 17
float fast_distance(float2 left_vector, float2 right_vector); เพิ่มใน API ระดับ 17
float fast_distance(float3 left_vector, float3 right_vector); เพิ่มใน API ระดับ 17
float fast_distance(float4 left_vector, float4 right_vector); เพิ่มใน API ระดับ 17

คํานวณระยะทางโดยประมาณระหว่าง 2 จุด

ความแม่นยำคือสิ่งที่คาดหวังได้จากการทําการคํานวณโดยใช้ค่าจุดลอยตัว 16 บิต

ดูข้อมูลเพิ่มเติมได้ที่ distance(), native_distance()

fast_length : ความยาวโดยประมาณของเวกเตอร์

float fast_length(float v); เพิ่มใน API ระดับ 17
float fast_length(float2 v); เพิ่มใน API ระดับ 17
float fast_length(float3 v); เพิ่มใน API ระดับ 17
float fast_length(float4 v); เพิ่มใน API ระดับ 17

คำนวณความยาวโดยประมาณของเวกเตอร์

ความแม่นยำคือสิ่งที่คาดหวังได้จากการทําการคํานวณโดยใช้ค่าจุดลอยตัว 16 บิต

โปรดดู length(), native_length() ด้วย

fast_normalize : เวกเตอร์ที่ปรับให้เป็นมาตรฐานโดยประมาณ

float fast_normalize(float v); เพิ่มใน API ระดับ 17
float2 fast_normalize(float2 v); เพิ่มใน API ระดับ 17
float3 fast_normalize(float3 v); เพิ่มใน API ระดับ 17
float4 fast_normalize(float4 v); เพิ่มใน API ระดับ 17

ปรับเวกเตอร์ให้เป็นมาตรฐานโดยประมาณ

สำหรับเวกเตอร์ขนาด 1 จะแสดงผล -1.f สำหรับค่าติดลบ, 0.f สำหรับค่า Null และ 1.f สำหรับค่าบวก

ความแม่นยำคือสิ่งที่คาดหวังได้จากการทําการคํานวณโดยใช้ค่าจุดลอยตัว 16 บิต

โปรดดู normalize(), native_normalize() ด้วย

length : ความยาวของเวกเตอร์

float length(float v);
float length(float2 v);
float length(float3 v);
float length(float4 v);
half length(half v); เพิ่มใน API ระดับ 24
half length(half2 v); เพิ่มใน API ระดับ 24
half length(half3 v); เพิ่มใน API ระดับ 24
half length(half4 v); เพิ่มใน API ระดับ 24

คำนวณความยาวของเวกเตอร์

ดูข้อมูลเพิ่มเติมได้ที่ fast_length(), native_length()

native_distance : ระยะทางโดยประมาณระหว่าง 2 จุด

float native_distance(float left_vector, float right_vector); เพิ่มใน API ระดับ 21
float native_distance(float2 left_vector, float2 right_vector); เพิ่มใน API ระดับ 21
float native_distance(float3 left_vector, float3 right_vector); เพิ่มใน API ระดับ 21
float native_distance(float4 left_vector, float4 right_vector); เพิ่มใน API ระดับ 21
half native_distance(half left_vector, half right_vector); เพิ่มใน API ระดับ 24
half native_distance(half2 left_vector, half2 right_vector); เพิ่มใน API ระดับ 24
half native_distance(half3 left_vector, half3 right_vector); เพิ่มใน API ระดับ 24
half native_distance(half4 left_vector, half4 right_vector); เพิ่มใน API ระดับ 24

คํานวณระยะทางโดยประมาณระหว่าง 2 จุด

ดูข้อมูลเพิ่มเติมได้ที่ distance(), fast_distance()

native_length : ความยาวโดยประมาณของเวกเตอร์

float native_length(float v); เพิ่มใน API ระดับ 21
float native_length(float2 v); เพิ่มใน API ระดับ 21
float native_length(float3 v); เพิ่มใน API ระดับ 21
float native_length(float4 v); เพิ่มใน API ระดับ 21
half native_length(half v); เพิ่มใน API ระดับ 24
half native_length(half2 v); เพิ่มใน API ระดับ 24
half native_length(half3 v); เพิ่มใน API ระดับ 24
half native_length(half4 v); เพิ่มใน API ระดับ 24

คํานวณความยาวโดยประมาณของเวกเตอร์

โปรดดู length(), fast_length() ด้วย

native_normalize : ปรับค่าเวกเตอร์ให้ใกล้เคียงกับค่าเฉลี่ย

float native_normalize(float v); เพิ่มใน API ระดับ 21
float2 native_normalize(float2 v); เพิ่มใน API ระดับ 21
float3 native_normalize(float3 v); เพิ่มใน API ระดับ 21
float4 native_normalize(float4 v); เพิ่มใน API ระดับ 21
half native_normalize(half v); เพิ่มใน API ระดับ 24
half2 native_normalize(half2 v); เพิ่มใน API ระดับ 24
half3 native_normalize(half3 v); เพิ่มใน API ระดับ 24
half4 native_normalize(half4 v); เพิ่มใน API ระดับ 24

ปรับเวกเตอร์ให้เป็นมาตรฐานโดยประมาณ

ดูnormalize(), fast_normalize() ด้วย

normalize : ปรับให้เป็นมาตรฐานสำหรับเวกเตอร์

float normalize(float v);
float2 normalize(float2 v);
float3 normalize(float3 v);
float4 normalize(float4 v);
half normalize(half v); เพิ่มใน API ระดับ 24
half2 normalize(half2 v); เพิ่มใน API ระดับ 24
half3 normalize(half3 v); เพิ่มใน API ระดับ 24
half4 normalize(half4 v); เพิ่มใน API ระดับ 24

ทำให้เวกเตอร์เป็นมาตรฐาน

สำหรับเวกเตอร์ขนาด 1 จะแสดงผล -1.f สำหรับค่าติดลบ, 0.f สำหรับค่า Null และ 1.f สำหรับค่าบวก

ดูข้อมูลเพิ่มเติมได้ที่ fast_normalize(), native_normalize()