泳池水面fresnel 的近似替代
vs
float4 ep = TBMultiply(ModelViewMatrix, FinalPosition);
DistFromEye.x = TBSaturate( 10.0 + ep.z / 10.0 );
DistFromEye.y = -ep.z;
ScaledElapsedTime.x = ElapsedTime * 0.1;
ScaledElapsedTime.y = ElapsedTime * 0.1;
float3x3 myTangentBasis = float3x3(FinalTangent, FinalBinormal, FinalNormal);
Incident = TBMultiply(TBCast(float3x3, ModelViewMatrixInverse), ep.xyz);// scaled position proj back to model space
Incident = TBMultiplyInvs(myTangentBasis, Incident);// to tangent space
ps
float3 incidentVec = -normalize(Incident);
float3 cube = TextureLookupCube(CubeMap, CubeMap_ULL, reflect(incidentVec, bumpedNormal)).xyz * ReflectionStrength;
half R0 = 0.0203;
half edotn = abs(dot(-incidentVec, bumpedNormal));
half fresnel = R0 + (1.0-R0) * pow(1.0-edotn, 5.0);//compute in tangent space
FPOutput.rgb = TBLerp(col, cube, fresnel);
////////////////
complex solution:
half currentDepth = DepthTextureLookup( RenderDepthBufferAsColour, RenderDepthBufferAsColour_ULL, screenTexCoord ).x;
currentDepth = FarPlane * NearPlane / ( currentDepth * ( NearPlane - FarPlane ) + FarPlane );
/* float2 DistFromEye; DistFromEye.x = saturate( 10.0 + ep.z / 10.0 );
DistFromEye.y = -ep.z;*/ float invClarityLength = 1.0 / ClarityLength;
float depth = TBSaturate((currentDepth - DistFromEye.y) * invClarityLength);
float kClarity = 1.0 - depth; DistFromEye.x = TBSaturate(DistFromEye.x);
float2 offsetCoord = renderBufferCopyCoords + bumpedNormal.xy * DistFromEye.x * 0.1f * depth;
泳池水面fresnel 的近似替代的更多相关文章
- 由浅入深学习PBR的原理和实现
目录 一. 前言 1.1 本文动机 1.2 PBR知识体系 1.3 本文内容及特点 二. 初阶:PBR基本认知和应用 2.1 PBR的基本介绍 2.1.1 PBR概念 2.1.2 与物理渲染的差别 2 ...
- IRLS(迭代加权最小二乘)
IRLS用于解决这种目标函数的优化问题(实际上是用2范数来近似替代p范数,特殊的如1范数). 可将其等价变形为加权的线性最小二乘问题: 其中W(t)可看成对角矩阵,每步的w可用下面的序列代替 如果 p ...
- 深入剖析iLBC的丢包补偿技术(PLC)
转自:http://blog.csdn.net/wanggp_2007/article/details/5136609 丢包补偿技术(Packet Loss Concealment——PLC)是iLB ...
- 理解SIFT
理解SIFT.tab{font-size:12px; margin-bottom: 10px;}.tab a{cursor:pointer;cursor:pointer;display:inline- ...
- 介绍一个全局最优化的方法:随机游走算法(Random Walk)
1. 关于全局最优化求解 全局最优化是一个非常复杂的问题,目前还没有一个通用的办法可以对任意复杂函数求解全局最优值.上一篇文章讲解了一个求解局部极小值的方法--梯度下降法.这种方法对于求解精度不高 ...
- Ceph: A Scalable, High-Performance Distributed File System译文
原文地址:陈晓csdn博客 http://blog.csdn.net/juvxiao/article/details/39495037 论文概况 论文名称:Ceph: A Scalable, High ...
- Boosting(提升方法)之GBDT
一.GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree).GBDT(Gradient Boosting ...
- 游戏AI之路径规划(3)
目录 使用路径点(Way Point)作为节点 洪水填充算法创建路径点 使用导航网(Navigation Mesh)作为节点 区域分割 预计算 路径查询表 路径成本查询表 寻路的改进 平均帧运算 路径 ...
- Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持
下面开始添加国产卫星光谱响应的支持: 以下主要参考文章“6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/art ...
随机推荐
- 静态编译zsummerX
下载 https://github.com/zsummer/zsummerX 下载 http://ftp.gnu.org/gnu/glibc/ ../configure --prefix=/home/ ...
- NetScaler的cookieinsert和sourceip联合保持机制
NetScaler的cookieinsert和sourceip联合保持机制 使用NetScaler的cookieinsert和sourceip联合进行session保持机制即主用cookieinser ...
- [GDOI2016] 疯狂动物园 [树链剖分+可持久化线段树]
题面 太长了,而且解释的不清楚,我来给个简化版的题意: 给定一棵$n$个点的数,每个点有点权,你需要实现以下$m$个操作 操作1,把$x$到$y$的路径上的所有点的权值都加上$delta$,并且更新一 ...
- BZOJ3236 [Ahoi2013]作业 【莫队 + 树状数组】
题目链接 BZOJ3236 题解 没想到这题真的是如此暴力 #include<algorithm> #include<iostream> #include<cstring ...
- 启动、停止、删除Windows服务
启动: @echo.服务启动...... @echo off @sc create Service_SMS binPath= "D:\公司制度等文件\项目\河北劳动力市场检测系统\Windo ...
- zjoi2018day1 游记
3.18 这一天乘车来到衢州,这已经是第四次了,来衢州二中考过两次普及,一次提高,都不是特别好. 到了以后先去了宾馆,是在帝京,和NOIP一样的酒店,连房间都是隔壁,然后一进去就连上了隔壁的WIFI ...
- Eclipse Tomcat 配置问题
问题描述: Tomcat能启动,ecplise的Console无报错,但是打开http://localhost:8080/报404错误 端口是8080没错,地址也没错,重启了tomcat还是报错,但是 ...
- DataTable转换为实体集合
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- (转)MSI - Enable MSI Logging
转自: http://www.cnblogs.com/atempcode/archive/2007/04/10/707917.html 安装MSI安装包的时候, 有时会遇到错误, 这时LOG文件就非常 ...
- centos6.x一键15项系统优化(转自努力哥)
#!/bin/sh ################################################ #Author:nulige # qqinfo: # Date: -- #vers ...