[gdc]Rendering ‘God of War Ragnark‘

news2024/11/25 0:24:16

在这里插入图片描述
gdc23, sony santa monica关于god of war的分享;

back ground

  • 作者stephen mcauley现在是santa monica的technical director;
  • 20年加入santa monica,作为rendering lead,有9年的经验,之前在ubisoft montreal,做farcry系列,所以提到的一些技术带有一些farcry的痕迹;

开发思路 & team

因为定位是rendering lead,所以本质上非技术的沟通工作占据比较多的位置;
stephen加入的时候,会做非常多的沟通,以及查阅之前任务的todo list来获取之前没有完成的事情等等;
同时自我定位也比较清晰,定位技术团队为棒球比赛中的击球手,是一个辅助和强化的作用,但是不是design和artist这种能直接取得胜利的角色;
所以要花很多时间来开发workflow,让content creator能够比较快速的开发;
当然在后期也开始注意到,也要让程序团队能够有一个好的流程;

技术

一个物理正确的框架

上来stephen惊奇的发现,光照亮度等等方面没有“正规化”,会有比较多的美术随意设置的情况;
太阳光设置使用十几这种情况,hmmm,战神也会出现这种情况;

这个实际做起来就是按照正确的物理方式处理就好了:

  • 太阳光按照实际的物理数值
  • 天光和天空球亮度绑定
  • 有一个标准的默认曝光以及tonemapping方法(ACES)

不这么做就在不同阶段有这样或者那样的问题,战神这里就是踩到了其中若干问题:

  • 缺乏一个标准的“base lighting”,大家通过比较随意的lighting数值,各方面彼此再配合,小范围没问题,内容多了的时候,就会出现physically based lighting启用阶段,美术团队不按照物理正确方式使用情况下的问题;
    简言之是做了物理正确的lighting基础,细节可以看frostbite的PBR的文章,写的更加详细;

ray tracing cubemap

在反射中,从parallax corrected cubemap替换成raytraced cubemap:
在这里插入图片描述

  • 这里会使用houdini来生成一些geometry mesh来降低trace ray的消耗:
    在这里插入图片描述
    这里只能说是一种做法,stephen自己也说他们对于raytracing不是很熟悉,所以这里不能简单作为一种牛逼的或者最优的方案来看,实际行业中的一些proxy mesh(lumen中的方案),voxel等都可以采用;

harden contact shadow(ray marching)

正常我们会使用screen space技术来做contact shadow来达到细节精准的shadow;
战神中对于contact shadow的需求:
在这里插入图片描述
这里奎爷的鼻子这里就是有点不对,这个处理方式就是contact shadow

e.g.
在这里插入图片描述
在这里插入图片描述

战神这里使用了较好的办法:

  • 在shadow depth中使用ray marching的方法来做contact shadow;
  • 且可以针对area light来做
    这样在精准度等方面都有很好的提升,而且范围覆盖方面更大,效率可控,目前看来效果比较好:
    效果对比:
    在这里插入图片描述
    (without contact shadow)
    在这里插入图片描述
    (with contact shadow,可以两个图切换下看区别,细节可以看弓在atreus身上的投影)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/873340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[鹤城杯 2021]Middle magic 解题思路过程

过程 打开题目&#xff0c;是一道PHP的代码审计。代码如下&#xff1a; <?php highlight_file(__FILE__); include "./flag.php"; include "./result.php"; if(isset($_GET[aaa]) && strlen($_GET[aaa]) < 20){$aaa preg_replace(/^(.*)…

河道水位自动监测预警 yolov5

河道水位自动监测预警系统基于yolov5网络模型AI视频智能水尺读数技术&#xff0c;河道水位自动监测预警系统通过在河道周边布设监控摄像头&#xff0c;实时监测水位的变化&#xff0c;一旦水位超过预设阈值&#xff0c;将自动发出预警信号&#xff0c;并提示相关人员采取相应的…

计算机网络-物理层(一)物理层的概念与传输媒体

计算机网络-物理层&#xff08;一&#xff09;物理层的概念与传输媒体 物理层相关概念 物理层的作用用来解决在各种传输媒体上传输比特0和1的问题&#xff0c;进而为数据链路层提供透明(看不见)传输比特流的服务物理层为数据链路层屏蔽了各种传输媒体的差异&#xff0c;使数据…

Java 基础知识点

Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象&#xff0c; 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝&#xff0c;对引用类型拷贝引用&#xff1b;深拷贝对基本类型进行值拷贝&#xff0c;对…

CentOS7.7.1908升级python3版本

介绍 本文将详细介绍在CentOS7.7.1908系统的服务器将自带的python版本升级到3.8.0版本的过程。 在升级前CentOS7.7.1908中已经存在旧python版本。 查看CentOS版本命令&#xff1a; cat /etc/centos-release升级前后的python版本&#xff08;python3升级前为3.6.8&#xff09…

开箱报告,Simulink Toolbox库模块使用指南(三)——Simscape 电路仿真模块

