原文 http://www.azure.com.cn/article.asp?id=231

用深度值近似模拟物体的厚度,
厚度越小处透光越多。

varying vec4 position;
varying vec4 world_pos;
varying vec2 texcoord0;
varying vec3 normal;

void main(void)
{
   gl_Position = ftransform();
   world_pos = gl_Position;
   position = gl_Vertex;
   texcoord0 = gl_MultiTexCoord0.st;
   normal = gl_NormalMatrix * gl_Normal;
}

varying vec4 position;
varying vec4 world_pos;
varying vec2 texcoord0;
varying vec3 normal;
uniform vec4 camera_pos;
uniform float near_clip;
uniform float ampify;
uniform vec3 singlelight;
uniform sampler2D base;
uniform vec3 lightcolor;
uniform float ks;

void main(void)
{
   float distance =( distance(camera_pos, position) - near_clip )/200.0 * ampify;
   distance = log2(distance);
   //gl_FragColor = vec4(distance, distance, distance, 1);
  
   vec4 lightpos = vec4(singlelight.x,
                        singlelight.y,
                        singlelight.z,
                        1);
   vec4 lightvec =  lightpos - position;
   normalize(lightvec);
   normalize(normal);
   float diffuse = max(0.0, dot(normal, lightvec.xyz));
   vec4 diffusecolor = vec4(diffuse*lightcolor.r, diffuse*lightcolor.g, diffuse*lightcolor.b, 1.0);

vec3 V = normalize(camera_pos - position).xyz;
   vec3 H = normalize(lightvec.xyz + V);
   float speclight = pow(max(dot(normal.xyz, H), 0.0), ks);
   vec4 specularcolor = vec4(speclight, speclight, speclight, 1.0);
   gl_FragColor = texture2D(base, texcoord0) * distance + diffusecolor + specularcolor;
   //gl_FragColor.r = distance;
  
   //gl_FragColor = diffusecolor;
}

次表面散射(SubSurface Scattering) Shader 【转】的更多相关文章

  1. Unity3d shader之次表面散射(Subsurface Scattering)

    次表面散射是一种非常常用的效果,可以用在很多材质上如皮肤,牛奶,奶油奶酪,番茄酱,土豆等等  初衷是想做一个牛奶shader的,但后来就干脆研究了sss这是在vray上的次表面散射效果 这是本文在un ...

  2. Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin

    之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time ren ...

  3. (转)GEM -次表面散射的实时近似

    次表面散射(Subsurface Scattering),简称SSS,或3S,是光射入非金属材质后在内部发生散射, 最后射出物体并进入视野中产生的现象, 即光从表面进入物体经过内部散射,然后又通过物体 ...

  4. 记录编译<Separable Subsurface Scattering demo>工程遇到的问题

    1. Separable Subsurface Scattering demo 可以从 https://github.com/iryoku/separable-sss 下载下来,但是默认的sln 是 ...

  5. Unity5 Screen-Space Subsurface Scattering屏幕空间次表面散射SSSSS

    用unity5自带的standard shader        ------------by wolf96 

  6. 由浅入深学习PBR的原理和实现

    目录 一. 前言 1.1 本文动机 1.2 PBR知识体系 1.3 本文内容及特点 二. 初阶:PBR基本认知和应用 2.1 PBR的基本介绍 2.1.1 PBR概念 2.1.2 与物理渲染的差别 2 ...

  7. 比较DirectX和OpenGL的区别(比较详细)

    OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS GL是一个工业标准的3D图形软件接口,功能虽然 ...

  8. PBR(基于物理的渲染)学习笔记

    PBR基本介绍 PBR代表基于物理的渲染,本质上还是 gl_FragColor = Emssive + Ambient + Diffuse + Specular 可能高级一些在考虑下AO也就是环境光遮 ...

  9. 菲涅尔反射(Fresnel Reflection)

    离线渲染中,通常可以用kd,ks,kt(分别代表物体的漫反射系数,镜面反射系数,透射系数)来简单地描述一个物体的基本材质,例如,我们将一个物体设置为:kd=0,ks=0.1,kt=0.9,即代表一束光 ...

随机推荐

  1. OSX 10.10安装教程。

    现在苹果已经放出了OS X 10.9 Mavericks第一个开发者预览版,从Mac App Store中获得的安装程序,可以在10.8的系统中直接进行升级,原有文件都会保留.但是要想制作成一个10. ...

  2. hdu 1527 取石子游戏(Wythoff Game)

    题意:Wythoff Game 思路:Wythoff Game #include<iostream> #include<stdio.h> #include<math.h& ...

  3. Solution multisite htaccess cleanURL

    My solution to getting Clean URL working with my multisite setup drupal 4.7 I added Alias to my http ...

  4. java读取目录下所有csv文件数据,存入三维数组并返回

    package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...

  5. 【LeetCode】198 - House Robber

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  6. ipv4头部分析,读书笔记3

    ip头部最长是60字节,前面的20字节是固定的,选项可加上40字节 4位版本号--- 对于ipv4来说呢,就是4 4位头部长度 ---  表示 有多小个32bit(4字节),4位最大表示数是15啦,也 ...

  7. enter mysql

    1, mysql -u database username -p 2, database password 3, use (database name) -> change database 4 ...

  8. 动态创建二维vector数组 C和C++ 及指针与引用的区别

    二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二 ...

  9. 关于DIV+CSS和XHTML+CSS的理解

    WEB标准是一系列标准的集合,并不是仅“DIV+CSS”布局就可以实现.以CSS网页布局只是标准的基础之一.“DIV+CSS”布局只是一种通俗的称呼罢了.而我们学习的目标在于以XHTML建立良好的语义 ...

  10. O2O在线教育平台策划方案

    一.情景需求痛点: 学生: 1.除了上课上课,就是作业作业,学习太枯燥不好玩怎么办?——我就是想要玩玩玩! 2.第二天要交作业,老师不在,在家作业不懂怎么办?——我想要随身老师! 3.噢耶,周末不用上 ...