Physically Based Shader Development for Unity 2017 Develop Custom Lighting Systems

Part I: Introduction to Shaders In Unity

Chapter 1: How Shader Development Works

Chapter 2: Your First Unity Shader

Chapter 3: The Graphics Pipeline

Chapter 4: Transforming Coordinate Spaces

Chapter 5: Your First Unity Lighting Shader

Chapter 6: Specular Implementation

Chapter 7: Surface Shaders

Part II: Physically Based Shading

Chapter 8: What Is Physically Based Shading?

Chapter 9: Making a Shader Physically Based

Chapter 10: Post-Processing Effects

Chapter 11: BRDFs Who‘s Who

Chapter 12: Implementing a BRDF

Chapter 13: Hooking Into the Standard Shader

Chapter 14: Implementing Advanced Techniques

Part III: Shader Development Advice

Chapter 15: Making Shaders Artists Will Use

Chapter 16: Complexity and Ubershaders

Chapter 17: When Shading Goes Wrong

Chapter 18: Keeping Up with the Industry

Chapter 1: How Shader Development Works

  What Is a Shader?

    Shaders as Light Simulations

    Rendering as Perspective Drawing

    Rendering Process

    Shaders as Code Running on GPUs

    Shader Execution

    Different Types of Shaders

    Coordinate Systems

    Types of Light

  The Rendering Equation

    The Behavior of Light

    Renderer Type

    Shader Visual Graphs

  Summary

  Next

Chapter 2: Your First Unity Shader

  Introduction to Unity

    Set Up

    Unity UI

    Make Your First Scene

    Shader Editing

  Shader Editing

    From White to Red

    Adding Properties

  Summary

  Next

Chapter 3: The Graphics Pipeline

  Why Learn the Basics of Graphics APIs

  A General Structure of the Graphics Pipeline

  The Rasterizer

  The Structure of an Unlit Shader

  Vertex Data Structure

  Vertex Function

  Fragment Data Structure

  Fragment Function

  Adding Vertex Colors Support

    Appdata Additions

    v2f Additions

    Assign the Color in the Vertex Function

    Use the Color in the Fragment Function

    Final Result

  Summary

  Next

Chapter 4: Transforming Coordinate Spaces

  Coordinate Spaces Who‘s Who

    Object Space

    World Space

    Transformation Between Spaces

    Camera Space

    Clip Space

    Normalized Device Coordinates

    Screen Space

  Underneath Built-In Functions

  Where to Find the Shader "Standard Library" Code

  Summary

  Next     

Chapter 5: Your First Unity Lighting Shader

  Lighting Shaders

    What Is an Approximation

    Diffuse Approximation

    Specular Approximation

    Diffuse and Specular Combined

  Calculating Basic Lighting

    Diffuse

  Your First Lighting Unity Shader

    Implementing a Diffuse Term

    Adding a Texture Property

    Adding an Ambient Value

  Summary

  Next

Chapter 6: Specular Implementation

  Calculating Basic Lighting (Part II)

    Specular

    Your First Lighting Unity Shader (Part II)

  Supporting More Than One Light

  Summary

  Next

Chapter 7: Surface Shaders

  What Is a Surface Shader?

    The Default Surface Shader

    Pragmas

    New Data Structure

    The Surface Function

    What‘s a Lighting Model?

    Data Flow of a Surface Shader

  Editing a Surface Shader

    Add a Second Albedo Map

    Add a Normal Map

    Making Sure Shadow Work

    Use Different Built-In Lighting Models

  Writing a Custom Lighting Model

    Lighting Model Function Signatures

    The SurfaceOutput Data Structure

    The Surface Function

    Properties Block

    The Custom Lighting Function

  Summary

  Next

Chapter 8: What Is Physically Based Shading?

  Light Is an Electromagnetic Wave

  Microfacet Theory Overview

  Refraction and Other Beats

  Fresnel Reflectance

  How to Measure Light

    Solid Angle

    Power

    Irradiance

    Radiance

  How to Represent a Material

    Bidirectional Reflectance Distribution Function (BRDF)

    Microfacet Theory

  The Rendering Equation (Part II)

  Hacks Real-Time Rendering Needs

  HDR and Tone Mapping

  Linear Color Space

  Why Is Physically Based Shading Useful?

  Summary

  Next

Chapter 9: Making a Shader Physically Based

  Analyzing Phong

    Checking for Positivity

    Checking for Reciprocity

    Checking for Energy Conservation

  The Modified Phong

  Summary

  Next

Chapter 10: Post-Processing Effects

  How Post-Processing Effects Work

  Why Post-Processing Effects Are Useful

  Setting Up a Post Effect

    HDR and Linear Setup

    Script Setup

  Conversion to Linear

  RenderTextures Brief Overview

  A Simple Tone Mapper

  Post-Processing Stack v1

  Post-Processing Stack v2

  Summary

  Next

Chapter 11: BRDFs Who‘s Who

  BRDF Explorer

  BRDF Parameterizations

  Reading BRDF Explorer‘s Output

    Phong

    MERL Database

    Comparing BRDFs

    An Incomplete List of BRDFs Used in Real-Time Rendering

  Summary

  Next