文章目录 前言 Simscape 电路仿真模块 模型搭建 仿真求解 分析和应用 总结 前言 见《开箱报告&#xff0c;Simulink Toolbox库模块使用指南&#xff08;一&#xff09;——powergui模块》 见《开箱报告&#xff0c;Simulink Toolbox库模块使用指南&#xff08;二&#xf…

grafana中利用变量来添加dashboard详情页地址实现点击跳转

背景 最近弄grafana的dashboard,突然想到各个dashboard之前可以直接跳转到不同详细页面的面板,于是找了找实现方法 实现 以stat 格式的面板为例,显示出各个pod的对应状态, PromQL是(avg(kube_pod_status_phase{phase"Running", namespace!"kube-system"…

用友U8+CRM 任意文件上传+读取漏洞复现(HW0day)

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件&#xff0c;旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 getemaildata.php 文件存在任意文件上传和任意文件读取漏洞&#xff0c;攻击…

缓存 基础

在项目里面缓存是怎么用的? 项目中缓存是如何使用的&#xff1f;为什么要用缓存&#xff1f;缓存使用不当会造成什么后果? 这个问题&#xff0c;互联网公司必问&#xff0c;要是一个人连缓存都不太清楚&#xff0c;那确实比较尴尬。 只要问到缓存&#xff0c;上来第一个问题…

大数据课程I4——Kafka的零拷贝技术

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的零拷贝技术&#xff1b; ⚪ 了解常规的文件传输过程&#xff1b; 一、常规的网络传输原理 表面上一个很简单的网络文件输出的过程&#xff0c;在OS底层&…

leetcode 力扣刷题 滑动窗口 部分题解(记录)

力扣刷题 滑动窗口相关的部分题解 209. 长度最小的子数组904. 水果成篮76. 最小覆盖子串 209. 长度最小的子数组 leetcode题目链接 209.长度最小的子数组 题目内容是这样的&#xff1a;给定一个含有 n个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的…

不同路径 II——力扣63

class Solution {public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int n=

Java中处理表格

大家好 , 我是苏麟 , 也是很久没有更新了 , 今天带来一个很好使用的一个库 easyexcel. JAVA后端开发中可能会遇到一个问题 , 就是处理Execel表格 , 当然不一定非要用Java 我们在这里只说在Java里怎么去处理表格 . Easy Excel 我们今天要说到就是 Easy Excel , 这个是阿里的项…

学习笔记整理-JS-01-语法与变量

文章目录 一、语法与变量1. 初识JavaScript2. JavaScript的历史3. JavaScript与ECMAScript的关系4. JavaScript的体系5. JavaScript的语言风格和特性 二、语法1. JavaScript的书写位置2. 认识输出语句3. REPL环境&#xff0c;交互式解析器4. 变量是什么5. 重点内容 一、语法与变…

无涯教程-Perl - redo函数

描述 此函数将重新启动当前循环,而不会强制判断控制语句。块中不再执行任何语句。如果存在继续块,将不会执行。如果指定了LABEL,则在LABEL标识的循环开始时重新开始执行。 语法 以下是此函数的简单语法- redo LABELredo返回值 此函数不返回任何值。 例 以下是显示其基本…

J35复杂链表的复制

题目地址&#xff1a;复杂链表的复制_牛客题霸_牛客网 题目回顾&#xff1a; 解题思路&#xff1a; 这里我们采用双指针的方法。 我们在创建节点的时候&#xff0c;可能当前节点创建了&#xff0c;但是当前节点的随机指针指向的节点还没创建&#xff0c;这种情况下&#xff…

【python】-【】

文章目录 转义字符和原字符二进制与字符编码标识符和保留字变量的定义和使用变量字符串列表for 一、print会输出①数字②字符串&#xff08;必须加引号&#xff09;③含有运算符的表达式&#xff08;例如 31 其中3&#xff0c;1是操作数&#xff0c;是运算符&#xff09;&#…

zabbix监控mysql数据库、nginx、Tomcat

文章目录 一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署&#xff08;192.168.198.17&#xff09;3.zabbix-mysql安装部署&#xff08;192.168.198.15&#xff09;3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通性&#xff08;192.168.198.17&#x…

使用script标签解决跨域问题,但是只能使用get请求,且不需要获取get请求的数据,例如埋点,只需要触发后发送get请求,而不需要获取返回的参数

在项目中&#xff0c;使用埋点的时候&#xff0c;因为使用的是外部提供的接口&#xff0c;所以直接请求的时候&#xff0c;前端会报跨域的问题&#xff0c;本着不麻烦后端的想法&#xff0c;怎怎么前端实现跨域而完全不需要后段的配合&#xff0c;这时候就想到了通过script标签…

Steam搬砖项目

最近分享了不少关于Steam搬砖项目的文章&#xff0c;但是也有一部分人说&#xff0c;项目不知道如何赚钱的。 今天这篇文章&#xff0c;就分享一下&#xff0c;对于Steam游戏搬砖项目&#xff0c;他是靠什么来挣钱的。 那讲解之前&#xff0c;先回复一下&#xff0c;另外一个问…