当前位置: 首页 > news >正文

SDF函数

// 返回 (t_near, t_far),无交点时 t_near < 0 vec2 intersect_sphere(vec3 ro, vec3 rd, vec3 center, float radius) { vec3 oc = ro - center; float a = dot(rd, rd); float b = 2.0 * dot(oc, rd); float c = dot(oc, oc) - radius * radius; float discriminant = b * b - 4.0 * a * c; if (discriminant < 0.0) { return vec2(-1.0, -1.0); } float sqrt_d = sqrt(discriminant); float inv_2a = 1.0 / (2.0 * a); return vec2( (-b - sqrt_d) * inv_2a, (-b + sqrt_d) * inv_2a ); }

在进行射线求交,绘制球体的时候,需要注意的点:

1.高光算出之后,可以模拟金属度,特别高的话会接近金属,所以需要乘以一个小数。

2.高光算出之后,还需要乘以一个【光的颜色】,一般用vec3(1.0),而不是去乘以本身的值,不然会高光特别暗。

3.算出漫反射光系数后,需要考虑,物体本身的环境光,和漫反射光的比例。可以用mix联系起来。这个环境光可以保证——没有被照到的地方也是可以看到一点东西的,这更真实。

4.uv要记得-0.5,*2.

5.uv.y要倒转

6.uv.x要乘以分辨率(x/y)

7.简单制作射线的话,可以直接是normalize(vec3(uv.x,uv.y,-1(或者1))

8.根据碰撞的点,可以算出Normal。(点-圆心)

9.根据normal和light,可以得到漫反射系数。

10.view的计算方法是,从碰撞的点-减去相机的点。Normaliaze一下。

11.blinn_phong的算法是.h=normalize(view,light),pow(max(0,dot(normal,h),64)

http://www.jsqmd.com/news/1171018/

相关文章:

  • 基于鸿蒙平台的AI星座匹配应用开发实践:从移动端到鸿蒙PC的全场景解决方案
  • League Akari:英雄联盟玩家的终极本地化效率工具
  • 北京超算 YOLOv5 实战:从 2080Ti 本地 6 小时到超算 1 卡 3 步提交
  • 5G AAU 设备参数深度解析:从 64T64R 到 1100W 功耗的 5 个设计考量
  • 广州北京路美陈:1核心2策略,揭秘客流翻倍200%秘密-肆墨设计
  • 指令失效?响应失准?ChatGPT自定义指令配置错误率高达63%——你还在用默认模板吗?
  • 是什么把工作流(workflow)和智能体(agent)区分开来?
  • 【共创季稿事节】毕业季·鸿蒙同行:我用鸿蒙做毕设,也做了一个帮毕业生做毕设的鸿蒙应用
  • 1987年5月17日下午13-15点出生性格、运势和命运
  • 智能车竞赛国赛名单背后的技术赛道:从四轮到AI视觉,9大赛题技术趋势盘点
  • TMC7300与PIC18LF45K42实现高效BDC电机控制方案
  • ChatGPT写K8s YAML配置失效真相(YAML缩进陷阱与锚点引用黑洞)
  • 欠定方程组最小范数解:从几何投影到 Moore-Penrose 伪逆的 2 种推导与联系
  • Picsum 与 Unsplash 等3款图片API对比:免费额度、响应速度与适用场景实测
  • 免费额度用完后多花372%?DeepSeek API隐性计费陷阱,工程师必须立刻自查
  • 数学符号 ≈、≃、≅ 辨析:3个场景下的精确含义与常见误用
  • C++移动赋值运算符:从原理到实战的高性能编程指南
  • 如何高效获取国家中小学智慧教育平台电子课本PDF?智能下载工具全攻略
  • DynVLA:面向自动驾驶的动态视觉语言推理框架
  • Generative Pre‑trained Transformer(GPT)
  • PL/0 语言扩充对比:3 种循环结构(while/do-until/for)的语法设计与实现差异
  • 基于SpringBoot的高校自习室预约系统
  • go: Floyd-Warshall Algorithms
  • (干货整理)亲测好用的AI论文网站,毕业生收藏备用
  • VMware Workstation 17 Pro 配置 Windows 10 虚拟机:3个关键参数优化与性能实测
  • 角色生成器character-builder
  • 如何高效使用WebToEpub:网页转电子书的完整秘籍
  • EM3080-W与TM4C129EKCPDT在工业条码识别中的硬件与固件设计
  • ServiceExtensionAbility 实战:服务扩展生命周期与请求处理
  • FFmpeg 7.0 源码编译安装:Ubuntu 22.04 3步配置与动态库ldconfig详解