Coder Social home page Coder Social logo

byshenhang / bakeshader Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cyanilux/bakeshader

0.0 0.0 0.0 25 KB

Unity编辑器工具烘烤着色到纹理。Texture2D, Texture3D, Flipbook,或MeshRenderer(使用模型UV)

License: MIT License

C# 100.00%

bakeshader's Introduction

BakeShader

Bake

  • Adds "Bake Shader" window (under Window/Cyanilux/BakeShader)
    • Includes modes : Texture2D (png), Texture3D asset, Flipbook, MeshRenderer
  • Also adds "Bake" options to the "..." context menus on Material asset and MeshRenderer component
    • (If BakeShader window is open, this will use resolution & path settings set there, otherwise uses defaults mentioned below)
  • Should work in any render pipeline!
  • By default, results are saved under Assets/BakedTextures

Setup:

  • Install via Package Manager → Add package via git URL :
    • https://github.com/Cyanilux/BakeShader.git
  • Alternatively, download and put the folder in your Assets

Bake Modes :

  • Texture2D (png)
    • Shader is blit (basically draws a quad)
    • Result saved as .png
    • Defaults to 2048x2048 size
  • Texture3D
    • Shader is blit in slices. Use _Slice Float property in shader calculations. This ranges from 0 to 1 through the depth of the Texture3D
    • Result saved as Texture3D asset
    • Defaults to 128x128x128 size
  • Flipbook
    • Same as Texture3D, but slices are combined vertically into a long Texture2D
    • Result saved as .png, this could then be imported as a regular texture (for usage with Flipbook node later) or as a 2D Array, or 3D Texture.
    • Defaults to 256x256 size (per slice), 32 slices, (so final image size of 256x8192)
  • MeshRenderer : Renderer is drawn to Texture2D
    • Will bake using first Material only. Scene View must be open for Renderer baking to occur
    • Defaults to 2048x2048 size
    • For the intended result, shader should be unlit and output using UV coordinates instead of vertices :
      • For Shader Graphs, use the provided Bake Shader Vertex Pos subgraph in the Position port on the Vertex stack. Also use Render Face : Both in graph settings.
      • Note that using the Position node in Fragment stage will now produce different results, as this changes the vertex positions. In v12+ we can avoid this by using a Custom Interpolator to pass the unmodified vertex pos through, if required. See : https://www.cyanilux.com/tutorials/intro-to-shader-graph/#custom-interpolators
      • For Shader Code (CG/HLSL), the following should work (though some variables may need renaming). The pass should also specify Cull Off
#pragma multi_compile _ _BAKESHADER

// in vertex function :
#ifdef _BAKESHADER
    float2 remappedUV = IN.uv.xy * 2 - 1;
    float3 bakeShaderPos = float3(remappedUV.x, remappedUV.y, 0);
#else
    float3 bakeShaderPos = IN.vertex;
#endif

OUT.vertex = UnityObjectToClipPos(bakeShaderPos); // Built-in RP
OUT.positionCS = TransformObjectToHClip(bakeShaderPos); // URP

bakeshader's People

Contributors

cyanilux avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.