Chapter 12: Implementing a BRDF

  Which BRDF to Implement?

  Finding References

    CookTorrance

    Disney

  Starting from the Paper

    CookTorrance (or Microfacet) BRDF

    Disney BRDF

  Implementation

    Properties

    Custom Light Function Implementation

    Utility Functions

    CookTorrance Implementation

    Disney Diffuse

    Another Implementation of the Disney Diffuse

    Putting It All Together

  Summary

  Next

Chapter 13: Hooking Into the Standard Shader

Chapter 14: Implementing Advanced Techniques

Chapter 15: Making Shaders Artists Will Use

Chapter 16: Complexity and Ubershaders

Chapter 17: When Shading Goes Wrong

Chapter 18: Keeping Up with the Industry

原文地址:https://www.cnblogs.com/revoid/p/11988528.html

时间: 2024-11-09 11:25:52

Physically Based Shader Development for Unity 2017 Develop Custom Lighting Systems的相关文章

【转】【shader面板】Shader Compilation in Unity 4.5

[原文]Shader Compilation in Unity 4.5 A story in several parts. 1) how shader compilation is done in upcoming Unity 4.5; and 2) how it was developed. First one is probably interesting to Unity users; whereas second one for the ones curious onhow we wor

解读Unity中的CG编写Shader系列四——unity中的圆角矩形shader

上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader 好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩阵的知识掌握已经悉数还给老师,所以一开始用了一些笨办法计算圆角矩形区域. 我们知道TEXTCOORD0是一个以对象为坐标系的坐标,并且范围在该坐标的第一象限,取值为(0,0)到(1,1) 那么我们把每一张图片都看做一张1X1大小的矩形 我们要在1X1大小的矩形中擦除4个角,应该是这样: 以左上角

Unity Shader——Writing Surface Shaders(2)——Custom Lighting models in Surface Shaders

Surface Shader中的自定义光照模型 当你在编写 Surface Shaders 时,是在描述一个表面的属性(反射颜色.法线……),而且光的交互过程是由一个光照模型来计算的.内建的光照模型有Lambert(漫反射光照)和BlinnPhong(镜面光照). 有时候,你可能想要使用一个自定义的光照模型,这在Surface Shader中是可能的.光照模型其实就是一些满足某些约定的Cg/HLSL函数.Unity内建的光照模型Lambert和BlinnPhong定义在Lighting.cgin

第一阶段:基础 4-Unity中的C#编程 - 零基础(Unity 2017)

4-Unity中的C#编程 - 零基础(Unity 2017) print只能在组件里面输出.==>继承了MonoBehaviour的脚本才能用. Debug.Log(); Debug.LogWarning(); Debug.LogError(); 变量的定义数据和数据类型    http://www.cnblogs.com/tonney/archive/2011/03/18/1987577.html 运算符    https://wenku.baidu.com/view/93c32317a76

解读Unity中的CG编写Shader系列四??unity中的圆角矩形shader

转自 http://www.itnose.net/detail/6097625.html 上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader 好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩阵的知识掌握已经悉数还给老师,所以一开始用了一些笨办法计算圆角矩形区域. 我们知道TEXTCOORD0是一个以对象为坐标系的坐标,并且范围在该坐标的第一象限,取值为(0,0)到(1,1) 那么我们把每一张图

解读Unity中的CG编写Shader系列4——unity中的圆角矩形shader

上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,可是又非经常常使用的样例:把一张图片做成圆角矩形 例3:圆角矩形Shader 好吧我承认在做这个样例的时候走了不少弯路,因为本人对矩阵的知识掌握已经悉数还给老师,所以一開始用了一些笨办法计算圆角矩形区域. 我们知道TEXTCOORD0是一个以对象为坐标系的坐标,而且范围在该坐标的第一象限,取值为(0,0)到(1,1) 那么我们把每一张图片都看做一张1X1大小的矩形 我们要在1X1大小的矩形中擦除4个角,应该是这样: 以

Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) A

Arpa is researching the Mexican wave. There are n spectators in the stadium, labeled from 1 to n. They start the Mexican wave at time 0. At time 1, the first spectator stands. At time 2, the second spectator stands. ... At time k, the k-th spectator

Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) D

Arpa has found a list containing n numbers. He calls a list bad if and only if it is not empty and gcd (see notes section for more information) of numbers in the list is 1. Arpa can perform two types of operations: Choose a number and delete it with

【枚举】Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) Div2C题

题目大意: 平面上有N个点(N<=1000),定义一个点为好,当且仅当,由这个点为三角形的顶点,组成的所有三角形,两边的夹角都为钝角,称为好点,求好点的数目. 题目分析: 首先考虑朴素的枚举,枚举三元组<i,j,k>,以i为顶点,j , k 为两边 ,查看是否i为顶点的所有三角形,都以i所在顶点为钝角. 考虑优化: 三角形内角和是180 如果<i, j, k> 是以i为顶点的钝角/直角三角形,则 j, k 是坏点,不需要枚举. 如果<i, j, k> 是锐角,i为